Carrr Engine
Role
Engine / AI Programmer
Engine
C++ & DirectX12 (Windows) / PS5
Duration
16 weeks
Team Size
5-7 Developers
Custom engine developed for Windows and PS5 during my second year at BUas. Project was made over the span of 16 weeks: 8 weeks with 5 team members, 2 more joined after. This engine was developed to be used to create racing games. For this project I focused on optimization, racing AI with steering behaviors and general game engine architecture.
Personal Focus & Contributions
Optimization was an important part of this project. To identify performance issues and solve them I used multiple tools such as Intel's VTune, Superluminal and Nvidia NSight. One of the first steps to improve the performance was to implement frustum culling. For this project we collaborated with a group of technical art students. They generated us racetracks in Houdini and we implemented an importer. The tool in Houdini allowed us to subdivide our levels into chunks with a very precise control to make frustum culling especially effective.
For this project, I worked on racing AI using a finite state machine and steering behaviors. For example, the cars used seek and arrive behaviors to navigate the racetrack, or flee and avoid overtake other cars or dodge obstacles.
The racetrack class contained a racetrack spline that provided additional information to help the AI cars navigate the track, such as track width, so they knew how much safe space they had around them, and upcoming turn steepness, so they could properly slow down and not drift out on turns.
Optimization
Racing AI / State Machine / Steering Behaviors
Cars trying to overtake one another.
AI testing tools
To add to QA of our project, worked on implementing AI test tool. A couple of examples of what you can do with this tool:
-
Test AI performance on different tracks.
-
Customize parameters and spawn AI cars using those parameters.
-
Track progress and AI states of all spawned cars.
-
Record and export parameters with the best performance.
Other optimization I worked on was using AABBs to improve collision and implementing a model manager to increase load time and memory utilization.
More general works was also done on racing AI, which included baking important information into the racetrack class and adding variable AI controller update rate.
Force spawn cars facing the opposite track direction.