Asymmetrical VR

Right so i wanted to break this project down as much as i can since there were quite a few steps invovled even before i started. I had to research a few games to try and get a good idea into what i wanted it to look like in the end. Some of the ideas i initally had were VR giants and DaviGo. I wanted the players to be in a versus mode so they had to fight against each other to win.

I am going to add pictures ASAP but you can see it on my show reel

One of the earliest problems i faced was that Due to the VR window being in focus while the game is being played, I wasn’t able to get inputs through to the PC player as it wasn’t being shown and only the VR screen was in focus this is the first challenge that I faced, getting the PC players screen to be shown while the VR players screen was being shown on the VR headset. This took me a while to find, but to get it to work I had to use a scene capture component in Unreal for the pc player and apply it to a texture, I then made this texture a priority when the game started this made it so that the screen would show the Pc players screen.

PC player input pass through VR

The Second Problem  I faced when working on Asymmetry was that while the VR screen was in focus the input wasn’t being passed through to the Pc Player. The way to solve this was that I had to pass input through the VR headset, so every time I wanted to have an action for example Jump on the PC player I would have to make it in the PC players class then make a reference that action on the VR player so that it would complete the action while the VR screen was in focus.

Game Idea

My Game idea is a VS game where the players have to face each other with weapons and traps to get the others health to 0.  The pc player will be on a ring platform and the vr player will be inside the ring. I would like to have cannons around the platform for the Pc player to shoot at the vr player which he will have to dodge with head movement and the armour they get given ie shields etc

Map

I started with a map in the shape of a ring with cannons separated around of the area, the goal is to stop the PC player making it around the map and firing the cannons at the VR player, the VR player is able to use their weapons to shoot to get the PC players health to 0.

Why I changed my game idea

I have decided to change the idea for my game. After a couple weeks of development, I have tried to make the game “Fun”, I use speech marks for fun because I was trying to force fun onto the player through adding more and more things to do, after a couple of weeks I realised that you cannot just add more things and expect a game to be fun for the player, some games have a plethora of content and are not fun at all and some games have a very small amount of content but players love them and can play for hours and so I releasised that my approach was wrong. The game wasn’t fun because my execution of it was wrong and so went back to the drawing board to think of a new game.

Feedback

I collected feeback at the time so that i could get an idea if i was heading in the right direction. the pluses were that the idea was fun but the mechanics felt slow because there wasnt enough going on. So i decided that i would change it up at a 2 player versus has to be very specific and something has to be constantly going on in order to keep the player intruiged as you lack other players to fill that gap. so the cons were that the gameplay felt a little slow.

2nd Game Idea

The second idea that I came up with was similar to the first in that it was asymmetrical however the difference in this would be that the players would be working together rather than opposed to each other, this was because when the two players are against each other you have to make 2 types of mechanics for both and there are two objectives in the game. So I decided on a game where the players would be working together, in this game the pc player would be driving a car with zombies chasing them and there would be traps along the road. There would also be zombies chasing them which the vr player would have to shoot from behind the car.

Level Creation

I started off with a straight road and put a few traps with some zombies chasing the players to see how it would be, initially it seems like a fun idea with a lot of potential for me to work on, I had the level start out in a green environment with trees and hills, this was where I had the majority of the traps. After this area the player would transition into a city area with streets and alleys where the zombies would come out of.

Obstacles

I had to think of new traps to add into the road. So I added some spike traps, moving traps and a hammer that would swing at the player. I also added some traps that the VR player would have to shoot to remove out of the way for the pc player while driving.

Remaking Driving System testing Different methods

There was a few problems with the standard driving system in unreal it didn’t give me full control over the settings that I wanted.

I remade the driving system a few times one that was a custom one using world offset, however I didn’t stick with this as there were too many problems, the suspension didn’t work, there was little to no Z control. But in terms of driving control It had the smoothest and responsive driving.

The Second system was a custom suspension system that I made, that used line trace to give the effect of suspension, the reason that I didn’t stick with this is that it was very barebones meaning that I would have to remake a lot of things like gears and such again with it so I decided to not go with this.

Zombies AI

I animated a zombie and used the AI move to system to get the zombie to follow the player while they were moving around this was a very basic enemy and I was using it as a starting point to progress on later on.

Bugs

Feedback

The feedback that I received for this idea was that It was better than the first one however the transition to city wasn’t good and the traps didn’t add to much of the experience. They also said that the driving felt very stiff and it wasn’t very easy to control the car. They like the idea of zombies chasing you and the VR and PC player working together to escape the zombies more than the first idea of the VR vs PC player

3rd Game Idea

After this I went back to drawing board again because I was having a similar issue to my first game idea. I was focussing on adding traps and stuff in that it was becoming crowded and not fun. Another problem I was having was that the level was limited it only lasted around 4-5 minutes which wasn’t very long.  I rethought my project and decided to go with a procedural level system that was endless.

