Fortitude – Version 1.4 – Patch Notes

The “In The Darkness Of The Waters Do Solemn Nightmares Roam” Update

I mean, do you need a description after reading that title? I jest, of course you do.
Fortitude 1.4 is another fairly large content update, bringing the game closer than ever before to completion. Added this week were the final two explorable planetary surfaces (Estabahn’s and Rika’s Moons) as well as their individual hazards; Rika Moon’s ferocious ashstorms and volcanic disturbances, and Estabahn Moon’s harsh snowstorms and dark subsurface ocean. Gameplay-wise, the remote control mechanic has also received a much-needed revamping, and narratively, something now lurks in the blackness of Estabahn Moon’s waters, which the player must venture within in order to progress the game’s story.

Spooku_Screenshot

Additions –

  • Controls –
    • “X” – Toggle HUD

 

  • Narrative –
    • “Ocean Monster” Event –
      This is the next part of the game’s narrative structure progression that begins right after the “In The Beginning…” event (implemented last week in 1.3) comes to an end. In that event, the “Fortitude” ship’s AI points the player towards a nearby planetary Moon (Estabahn’s Moon) and upon touching down on said Moon, the “Ocean Monster” event begins. The game then checks for two conditions: if six minutes have expired since landing, and if the player has ventured into the subsurface ocean of the Moon. If these return true, then the ship’s AI speaks, telling the player that the “Mysterious Signal’s” (from “In The Beginning…”) location has been triangulated, and that they need to exit the atmosphere in order to receive coordinates. Upon doing so, the game then zooms out into the map automatically and alters the blue map pointer to point towards Elcalowda, upon which the “Alien Ruins” event will begin (coming in 1.5).
    • “Volcanic Lava” Event –
      This event isn’t really related to the overall game narrative, but it is still an “event” so I still felt it belonged in this section. Upon touching down on the somewhat volatile surface of Rika’s Moon, the “Lava” GameObject will slowly begin to rise, first creeping up through the cave systems and then eventually consuming all of the Moon’s surface. If the player is caught out, they will die immediately if on foot, and will lose structural integrity if in ship.

 

  • GameObjects –
    • Added full “Rika Moon Surface” GameObject (AudioSource, Polygon Colliders 2D) –
      This GameObject is part of Josh’s fully designed planetary surfaces, and now acts as the explorable surface GameObject for the “Rika Moon” planetary body. These designs include complete terrain, rocks and an intricate cave system – all of which are entirely interactable and explorable. The player can now land and takeoff from this GameObject as a result of the “OrbitTransfer” script attached to it. Additionally, this new surface doesn’t have an “edge” that the player can reach on foot. Instead, the terrain is entirely looped, so that if for example the player continues travelling on foot towards the right, they will eventually end up right back where they started. This “infinite terrain” feature also functions as a result of the “OrbitTransfer” script. As well as it’s surface, “Rika’s Moon” now also has an atmosphere, complete with dangerous “Cloud” GameObjects (previously implemented in Fortitude 1.1) that can wreak havoc on landing navigation if the player is not careful. The GameObject also now has an AudioSource that plays the “Volcanic Storm” sound effect upon landing.
    • Added “Lava” GameObject (On Trigger Polygon Collider 2D) –
      Visually, this GameObject was fully designed by Josh, and it forms the most important part of the “Volcanic Lava” narrative event, being a GameObject that slowly creeps upwards as soon as the player touches down on the surface of the “Rika Moon” GameObject.  Eventually, it rises up all the way through the surface and will consume all of the visible land. If it makes collision-based contact with the “OnFoot” GameObject they will be instantly destroyed, and contact with the “Fortitude” ship will cause it to severely lose structural integrity, but will not destroy it.
    • Added full “Estabahn Moon Surface” GameObject (AudioSource, Polygon Colliders 2D) –
      This GameObject is part of Josh’s fully designed planetary surfaces, and now acts as the explorable surface GameObject for the “Estabahn Moon” planetary body. These designs include complete terrain, several rocks, and a small cave system – all of which are entirely interactable and explorable. Most importantly however, beneath the caves is an entire subsurface ocean, which houses the “Ocean Monster” narrative event. The player can now land and takeoff from this GameObject as a result of the “OrbitTransfer” script attached to it. Additionally, this new surface doesn’t have an “edge” that the player can reach on foot. Instead, the terrain is entirely looped, so that if for example the player continues travelling on foot towards the right, they will eventually end up right back where they started. This “infinite terrain” feature also functions as a result of the “OrbitTransfer” script.As well as it’s surface, “Estabahn’s Moon” now also has an atmosphere, complete with dangerous “Cloud” GameObjects (previously implemented in Fortitude 1.1) that can wreak havoc on landing navigation if the player is not careful. This atmosphere however is not as severe as Rika Moon’s, as the “Clouds” are slightly weaker and fewer in number. The GameObject also now has an AudioSource that plays the “Snowstorm” sound effect upon landing and the “OceanAmbient” sound effect while the player is in the subsurface ocean.
    • Added “Spooku” GameObject (AudioSource, On Trigger Box Collider 2D) –
      This shadowy GameObject represents the primary antagonist of the “Ocean Monster” narrative event. It was visually designed by Josh, and it essentially roams around in the deepest and darkest areas of the “Estabahn Moon” subsurface ocean. If it roams too far upwards or sideways, an On Trigger Box Collider-tagged GameObject entitled “Cage” will push it back downward, keeping the creature in the confines of its waters. Additionally, since the primary theme of Fortitude is “fear of the unknown”, it is unlikely that the player will ever fully see the “Spooku” as the closer they get to it, the more it fades and becomes a “shadow”. If they were to move right up close to it, all they would see is something shifting in the darkness, along with hearing it’s rather eerie sound effect. This decision was made as we felt it was far scarier to suggest the presence of something rather than to show it. The “Spooku” also has a surround-sound AudioSource, so that it’s “OceanMonster” noise can be heard coming from whatever direction it is in relative to the player, and it also gets quieter and louder depending on its proximity.
    • Added “Weather System” (On Trigger Box Collider 2D) –
      This GameObject forms a fundamental part of both surface GameObjects for the “Rika Moon” and “Estabahn Moon” planetary bodies. Upon touching down on either of these, the player will be greeted by multiple “Wind” GameObjects (modified moving “Cloud” GameObjects from Fortitude 1.1) that will whip past them at high speeds, pushing against both the “OnFoot” astronaut and “Fortitude” ship GameObjects at all times, causing exploration to be somewhat more difficult than on other worlds. If the player does not park the “Fortitude” ship reasonably well, the “Wind” can also cause the ship to fall over. This “Weather System” is much stronger on “Rika’s Moon” due to its very unstable volcanic activity, but it is still rather formidable as a snowstorm in “Estabahn’s Moon”.
    • Added multiple Sound Effects (MP3, WAV) –
      • Added “OceanMonster” Sound (Self-Made)
      • Added “OceanAmbient” Sound (Royalty Free from FreeSound.org)
      • Added “Snowstorm” Sound (Royalty Free from FreeSound.org)
      • Added “Volcanic Storm” Sound (Royalty Free from FreeSound.org)
      • Added “Ambient Wind” Sound (Royalty Free from FreeSound.org)
      • Added multiple ship AI speaking lines (Self-Made from ttsdemo.com)
    • Edited “Fortitude” ship GameObject (Rigidbody2D, On Trigger Circle Collider 2D, Box Colliders 2D) –
      This edit altered how the “Fortitude” ship’s AudioSource works, switching it from a standard sound emitting from everywhere source (Logarithmic Rolloff) to a specific position-based source (Linear Rolloff). As such, if the player is remote-controlling the vessel from a distance, they will now be able to hear the ship coming as it’s sound will become louder the closer it becomes, and will also be able to pinpoint exactly where it is coming from because of the AudioSource’s new “Surround Sound” feature.
    • Edited “ElcalowdaSurface” GameObject (Polygon Colliders 2D) –
      This edit added an AudioSource to the planetary surface, so that the “Ambient Wind” sound effect can be played whenever the player has landed on said world.
    • Edited “OnFoot” GameObject (Rigidbody2D, On Trigger Circle Collider 2D, Box Collider 2D) –
      This edit slightly altered the settings of the GameObject’s AudioSource. The volume of the “Astronaut Breathing” Sound Effect has been reduced from 1 to 0.5, and the volume of the “Astronaut Thrusters” Sound Effect has been reduced from 0.25 to 0.1.

 

  • Scripts –
    • Added “OceanMonster” script –
      This script acts as the coding backbone for the new “OceanMonster” narrative event.It contains the full (and not massively complex) AI system for the “Spooku” GameObject, a function that switches the creature between two primary “states” at various timed intervals; Inactive and Moving. If Moving is active, the “Spooku” will move via an AddForce in a randomly generated direction (courtesy of Random.Range) and is Inactive is active (haha) the creature will drift for a few seconds, carried by the momentum of its previous movement. Upon colliding with any of the “Cage” GameObjects (which form a rectangular box around the darkest parts of the ocean) the “Spooku” will be forced in the opposite direction of it’s current movement, so that it stays within the ocean at all times. Additionally, the alpha of the creature’s colour is changed depending on its proximity to the player. The closer the player gets to the “Spooku”, the more transparent it becomes, until if the player gets close enough, due to the darkness of the waters and its opacity, it will look like a fleeting shadow moved for a split second in the water. The reason for the fading however is that from a distance, the creature can be somewhat seen, an event which hopefully will cause the player to become rather terrified. This script also enables the other part of the “Ocean Monster” narrative event, namely the ship AI successfully triangulating the “Mysterious Signal” and then showing the player it’s location upon exiting the atmosphere. This was done with a series of booleans and a few borrowed functions from the “CameraController” script in order to automatically zoom the map in and out.
    • Added “Lava” script –
      This is a rather simple script that adds a transform.position function to the new “Lava” GameObject parented to the “Rika Moon Surface” GameObject. This function starts to move the “Lava” GameObject in a continuous upward direction as soon as the player has touched down on the surface of Rika’s Moon, and will continue to do so for as long as the player remains on said world.
    • Edited “Sounds” script –
      This edit implemented all of the brand new sound effects into the game, as well as changing how a few of the old ones work in order to improve gameplay. As a result of this edit, whenever the player successfully lands on the “Estabahn Moon” surface, the “Snowstorm” sound effect will play, and if they enter its ocean, the “OceanAmbient” Sound will then replace it. Whenever they touch down on the “Rika Moon” surface, the “Volcanic Storm” sound will play, and on “Elcalowda’s” surface, the “Ambient Wind” sound effect will play (Elcalowda is much less volatile than the two Moons so it gets a gentler sound effect). Each weather sound effect will also become loud when the player exits the “Fortitude” ship, and will get quieter when they enter.
      This edit also added several audio-based functions that contributed to the “OceanMonster” script’s various functions for the “Ocean Monster” narrative event.
    • Edited “VehicleTransition” script –
      This edit completely revamped the remote control mechanic for Fortitude. Previously, when remote control was engaged (via the “Y” key while away from the ship on foot), the player could fly the ship, but the camera would remain on the astronaut, giving them very limited range and ability with said remote control. This was cool but made the mechanic fairly useless, so with Fortitude 1.4, the camera now switches entirely to the “Fortitude” ship GameObject upon toggling remote control and the ship AI audibly confirms this. A blue-ish filter is also placed in front of the camera in order to give the remote control a looking-though-a-screen feeling, as said piloting is being done from the perspective of the “OnFoot” astronaut. To reinforce this, the sound effects from the ship are not activated and instead the player can still hear whatever is going on around the “OnFoot” astronaut, adding to this idea that the astronaut is just remote piloting the ship from a screen. The surround sound of the ship’s rockets can then be heard as the vessel approaches. Toggling remote control off will then remove the blue filter and return control of the “OnFoot” astronaut to the player.
    • Edited “OrbitTransfer” script –
      This edit fully implemented the two brand new surface designs for the “Estabahn Moon” and “Rika Moon” planetary bodies, as well as enabling their individual infinite terrain mechanics so that their terrain is looped and therefore the player will never be able to reach an “edge”.
      This edit also changes the gravity and drag of both the “OnFoot” astronaut and “Fortitude” ship GameObjects depending on whether they are on the surface or in the water of the “Estabahn Moon” planetary body. Said gravity and drag is massively increased if the player enters the water, in order to simulate the effects of movement within water as realistically as possible (i.e. slowing the player down massively so that they have to “swim”).
    • Edited “FootNavigation” script –
      This edit switches the controls of the “OnFoot” astronaut GameObject depending on whether or not they are currently within the water of the “Estabahn Moon” oceans. If they are not (and so are on the surface of the world) then the “Left Trigger” is used to fly upwards in a jetpack-style fashion (which consumes “Fuel”), with the “Left Stick” functioning for left and right walking movement (which does not consume “Fuel”). If they are within water however, the controls are switched for a similar layout of that of manouevring in space; the “Left Stick” is used for all movement (both vertical and horizontal), and all of it uses the astronaut’s jetpack, which in turn uses much more “Fuel” than just walking about on a planetary surface.
      This edit also added a small function that now slowly detracts “Fuel” from the “OnFoot” astronaut’s “Fuel” level at all times when they are outside of the “Fortitude” ship, which in-game would be for Life Support. This edit essentially means that the “OnFoot” astronaut will eventually die if they stay outside the “Fortitude” ship for long enough, even if the player does not move them around. This function was created to add realism as well as making on foot transversal a tad more risky.
    • Edited “SpeedGUI” script –
      This edit officially added the “Fuel Gauge” of the “Fortitude” ship to the game’s HUD, so that now it can be fully toggled on and off with the rest of the ship’s HUD if the “X” button on the controller is pressed. This essentially allows for a more immersive game experience where the player can if they wish turn off the entire HUD.
      This edit also added a function that completely disables the ship’s HUD upon exiting the ship and exploring on foot. Said HUD then needs to be re-enabled manually in a powering on-style fashion when re-entering the ship (this is again done via a press of the “X” button).

 

