top of page

Year 2 project at BUas. Finished on January 21st, 2023.

CarrrEngine

CarrrEngineSimpleLogoTL.png

Project Information:

  • Project Type: Custom game engine

  • Game Genre: Racing

  • Role: Engine / AI & Gameplay programmer

  • Team Size: 5-7

  • Time Frame: 16 Weeks

  • Engine: C++ & DirectX12 (Windows) / PS5

  • Tools: Jira, Git

Project Summary:
Custom engine developed for Windows and PS5. 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.
My Contributions: 

  • Racing AI.
  • ECS (Entity component system).
  • Optimization and more...

Optimization

FrustumGif.gif

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

  • Nvidia NSight

Performance optimizations included:

  • Frustum culling - shown in the video. Maps were generated in Houdini, where we subdivided them into various chunks and clusters used to cull different parts of the model.

  • Improving load times, optimizing collision / AABB generation, working on a model manager.

  • General performance improvements: optimizing AI performance and more.

logo-banner-blur.png
image.png
nvidia-nsight-systems-icon-gbp-shaded-256.png

Racing AI / State Machine / Steering Behaviors

In this project I worked on racing AI. Creating racing AI required me to go through several steps:

  • Implemented Finite State Machine class


FSM.png
AIGif.gif
Steering.png
  • Added  AI Controller that uses steering behaviors to move along the track:

  • Implemented several states, such as:

  • Implemented racetrack class and more...

image.png

Testing AI - Spawning cars on top of each other to see if they can find their way onto the track (Cars are spawned facing the wrong direction):

SteeringGif.gif

Even though there is still a lot of room for improvement for this AI, considering that it was made in 3.5 weeks I was quite satisfied with the result.

AI testing tools:

TestRoomGif.gif

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.

image.png

Entity Component System (ECS)

ECSCodeExample.png

For this project I worked on implementing a simple Entity component system. Racing games don't benefit much from an entity component system so we kept it very simple. On the left is a short code example from ECS class. This example includes two functions: one which returns first component of a specific type and another  which is used to add new components to an entity. While not perfect this ECS was sufficient for the game of our genre.

Game project and UI:

For the game project, I added a camera class to make setting up multiple camera presets easier.

My other task for the game project was adding UI elements, such as:

  • Progress, position trackers.

  • Mini-map which tracked and showed positions of all cars on the track.

Carrr8.png

Screenshots from the engine / game:

More media:

bottom of page