The “A Long Time Ago In A Galaxy Far, Far Away…” Update
Fortitude 1.3 is a bit of a mess of an update, really – simply put, it contains a bit of everything, and so doesn’t really fall into any particular update category. This week, we have a brand new addition to the narrative with the “In The Beginning…” event that opens the game (it’s nowhere near as cool as it sounds) a bunch of brand new (and mostly self-created) sound effects, an objective marker, several new tutorials and some much needed general fixes and improvements for gameplay all round.
- Narrative –
- “In The Beginning…” Event –
As I said, it’s nowhere near as cool as it sounds (I just like naming things) as it is essentially the opening event of the game. Included within it is the previously implemented “Opening Tutorial” animation where the game guides the player through some basic controls and gameplay pointer through a series of text boxes (they look cool, though). After that, the player must successfully navigate their way through the Asteroid Field that they have spawned in and escape it unscathed, at which point the “Fortitude” ship’s AI will warn them of incoming “signals” and will begin to triangulate their position, while at the same time indicating a nearby Moon that the player should begin exploring. This will then lead into the Ocean Monster Narrative Event (which is being implemented in Fortitude 1.4).
- Landing Tutorial –
This pop-up UI appears when the player first attempts landing on Estabahn’s ice moon. It is a descriptive UI box that describes landing as a mechanic in detail, giving the player pointers on what their velocity should be at certain points, how they can achieve orbital manouevres, introducing the distance counter and generally talking about the intricacies of one of the most difficult tasks in the game.
- System Tutorial –
This pop-up UI appears when the player first ventures opens the full game map after escaping the initial “Asteroid Field” and encountering the “In The Beginning…” narrative event. It is a descriptive UI box that details the landscape and environmental traits of each of the explorable worlds (and Moons) in Fortitude, as well as giving the player slight hints as to what they might find on each one.
- “In The Beginning…” Event –
- GameObjects –
- Added new “Asteroid Field” GameObject (multiple Polygon Collider 2D’s, multiple RigidBody 2D’s) –
This is a new “Asteroid Field” GameObject that surrounds the player right at the beginning of the game. It is essentially an edited down version of the standard “Asteroid Field” implemented in Fortitude 1.1, with the “Fuel Cloud” and “Destructive Asteroids” removed in order to decrease difficulty for the starting player. The number of smaller non-moving “Asteroids” around the player’s starting position has also been increased from a standard “Asteroid Field”, in order to get the player to use precise navigation to manouevre around them and so get used to the controls of the “Fortitude” ship (a tutorial that’s not a tutorial, essentially). The amount of “Asteroids” surrounding the player then gradually becomes fewer and fewer the further they navigate from the spawn point.
- Added “TargetIndicator” GameObject (SpriteRenderer, parented to “OnFoot” GameObject) –
This GameObject is a small, triangular-shaped sprite that is attached to the “OnFoot” GameObject, and it will only become active once the “OnFoot” astronaut gets further than a certain distance from the “Fortitude “ship. At this point, the sprite will appear on the player’s UI near the astronaut’s “Fuel” gauge and will continously point in the direction of the “Fortitude” ship, so that in case the player loses sight of it, it can be found again relatively easily. This mechanic is achieved via the newly created “Pointer” script.
- Added “NarraIndicator” GameObject (Sprite Renderer, parented to “Fortitude” ship GameObject) –
This GameObject is a large, triangular-shaped blue-coloured sprite that is attached to the “Fortitude” ship GameObject, and it will only become active once the player activates the game’s map. At this point the sprite will appear alongside the “Fortitude’s” white triangle indicator on the map, and it will continuously point towards the player’s current narrative-based objective so that the player always knows where they can go next. This mechanic is also achieved via the newly created “Pointer” script.
- Added multiple “AudioSource” GameObjects (attached to multiple other GameObjects) –
These various AudioSources play host to a number of new sound effects being introduced in Fortitude 1.3, along with a few copyright-free or self-created replacement sounds for previously implemented game sound effects. These AudioSources are used at various points throughout the game.
- Added multiple Sound Effects (MP3, WAV) –
This update has received a rather significant sound-based overhaul, with almost all of the previously implemented sounds having been replaced with new either copyright/royalty-free or self-made sound effects. A few new ones have also been added, and the total list of changes is as follows:
- Added “Astronaut Breathing” Sound (Self-Made)
- Added “Astronaut Thruster” Sound (Self-Made)
- Added “Rocket Ambient” Sound (Royalty Free from FreeSound.org)
- Replaced “Rocket Thruster” Sound (Royalty Free from FreeSound.org)
- Replaced “Rocket Explosion” Sound (Self-Made)
- Added “Mysterious Signal” Sound (Self-Made)
- Replaced “Wind” Sound (Self-Made)
- Replaced “Power Loss” Sound (Self-Made/Royalty Free (FreeSound.org) Mix)
- Replaced “Power Gain” Sound (Self-Made/Royalty Free (FreeSound.org) Mix)
- Added multiple ship AI speaking lines (Self-Made from ttsdemo.com)
- Added “Landing Tutorial UI” (Sprite Renderer) –
This UI element appears on the player’s screen as they first attempt landing on the “Estabahn Moon” GameObject. The full description of this tutorial can be read in the Narrative section above.
- Added “System Tutorial UI” (Sprite Renderer) –
This UI element appears on the player’s screen once they exit the starting “Asteroid Field” and go through the “In The Beginning…” narrative event. The full description of this tutorial can be read in the Narrative section above.
- Added “Tutorial Menu UI” (Sprite Renderer) –
This UI element acts as a sub-menu for the previously implemented “Pause Menu UI” GameObject. It is activated upon clicking the “Tutorials” button of the “Pause Menu UI”, and doing so will bring up a fully clickable list of each of the game’s tutorial UI images; Refueling, Landing and the System. Clicking on each button will then activate the tutorial for viewing. A “Back” button is also present to bring the player back to the “Pause Menu UI” if clicked.
- Edited “EstabahnSurface” GameObject (Circle Colliders 2D) –
This edit added lighting to the gas giant, giving it a central light to brighten up the general area as well as add atmosphere as it gets brighter and brighter the closer the player becomes to the gas giant’s dangerous central core.
- Edited “RikaSurface” GameObject (Circle Colliders 2D) –
This edit also added lighting to the gas giant, giving it a central light to brighten up the general area as well as add atmosphere as it gets brighter and brighter the closer the player becomes to the gas giant’s dangerous central core.
- Added new “Asteroid Field” GameObject (multiple Polygon Collider 2D’s, multiple RigidBody 2D’s) –
- Scripts –
- Added “Pointer” script –
This script has two primary functions; enabling the new “TargetIndicator” GameObject’s mechanic as well as the new “NarraIndicator” GameObjec’ts one. The former is a triangular-shaped object that appears whenever the “OnFoot” astronaut strays a certain distance from the “Fortitude” ship, and this script adds a function to it that rotates its transform to point in the direction of the off-screen starship. The latter (“NarraIndicator”) functions in a similar but more complex manner. It too points towards a certain GameObject, but this GameObject can change depending on where the player currently is in the game’s overall narrative, as it points towards the player’s current narrative-based objective. At the beginning of the game, this objective is Estabahn’s Moon (for the soon-to-be-implemented Ocean Monster narrative event) but will then switch to other planetary bodies as the player progresses through the game.
- Added “AsteroidOptimisation” script –
This is yet another script that deals with an issue that has been plaguing Fortitude for a while now; optimisation. It is attached to an empty GameObject with an On Trigger Circle Collider 2D that surrounds whichever “Asteroid Field” GameObject that it is attached to. When the player enters this collider, the “Asteroid Field” is enabled, and when they exit it, the GameObject is disabled. This has been done as a result of the significant performance problems that “Asteroid Field” GameObjects cause (as they are made up of a lot of tiny GameObjects) and as a result the game runs at a smooth 60FPS when the player is not inside an “Asteroid Field” (though 30-50FPS while in one).
- Edited “Tutorials” script –
This edit slightly changed the timings of the “Opening Tutorial” narrative event previously implemented in Fortitude 1.1. The part of the tutorial that discusses the game’s Fuel Gauge has been elongated from ten seconds long to fifteen, and the map section has also been changed from fifteen seconds to seventeen.
This edit also fully implemented the two new narrative tutorials (Landing and System) into the game using a series of functions. One checks to see if the distance between the “Estabahn Moon” and “Fortitude” ship GameObject is less than 30,000 units, and if so it displays the “Landing Tutorial UI”. Another then checks if the player has exited the starting “Asteroid Field”, has experienced the “In The Beginning…” narrative event and opened the full game map, at which point it then displays the “System Tutorial UI”.
This edit also implemented the brand new “Tutorial Menu UI” GameObject, giving it several functions that enable it as a full sub-menu of the “Pause Menu UI”. It has four buttons: “Refueling” (to view the “Refueling Tutorial UI”), “Landing” (to view the “Landing Tutorial UI”), “The Roci System” (to view the “System Tutorial UI” and “Back” (to return to the Pause Menu). Clicking on each of the tutorial-viewing buttons will enable the previously implemented tutorial images, and then pressing the “B” button on the controller will then return the player to the “Tutorial Menu UI”.
- Edited “Sounds” script –
This edit added a number of new functions that fully implement the brand new self-made and copyright-free sound effects into the game. Such functions include playing the “Rocket Ambient” sound while the player is inside the ship, playing the “Astronaut Breathing” sound while outside the ship, playing the new “Wind” while landing and playing the “Astronaut Thruster” sound while the “OnFoot” astronaut GameObject is under thrust.
This edit also added a function that implements the new “In The Beginning…” narrative event. After the game opens and the previously implemented “Opening Tutorial” plays, the function begins as soon as the player exits the starting “Asteroid Field” location. Upon startup, a timer begins that plays the “Mysterious Signal” sound effect, and after a few seconds then plays a new ship AI line that informs the player that the signal is being triangulated. The function then zooms the game out into the map, and plays another ship AI line which suggests that the player head to the nearby “Estabahn Moon” GameObject for exploration (while at the same time changing the “NarraIndicator’s” current target to said GameObject).
- Edited “FuelSystem” script –
This minor edit changed a few lines of code that switched out the old “Power Loss” and “Power Gain” sound effects that occur while said losing/gaining power events are occurring to the “Fortitude” ship and replaced them with brand new ones.
- Added “Pointer” script –
- Fixed a bug where during the new “In The Beginning…” narrative event, the “Fortitude” ship’s AI speech lines sometimes would not activate after the “Mysterious Signal” sound effect had played. This was caused by a few mistakes in some of the new lines of code in the “Sounds” script that accidentally attempted to play the ship AI lines on the Signal’s AudioSource rather than on the “Fortitude” ship’s AudioSource, resulting in the game simply not playing the lines as the AudioSource was already playing a sound (the “Mysterious Signal”). This was fixed by changing said lines of code to instead reference the ship’s AudioSource rather than the Signal’s, resulting in the ship’s AI lines being spoken as normal during the narrative event.
- Fixed a bug where upon entering the atmosphere of either of the game’s two Gas Giants (Estabahn and Rika) the Main Camera would begin to shake as normal (as enabled by the “CameraController” script) but instead of the shake’s magnitude steadily increasing as the ship’s velocity increases, the camera shaking would just become more and more vigorour until eventually the game became impossible to play (due to some seriously intense camera shake). This was caused by there being no lines of code in the “CameraController” script that made the shaking level off once it had been activated, as these need to be custom designed for each world, and the placeholder code for Estabahn and Rika simply didn’t work. This was fixed by adding a few lines of code to said script that levelled off the camera shaking after the ship hit a certain velocity, resulting in dangerous-but-playable levels of camera shake.
- Fixed a bug where if the player decided to exit the “Fortitude” ship while they were in the game’s map, said map would zoom in as normal but would not disable the “Fortitude” ship’s or the “On Foot” astronaut’s map indicators, resulting in the game zooming into a massive white triangle, at which point it then became stuck, which obviously made the game completely unplayable. This was caused by Unity (and code in general really) needing really specific “do this, do that” lines of code to specify every action for every possible event (basically, I wrongly assumed that the game had some common sense) and so unfortunately it did not have contingency code for when the player exits the ship while still in the game map. This was fixed by painstakingly adding lines of code to the “CameraController” script that as a result properly disables the game’s map upon such an event occurring in the game.
- Fixed a bug where the game would not zoom to the correct zoom level (20f) while the player is entering the “Fortitude” ship while within the atmosphere of a Gas Giant (Estabahn or Rika). This was caused by a similar issue to the bug above, namely myself assuming that Unity had some common sense and that I didn’t need to meticulously spell out every possible game-breaking event that might occur so that it could deal with it properly. This was then fixed by adding a few more lines of code to the “CameraController” script that made sure that the game zoomed to the correc zoom level (20f) while within a Gas Giant, but then zoomed to 10f while (and only while) outside of a Gas Giant’s atmosphere. Ah, computer logic.
- Fixed an issue where the “Fortitude” ship’s new UI system wasn’t being displayed properly while the player was within the atmosphere of a Gas Giant (Estabahn or Rika). This was caused by the “Order In Layer” float of the UI system being set at 0 and some of the Gas Giant’s various elements having theirs set at higher numbers (in order to sometimes mask the “Fortitude” ship and freak the player out a little) and so the UI would disappear behind the various Gas Giant elements. This was fixed by changing the UI’s “Order In Layer” from 0 to 900 (a bit excessive, but at least it guarantees that the fix will work) so that it appears over anything that might obscure it in the game.