Bugfixes/Improvements –

  • Fixed a major game-breaking bug where within a build of the game, some of the various designed textures (most notably that of the “Fortitude” ship’s “Fuel” Gauge, “Rika” and “Estabahn”) would visually glitch out, resulting in a “Oh God is my graphics card dying?” level of panic and fairly obviously, a complete inability to play the game as several major visual elements were completely compromised. So that you can see just how massive an issue it was over the previous weekend, an image will be provided below:
    Capture
    Exact diagnosis took a good few days, but the cause was eventually discovered. The bug was caused by Unity apparently having a 4GB texture limit, so that in essence a game can only have up to 4GB of asset textures in a game build at any one time. Unity being Unity, it failed to actually disclose this, and said bug also only occurred in build (not in Editor) which is why it took so long to figure out. It’s also ridiculous, as I imagine a great many games have more than 4GB worth of textures, but that’s what it was. Due to Fortitude having a high number of high resolution textures (mainly for the planets and UI elements) the game passed this 4GB limit with 1.4, resulting in the game being unable to render some of its visual elements, and so rather than saying so via a debug, it instead decided to glitch out various images in terrifying fashion. This was fixed by dropping the quality of all of the game’s UI elements from 8192 to 2048, resulting in them looking rather blurry but fixing all of the visual glitches. Currently, the game sits at 3.8GB of textures, so it is likely that in the next update or so more textures will have to be downsized or even outright removed if we want to stop this bug from occurring again.
  • Fixed a bug where the “Spooku” GameObject would not emit any sounds whatsoever, despite having an AudioSource and the “OceanMonster” sound effect attached to it. This was caused by the GameObject’s AudioSource not being configured correctly to handle surround sound (i.e. the sound “moving” depending on the direction of the source) with its Linear Rolloff’s Minimum and Maximum Distance being set incorrectly to 0 and 50 respectively. This was fixed by changing said Minimum and Maximum Distance to 10 and 50, resulting in the “Spooku” GameObject successfully emitting its spooky noises. These numbers mean that at 50 Unity units from the creature, the player will start to hear its noises, which will then become louder and louder as they get closer and closer until peaking at exactly 10 units distance from it.
  • Fixed a bug where the “OceanAmbient” sound effect would play as normal while the “OnFoot” astronaut was within the waters of the “Estabahn Moon” subsurface ocean, but would then not continue playing upon entering remote control of the “Fortitude” ship (as it’s supposed to as the player should still hear the noises around the “OnFoot” while within remote control). This was caused by the “Sounds” script having rather badly written boolean switches within its functions for the various ambient noises surrounding the “Fortitude” and “OnFoot” GameObjects as well as it not being correctly configured to allow for the revamped remote control mechanic. This was fixed by adding a series of booleans and then correcting a few lines of code which now check to see if the player is within remote control before disabling any “OnFoot” astronaut sound effects, completely fixing the issue where if the player is remote piloting the ship, the “OceanAmbient” noise can still be heard if the “OnFoot” gameObject is in water.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s