Reaching Terminus - Dev Log
Week 21 (Sep 23rd - Sep 29th)
Menu Uplift:
​Started this busy week off by creating some new visuals for the options menu, along with new panels and buttons that direct players through the panels such as sensitivity sliders and audio options. Now the menu looks like it's within the players arm monitor, keeping with the diegetic UI the rest of the game uses.
​
Added a Timer feature that tracks the time of a player's run, and records best times using player prefs. This all happens within the GameManager to carry these times on a UI panel across scenes, and show players their run time and best times when they win or lose.
​
I also added a loading screen using an Asynchronis loading script I found online, since some lower end hardare might struggle to load the entire game at once.​​​​​ I had to resize my tutorial and loading screen canvases to fit the screen size in build, as they werent set to match a set resolution. ​​​​​​
​
For some quality of life, I implemented a fade to black system, where an animated UI image will change its opacity to fade players into each run, and out of each death. This adds some nice polish to the game feel, and makes the transitions between scenes feel smooth.​
​
And finally, I added the keybinds for the game to the sensitivity slider panel in the options menu, so new players can actually learn the controls if they don't come naturally (or when tutorials tell them about new keys to use).​​​​​​​​​​​​​
More Audio:
​​​Added a audio mixer so that I can have functional Audio sliders in the menu to change the volume for SFX and Music independently, which allows each audio sources individual volumes and pitches to eb retained.
​
Got through the rest of my general sound effects, and tweaked some minor stuff like object heights and layers to make them better to interact with. Added more sounds like a steam sfx when players are damaging fires with their extinguisher to give player more feedback, and some foley for each of the LC's, from metal creaking to whooshing winds to flesh them out audio wise. These are all determined by trigger boxes on each LC, that detect if the player or mech are in them, and will trigger their respective foley accordingly.
I also realised players could fall for a while in the later LC's, so I added a falling sound that increases in intensity overtime when the player isn't grounded. Also added a ladder climbing sound and thud noises when reconnecting to ground after long falls.​​​​​​​​​​​​​​​
Fire Improvements:
​Did some more work on the Mech fires, adding a interior fire Particle System that's enabled when a mech fire is spawned to better communicate to players they are on fire. Also discovered the thereIsFire bool that checks if the mech is on fire was not being set false correctly, so now the bool will stay on and continue to spawn fires if the mech is out of coolant, but fires can be properly put out if the mech does have coolant, as intended.​​​​​​
​
Had an issue with the fire spawner where it wouldn't consistently spawn fires in one place, which was because it is a child of the mech camera holder, but because I had moved it backwards on the Z axis, it arcs around the mech camera holder, so I zeroed the Z axis and it's spawn location is consistent now. ​
​
Also changed the Fire Extinguisher to not be equipped by default, and instead is equipped from inside the mech opposite the coolant switch. This means when a fire does break out in the mech, players can learn about how to use the extinguisher then, rather than learning at the start in the hanger where new player's are already being given a lot of information to take in and understand. ​​​​​​​​​​​​​​​​​
Building and Bugs:
​​​​Built out the game for the first time in a few weeks, and discovered a number of issues, and some general stuff that needed fixing.
​​
The pilot couldn't board the mech, but only in the build which was odd. Since the entry point is using my button script, it needs an audio source and interact sound to be pressed, and the one on the mech entry point had neither. Once I added these the embarking system worked again.
​
The Dark Tunnels LC needed a bit of work. I added a sliding sound and key icon to the door blocking the battery for some added impact, as a way to tell players to find the key. Also added a cave foley sound that turns on and off with Ontrigger enter when the player or mech enter a trigger box in the cave. I also added some floor tiles to help show off the side paths a bit more clearly and guide the player, as I had seen in previous play tests players couldn't always spot them.
To take another step in solving this issue, the Key room now houses a screen with a map of the tunnel paths, with icons to guide the player to where the batteries and keys are and where they should go.​
​
​Eventually I had gotten sick of the player model clipping through the player when crouching, but I wanted to keep the shadows it's capsule casted. This was the same issue I had had with the Mech, where I culled the layer the mech's model was on so players could see through it, but this led to the mech not having any shadows. The solutiuon I came up with was to set the mesh renderers of these models to Shadows Only, so they cast shadows but didn't block the camera. I made the mech model a duplicate, and swapped the shadow and exterior sets when players embark the mech. ​​​
​​​​​
Did a few more runs of the game in build, and found the Line Launcher would become stuttery when players eventually reach their grapple point, so I added a line where if the players position (while in the mech) reaches their current grapple point, they will unhook from it, which makes the act of grappling feel far smoother.
Also I changed the crosshair position of the mech, as aiming at grapple points felt inaccurate, which was due to the camera the crosshair was attatched to being raised higher than the camera the Line launcher rayacst originated from during mech animations.
Also made some changes to the hanger, where the mission map can now give a clearer explanation of the player's main goal, with the textured cube display being replaced with a 2D UI in 3D space that is brighter and far more readable than the original. Created a new Mech tutorial panel with the same style, with new orthographic images made in photoshop.​​​​​​​​​​​​​
Old LL:
New LL:
New Mech Animations:
​While playing around with the shadows only models earlier and momentarily seeing the mech leg models below the mech camera, I realised that having the mech's legs visible would add a lot to the UX of pilotingthe mech. So I made a seperate set of leg models that I animated, which line up well with the existing camera animations.
Expirementing with Unity and following spur of the moment ideas like this are great feelings when they turn out well, just like when I made the Line Launcher after working with moving objects. good fuel for experimentation.
​​​
Moreover, after putting it off for most of the games development, I finally added emabrking and disembarking animations for the mech. This was done through the use of a third embarking camera, rather than moving the player camera and messing up its code and transform values. Through a couple coroutines and extra functions, I cut the original emabrking code into sections that would occur during and after these animations, leading to the final animation result. I also made some custom sounds by mixing existing audio to make audio clips to match each animation.
​
However this has led to two problems: when players exit the mech, they won't always face the same direction, which can be disorientating. And now coolant has to be running before and during these animations, which can waste the players coolant resivours long before the fuel. I will consider moving the switch to be a input while controlling the mech after I do some more proper playtesting.​
​
​Also added my UI fire element to the mechs new interior, so when they disembark the fire appears to continue from the same point, and will also be set inactive when the fire is put out.​​​​​​​​​​​​​​​​​​
Beginning of the End:
​​​​Added an end LC section that will house Termnius when I get around to making and scripting the rest of it in the coming weeks.