The Terminus - First Person Platformer
Trailer
About Project
The Terminus is a first person platformer with minor shooter elements. The goal is to get to the end of the level as fast as possible, whilst collecting, destroying and grappling as much as possible to get the best score and the highest rank. I wanted to focus on making it more polished than my previous projects, as well as to help myself understand some of the more useful features that Unreal Engine 5 Provides, such as displaying UI as an on-screen element.
My Contribution
-
Everything asides from the models, some of the sprites and sound (All linked below).
Technical Breakdown
This is a breakdown of all of the mechanics shown in the video above, with things such as how I found making these mechanics, as well as why I decided that these would be a good fit for my game and my general thoughts process in the creation of these mechanics. This section is completely optional, it is only here to provide more information if that is what you desire. Mechanic 1 - Movement Windup This mechanic was one of the first I started working on as I wanted to get the movement to feel rewarding for constantly being on the move. I did this by adding a windup time multiplier to the input axis values on Unreal's default movement BP. Initially this was a more drastic wind-up needed to reward constant and well timed movement, however after doing some testing, I received feedback that the movement wind-up was too long, so I adjusted it to be more reasonable and people preferred that after another playtesting session. I like how the movement feels now as it feels fluid and easier to pick up and go, but I do wonder if the game would be harder if the movement had a slower wind-up time. Mechanic 2 - Charge Jump To stick with the theme of timing being very important to get the best time, I decided that a charged jump that's power grows as you hold it, but dulls out if you hold it too long would be a good fit for my game. This mechanic increases the suspense of trying to get a perfect run, while also creating a robust level of jump that may be required for a gap. This mechanic works by multiplying the elapsed seconds by a base velocity variable and setting the velocity from that. Using elapsed seconds means that every jump will rarely ever be the same level. After 2 seconds is when the jump returns back to a regular jump, leading to no bonus height. Mechanic 3 - Collectable I decided on a collectible because at this point I had the rank system planned out, and thought that adding collectibles around the map would help flesh out that system. To make this I used target points, a BP that spawns the collectible BP on those target points and the collectible itself that attracts to the player when they are in range. I decided on this approach as it was expandable, due to only needing to add more target points if I wanted more, which made placing all of the collectibles easy. Mechanic 4 - Hook To Drone In its initial conception, this mechanic was going to allow the player to hook to anything and swing, much like Spiderman, however after some short consideration to the timeline of this project, I thought that wasn't feasible, so I adapted it to be more of a traditional grappling hook that you might see in other platformers, such as Ratchet and Clank. I think this also helped the other mechanics in the game shine a bit more as now you can't just swing around the whole thing and ignore everything else. Mechanic 5 - Timer The timer mechanic is fairly simple, however, I wanted to make sure that it was tracked using both an overall time integer, counting up by 1 every seconds, as well as having tenth seconds and minutes displayed, making it easier to read in the player’s UI, whilst allowing me to use the overall number to calculate the rank later down the line. Thats it really, it's integrated well (in my opinion) and I never really had any complaints or comments about it during playtesting. Mechanic 6 - Rank System This is the final mechanic, and also the most important one as it wraps the game up in a nice bow, creating a complete gameplay loop. This takes into consideration a lot of different statistics or the player’s progress throughout the level, such as the amount of collectible collected, drones destroyed, walls destroyed and overall time, each of these being assigned their own values, such as time being assigned a value of -10 per second. All of this is put into one big addition which ends up creating the final score, which is then used to compare against variables with the value needed for each rank inside it. The ranks list from S,A,B,C,E and F, meaning fail. If the player gets an F they must restart the level to get a better score. Balancing these was always in my head when creating them, however, I made sure that S was difficult to get as it is the highest rank and the most rewarding to earn because of this. I am happy with how this came out as it all just works and there were very few hitches that I got stuck on with this. Overall I have achieved what I wanted to with this project, which was to work on my polishing and game feel skills, as that is what was lacking in my previous projects in my opinion. I am also a fan of the world I have built for the game and wish I had more time to expand on it.
Links
Below are links to the assets I used:
Good SKY by Uneasy Game Dev: https://www.fab.com/listings/6eb8de95-710e-45cf-a029-e48e709aef03
Voxel Noir by Maxparata: https://maxparata.itch.io/voxelnoir
Voxel Megabuilding by Maxparata: https://maxparata.itch.io/voxelmegbuilding
3D Voxel Furniture by Mariaisme: https://mariaisme.itch.io/3d-voxel-furniture
Voxel TV by andruha1801: https://sketchfab.com/3d-models/voxel-tv-1b5fef83159e43b9a4e669a38b126dde
Ceiling Lamp and Wooden Fence Voxel Models by Cryptovoxels: https://wiki.cryptovoxels.com/voxel-library
Explosion Spritesheet by Reactorcore: https://reactorcore.itch.io/explosion-spriteanim-sheet-minipack
Smoke Pixel Spritesheet by BDragon1727: https://bdragon1727.itch.io/free-smoke-fx-pixel-2





