A top-down shooter where you play as Justine Time and wield the power to control time within desired areas. Combo that with a wall of bullets and you get wonderful results!
3rd Party Libraries: DirectX 11, FMOD, RapidJSON, Lua C API
My Contributions
Lua Scripting Implementation
Implemented the Lua C API into our C++ Engine.
Worked a lot on streamlining function exposing to Lua. I made a solution with macros that replaced a lot of duplicated code. That also enabled me to implement automatic documentation of the function names, parameters and return types.
Error handling and printing.
Exposed around 30 functions requested by the level designers.
I worked close to the level designers to get feedback and teach them Lua.
Implemented a ScriptComponent that handles game events like OnTriggerEnter and Update.
Implemented the ability to connect objects in Unity and then using them as variables in the Lua Scripts
Story Dialoges
Movement & Damaging the Player
Opening Doors
Enemy Spawning and Light Animation
Navigation Mesh (1 of 2 Programmers)
Created a nav mesh class that hold all the triangles, edges, vertices and how they are connected.
Loading from an FBX file and determining edges and connections from the vertices and indices in the file.
Threaded A* Pathfinding
Implemented pathfinding on the navigation mesh using the A* algorithm.
Smoothed the found triangle path by checking line of sight between waypoints and removing unnecessary points between them.
Created a threaded pathfinder class that objects can request paths from.
Tickets are given to objects requesting paths.
The objects can ask if a path is finished calculating on their ticket and receives the path if it is.
The Pathfinder has a thread that uses a thread-safe queue to always calculates paths or waits for one.
Player Movement
Moving the character along the path to the target.
Smoothly slowing down speed to reach the destination.
Watch the videos above for reference.
Shooting
Always rotating the player towards the mouse position.
Spawn projectiles that move in the player’s current direction.
Watch the videos above for reference.
Camera Movement
Worked on making the camera smoothly follow the player while still being fast enough to show where they’re going.
Watch the videos above for reference.
Reworked Level Exporter
Before we exported objects as types with a list for each type of object, like for example colliders. That limited us to either have colliders as separate objects or to have the collider data in all objects, even if they didn’t need one.
We reworked our entity/component system so I updated our Level Exporter in Unity to match the engine’s design.
I changed the exporter to export objects as the general data all object have like transform and tag. Then the objects are defined by components, like for example ColliderComponent and ScriptComponent. Components were exported in lists with an ID to the object they belonged to.
This enabled us to faster create new types of objects without having to duplicate code.
Level and Object Loading
Updated the level loader to use the new object structure and entity/component system.
Loaded objects and then linking components to their object.
Updated the UI system to our updated component system
Rewrote the old components to work with the new system.
All logic and structure remained the same.
Threaded Rendering (1 of 2 Programmers)
Created a generic TrippleBuffering class that can is used in multiple places of our engine.
This was disabled in the release of the game due to a bug that we didn’t have time to solve.
Debug Tools
In game console with Lua commands.
Debug Arrows.
Team
Below is a list of links to the students with whom I developed all the projects in the second grade with. They are amazing to work with and I recommend them all!