Hermes Runner
Project Type
School Captsone Project
Project Progress
In Progress
Technology
Unreal Engine 5.5 Blueprints
Team Size
32
I'm currently working as a movement system engineering team lead (8 people), and a designer. Hermes' Runner is a 3D movement based open level parkour game, where the player can run around using Hermes' boots, deface billboards, and deliveries in a reimagined 2000s Greek city, where the gods are real and they own everything. Update (3/19/2025): A lot of work has been done on the game since then check out our early access now on STEAM https://store.steampowered.com/app/3536730/Hermes_Runner/
Features
Team Lead Role
+I lead the movement system engineering team. The team consists of 8 Engineers with the main responsibility of building anything related to the movement system. I lead the team by desiging systems, creating tasks, pair programming with other team members on their tasks, writing more details and suggestions on tasks, streaming work days with the team to document how some systems work, documenting design patterns in a clear way so that everyone is on the same page. Also, I tried my best to maintain good communication within the team, and a good communication channel with the other teams on the project.



Movement System (To be Updated....)
+I designed and built the movement system for Hermes Runner with the idea of breaking the system into smaller sub-systems each with it's own responsibility, and defined rules of communication between these sub-systems so that so that later in devolpment if we want to iterate on a specific part of the system we can know what other sub-systems might be changing it's interal variables

System Breakdown
Input Handler - Handles and refines user inputs, incorporating features like Input Buffering, Coyote Time, and Input Mappings.
State Manager- Manages the player's states, defines rules to transition between states and communicates with the speed manager whenever a state change happens to modify speed.
Speed Manager- Tracks and manages the player's speed, offering functionalities like speed boosts and momentum adjustments.
Movement Mechanics- A library of movement mechanics which are (up untill now) rail grinding, a wall jump, double jump, single jump, slide, air dash, and a mantling system. All the mechanics are wrapped in a wrapper method that can be called when the action is needed. Initally the movement of the game was positional curve driven, but it didn't feel good on some of the mechanics so now it's velocity curve driven, where mechanics are a combination of "pushes" on the player character with the push being driven by a magnitude of some sort, a float curve to drive the magnitude, and a time so that designers have freedom to change how mechanics work and feel without changing the code.
Animation System- Responsible for animating the player character, which initally meant building the animation blueprint and managing animation montages, but we just pivoted to using Unreal Engine's Motion Matching instead to drive the animation.
Camera Manager- Responsible for animating the third-person camera by zooming out/in to give feedback to the player on how fast their going
Implementation Contributions
Input Handler- Designed how coyote time and the input buffer should work and implemented it with another person on the team. Coyote time works with the state manager to check whenever the character falls of a surface it starts a timer for x seconds, where the canJump function will be overriden to return true. The input buffer stores an input in an array for x seconds when that input is reported to be invalid by the state manager, and whenever the current input is done executing it tries to run the stored inputs.
Example Blueprint Snippets
+


State Manager- Designed and fully implemented the state manager, which manages switching states by cleaning up the current state, and switching to another one while keeping track of how good the transition was to report to the speed manager which then mathematically calculates a new player speed. It's also responsible for checks to enter a state. Example, canDash?, canWallJump, etc...
Example Blueprint Snippets
+


Movement Mechanics- I came up with 2 design patterns that we used for building movement mechanics, the idea with both design patterns is to make it as smooth as possible in terms of managing velocities as well as making it as modular as possible for designers to change the mechanics works. I also fully implemented the rail grind, the slide, the air dash, the mantling, the double jump, and assisted with the inital wall jump and then reiterated on it to follow a force curve driven approach.
Movement Mechanic Design Pattern
+The idea with having a documented design pattern is to give team members that are assigned a mechanic task an idea on how to start, as well as giving members who are assigned to iterate on mechanics to know the general structure of all the mechanics

Curve Driven Mechanic Design Pattern
+I experimented with different ways to get to this solution. I have found that this solution (using an external curve) was the most optimal for our case because we started without knowing exactly fast our game was going to be so with this solution we could build a mechanic once and change how fast it's driven at any time

Rail Grind Blueprint Example
+

Slide Blueprint Example
+

Air Dash Blueprint Example
+

Mantling Blueprint Example
+


Double Jump Blueprint Example
+

Wall Jump Example
+

Speed Manager- I setup and designed how the speed manager should work, I initally added some starting functionality to the system which was then expanded on by another member of the team. The system works by keeping track of a curve of momentum gain which is an inversely exponential curve, which means the faster the player is going the harder it is to gain momentum
Example Blueprint Snippets
+

Animation System- Initally the system was made using Unreal Engine's Animation blueprint state machine system, but recently we wanted to experiment with Unreal Engine's Motion Matching system . So I implemented a starting point to the motion matching system while referencing the sample project by Epic games.
Example Blueprint Snippets
+

Camera Manager- I implemented the camera manager sub-system, which for now animates the camera when the character starts moving (defualt animation) relative to the player's speed which zooms in/out to give a better feeling for speed. Also, it has a function to animate the camera using an additive fov value, a curve, and time, which is used in the movement mechanics to give certain mechanics a better feeling by zooming in/out.
Example Blueprint Snippets
+

UI Implementation
+I designed and implemented and animated the main mission quest log, the side mission quest log, and the summary screen at the end.


