
Tides of Treachery
Gameplay GIFs
Overview
I worked with the team from pre-production until release, and during this time I acted as a junior developer with the primary responsibility of implementing the mechanics and systems that were designed by my tech/design leads.
Working within a team of 21 was totally new to me, and has given me very valuable experience in communicating within much larger teams. For project management, we used JIRA where all of my completed tasks were assigned to me.
Role: Junior Developer
Genre: Pirate, Action-Adventure
Engine: Unreal Engine 5
Team Size: 21
Duration: 8 Weeks
Platform: PC (Itch.io)
Year: 2024
The projects development time lasted 8 weeks, here are some of my key contributions:
-
Aiming System - Added two versions to the game, one is now a legacy version as the design for it was too difficult to implement, and not effective in the first place.
-
Attack Range Creation System - Implemented an attack range creator, using spline mesh generation.
-
Water Rapids and Whirlpool - Scripted water force mechanics, the rapids add force in a specific direction in the water, and the whirlpool slowly pulls the player's ship down and inwards.
Aiming & Attack Range System
As mentioned already, I was a junior developer in this project and so I was being given tasks by my tech/design leads. The first task I was provided with can be seen in Fig. 1.

Fig. 1
Fig. 2
Fig. 2, is a video that shows my initial work on this system. This was a video I made and uploaded to JIRA so that my leads can clearly see my current progress. The video showcases the attack range mesh generation system, and the aiming crosshair.
​
Attack Range Mesh Generation:
I implemented this using spline mesh generation; essentially, the designers create a spline that they want in the viewport, and this spline will then be meshed out for them. This is what my lead designer asked me to do as he wanted to have easy control over its shape to make any little tweaks in the future.

Furthermore, Fig.3 showcases the variables I created so that designers can have even more control over the shape and accuracy of the spline mesh.
Fig.3
​​Aiming System:
The aiming system was functional by this point, however the main issue with it was that my design lead wanted the crosshair to move in 'world-space'. At this moment, the crosshair was moving with the ship, whereas my designers wanted it so that if the ship moves/rotates, the crosshair remains independent only aiming where the player is inputing.
​
This was a valid suggestion, however this became extremely difficult for me to program once things like buoyancy was added to the game. The issue arose from the fact that the attack range is a mesh, it is attached to the ship, and therefore it was floating around unpredictably from a buoyancy update. Consequently, this made it tough to check if the crosshair was in the bounds of the attack range, especially that the crosshair was now in world-space rather than local-space.
​
I worked hard on this system, but it just felt flawed and clunky. For example, it felt unresponsive to move the crosshair from one side of the ship to the other, and this felt particularly bad on controller. I brought this up at a couple of our meetings, and eventually my tech and design leads listened to me about this.
​
Since controller support was now a priority (decided about 3 weeks into the project), we needed a new and much more responsive aiming system. Fig.4 shows the next brief I was given for the aiming system:

Fig.4.

Fig.5.
Fig.5, shows a message that I sent to my Tech Lead about my concerns for this system. The input was then changed the the Right Trigger on the controller, or LMB on KBM.
Fig. 6, is a video that shows the final state of the aiming system. This felt so much better to use in game because it felt snappy and it worked well on controller.
Note: I used separate methods for aiming for KBM and Controller. KBM was additive based on input direction, whereas controller was a direct set and included a dead-zone.
Fig.6.
Water Mechanics
This sections covers the development of the two water mechanics I was assigned: a whirlpool for a boss attack, and some water rapids for level design.
​
Whirlpools:
Fig. 1, shows the diagram was I was given for this mechanic, and Fig.2 shows the result of this mechanic.

Fig. 1
Fig. 2
You can see in Fig.2 that I have completed the task as required by the design diagrams. After showcasing this on JIRA and letting my lead know, they gave me this feedback:

Fig.3

Fig.4
This is the diagram I was sent about what they would like the whirlpool to be adjusted to. They wanted the ship to scale the slope/height of the whirlpool as seen in Fig. 3, rather than being flat like in Fig. 4.
​
Now this is understandable from the normal POV of the ship (third-person), as this means the player can see the ship just floating above the water. However, I made the following counter arguments to this:
​
-
The combat is top-down, so the player won't really notice this
-
We have a limited time scale
-
This is very complicated and high effort, low rewards, not what we want right now.
-
Will be complicated to get back out?
​
Even after this, my leads still wanted this feature so I made this:
Fig.5.
Fig. 5, showcases how the buoynacy system was not responding well to the change in water surface when descending the side of the whirlpool.
​
After discussion with my tech lead (who made the buoyancy system), he decided that he would tackle the whirlpool height changes. This was an adequate solution because with limited time left it would've taken me a while to get to grips with how the buoyancy programming worked.
Water Rapids:
There was no diagram for this task, however I was given a brief in words:
"Develop a water current volume that is used to push the player ship in a specific direction when they are inside the trigger area."​​
Fig.6.
Fig. 6, is a video that shows the final state of the water rapids mechanic. This was really simple to implement, and you can see how easy I have made it for designers to control.
​
Now looking retrospectively, to improve this system I could have added a way for the designers to change the shape of the volume, as for meandering bits of water it may become difficult to just use box collisions.