A Turret's Life is a first-person arcade shooter/tower defence game for PC and VR where you are the tower defending an area against the endless onslaught of attacking robots and combining overpowered modules that can be traded as crypto-backed items.
This week was the most productive week I think I have had – despite a super-chaotic week at work!
Inputs: I’ve finished implementing how the turret responds to the player, and got a great start on the actual input system. Unity seems to have worked out many of the bugs in it 😊
Personal Experiences: Switching the time period to work on the project to the morning has been an awesome choice and I have managed to spend a few hours working on the project every single day!
One of the biggest challenges in trying to develop the inputs is to come up with a system that works well between the different control types and platforms. The main platforms are desktop PC, Oculus Go, and Desktop VR. Moreover, each one of these platforms is compatible with a standard gamepad.
All of these can be boiled down into the camera looking, gun rotation, turret body rotation, and general inputs.
General inputs were thankfully the easiest, since all platforms work with having many of the triggers and buttons under standard convention.
Rotating the turret’s body was not too bad either, since the PC can use the keyboard, while the VR controllers and gamepad use their joystick axis.
The real pain is rotating the camera. For desktop PC, the camera is controlled by the mouse or gamepad, and the guns will aim at the center of your screen. This allows for quick viewing and aiming. But for VR, having the guns only aim at your gaze would be a terrible nuisance - the head does not turn very fast and players could quickly get a headache when the game picked up! So, I am currently in the process of finding a way to aim the guns with the VR controller or gamepad. However, the VR controller sends its rotation every frame in a certain data structure that is not compatible with the data structure the gamepad sends over with the joystick, and the VR controller overrides the gamepad’s info. At this point, I think I will have it so the VR controller is disabled if a gamepad is plugged in; I can’t imagine too many players would want to aim with the VR controller anyway if they bothered to plug in a gamepad. As you can see, it can be annoying to have to develop entire new features and case checks just for a single input! But it is what it is.
Now, getting the guns to aim properly was also another exercise in frustration. In games, things rotate by either so-called Euler angles, which have an x, y, and z, rotation. These are easy to understand by us humans; however, rotating Eulers has a problem called “gimble lock” which roughly means that rotating one axis can rotate the object’s other axis and its rotation gets all screwed up. The solution to this is called Quaternions. These are not readable by humans and are a terrible pain to work with, and often involve converting to and from the Euler angles. Anyhow, after losing much of yesterday to this battle I do believe I won it and am quite satisfied with the results!
Because of the crazy rotation stuff, each gun is now independent from each other and from the turret body. Each gun has a different range and rotation amount, so depending on how far your target is, they will both try to aim at it but one gun might not have enough range or rotation freedom, so it will only point ahead of it for instance. When planning out your guns, you will have to keep this in mind 😊 If you have played games like Space Engineers, you will know that when you place your guns on the ship, they only shoot straight, so if an object was in between your guns they would both miss it. But with the independent gun aiming, the guns will always be pointing at your target position and will adjust for the distance. It is a small feature, but it makes the guns feel a whole lot more alive, and will make it easier to shoot at targets.
The rest of this week I will be finishing off the VR desktop controls and then starting on getting Oculus Go working, which will be its own unique battle haha.
This is a much shorter entry this week, and is more about the results of my realizations from last week.
This was a really weird week for me. About every day my evenings were really messed up because of overtime at work with 10-11-hour days (we are going to release a game this week). Yet because I moved the time to work on the project to the morning, I was still super-productive despite the craziness!
This has given me a confirmation of my realizations from last week, and given me some encouragement that there is indeed enough time and energy in a day, but we just have to figure out how to balance our schedule out in a way that works for us personally! This is going to be a long road of trial and error, but hopefully through perseverance it will be worth it! I think a lot of low energy and willpower situations in life comes down to being over-worked without enough rest. Thus, after the craziness at work runs out, I plan on trying to use the evenings for some wind down time and try to pick up a hobby again to enjoy and gain fresh inspiration to work on the project!
Join the Community!