Port Project to UE5

Initially I had thought that porting my project over to unreal 5 would be pretty easy and seamless however like the rest of my project I encountered many bugs, the first one was that the car system wasn’t working, so that was the first thing I had to get working before I could move on. Secondly I had to re set up my asymmetrical VR since my car was gone. I had to do this a few times because of the small issues along the way.

The last car system I tested was the chaos unreal system, this was by far the best, it gave me total control and had the best from all my previous tests. There were some small problems but overall it was the best car system to work on. However the biggest problem was that it would not work in UE4 for me. Which led me onto my next task.

Procedural Level

I used my previous knowledge of Procedural to make this level, I first started off with spawning one block, after that I spawned in 10 blocks when the player started in a straight line.

I then changed this so that as the player driver more roads spawn in. this way it created an endless level for the player. After a while this got repetitive so I added in some left and right turns.

I wanted to have left and right turns randomly so I programmed it after x amount of blocks it would turn left, after this I added it to randomly choose either left or right.

After all this I ended with a procedural level. It is still has a few bugs but I intend to fix them later on.

I also haven’t chosen an art style so I am using cubes so I intend to make a modular asset set which I can use for the buildings

VR Pistol

I stopped using the VR bow because it was becoming apparent that the bow was too slow for the speed of the game, the arrows were slow and it was taking time to load up the arrows every time you wanted to shoot it. So I decided to make a VR pistol as it would match the speed of the game and it wouldn’t be tedious to use.

Secondly, I had to fix the attachment on the players hands, there was a few bugs, but it was because I was attaching the guns root to the player, after this was fixed it was working fine for the right hand

However, the left hand doesn’t work. I don’t know how to fix it as of yet and I am working on it.

Pick Ups

I wanted the driver to not just dodge things like obstacles but also aim for power ups that would be placed along the ground, when the driver goes over the power up it can give some kind of boost like extra ammo or speed

Chaos Driving System

The chaos driving system was pretty easy to set up, but I also wanted a trailer which I used a physics constraint to link my wagon and my car, initially I had it set up so they were linked and there was no movement. But now the trailer moves side to side when I am driving. However, this isn’t as subtle as I wanted as I am still using my block out models and I am getting some issues with collision and the wagon is moving side to side when driving straight

There are few bugs with the wagon however I want to implement some of the fundamental things before I go fix these bugs

UI

The UI that I added was very simple, a health system and a point system and a speedometer. I want to use the speedometer In some features later on if I have some time left. The points system works off how fast the player is travelling and how much distance they have covered.

Zombie AI Improvement

One of they key aspects of the game; the zombie AI, I wanted to work on the most as if it didn’t work It would’ve ruined the gameplay. Earlier in my development I started off with a custom AI move to node and using blueprint spawning to bring the zombie in however it wasn’t very efficient as it was tedious to control the amount spawning in and the movement of each of them wasn’t working correctly when I tried implementing them into the game. It would work if there was one zombie however when there was more than 4-5 it would seem very glitchy.

I decided to do some research into some spawning systems in unreal and found a system in unreal that allowed you to bring a spawner in and it would handle most of the load. This made it a lot easier than before and fixed the problems I was having with the amount I could run at once.  With the new system I had more control and it would handle up to 50 with no problem.

However with this new method I will have to reanimate and remodel the zombies so that it looks correct. Also my bullets don’t work with the new system so I have to fix that as well.

Bugs

  • Some of the bugs and problems I’m having at the current moment is
  • The wagon
  • the left hand of the gun
  • small issues with the procedural road
  • pistol damage to the new AI

Small Updates

I would also like to look into procedural textures as I want to be able to change the colours of the building as they spawn in. with these I will be able to create a different look with the same model using different textures. As the players drives different models will spawn in and It stop the level looking repetitive.

I have gotten rid of the wagon for now as it was causing too many problems, I have opted for a pick up truck as it has less problems, the pistol bullets also work with the zombies.

With the new Level artwork I am noticing a hit in my FPS on borderline unplayable, because of this the VR headset is also experiencing some lag making it difficult to play the game

I didn’t have the gun working in the left hand as the scale would invert and create artefacts in the gun, what I had to do was that if the gun was being held in the left hand invert the scale again so that the gun would look normal

One of the last things to do was delete the roads as you drive alone, as it was affecting the fps significantly, I was attempting to use indexes to delete the roads and I didn’t know how to tell the Bp to only delete the roads that were behind the car not the one it was on. initially I was plugging in the FloorIndex Variable that I made but I knew that wasn’t enough as it wasn’t working. I also knew that I needed to use arrays and store the floor actors in the array, but I had never used them in blueprint before. After some testing I found out how to set up the array in BP. The last step was to tell it which floor to delete which was simple as all I had to do was point to specific points it the array.

Changing all textures to 1024