The Carrr Engine is a custom racing game engine created by a group of seven students (including myself) at Breda University of Applied Sciences. The project ran for 16 weeks in total, however, I joined around halfway through, so I only worked on it for the final eight weeks. The engine was developed to run on both Windows and PlayStation 5. It supports DualSense controllers on PlayStation 5, and on Windows it supports controllers (any connected through Windows), keyboard and the Logitech steering wheel as input devices.
My main contributions to this project are related to the loading (and unloading) of levels, refactoring of the input system, and Logitech steering wheel support.
This project is hosted on the BUas GitHub servers. Due to the inclusion of the PlayStation SDK, it cannot be made publicly available. However, code snippets of my contributions are included below.
Carrr Engine
Screenshots



| Team Size | Engine | Platform | Role |
| 7 | Custom Engine – Carrr Engine | Windows and PS5 | Engine Programmer |
Personal Contribution
Table of Contents
Input System and Steering Wheel Integration
When I joined the project halfway through development, I started by focusing on the engine’s input system. During the first half of development, the input system had already been created by Ian Hu and was divided into multiple classes. My task was to refactor the InputManager into a single base class, which could be inherited by the Windows or PlayStation side of the engine to retrieve input data from their SDKs, and turn it into a component that could be added to the player object. This would make it easier for the end user to access and use the system. Besides that, I also added some additional features as part of this rework, such as rumble support for Xbox controllers and conducting research into how to implement rumble support for the DualSense controllers.
While developing the engine, we gained access to a Logitech steering wheel and were tasked by our lecturers to implement it as an input option for the engine. When I completed my work on the input system refactor, this task landed on me (with a bit of volunteering, since I am quite a fan of wacky input systems).
While integrating the Logitech steering wheel and reviewing the documentation provided by Logitech for their SDK, I noticed it was missing some important details. To make it easier for us to look back on the integration and understand how everything worked, I created additional documentation explaining how to work with the button mapping and how the SDK functions interact with the engine code. This documentation can be found by following this link.
A demonstration of all the in-engine effects that can be applied to the steering wheel is shown below on the left, with the steering wheel in action shown below on the right.
Implementation in code:
Loading and Unloading Levels
Besides my work on the input system, I was also charged with creating a resource manager that handles the loading and unloading of levels and overall management of resources. To start, I went through the engine and noted down which resources the engine has, and which needed to be managed by the resource manager. This document can be found by following this link. A demonstration of the first iteration can be seen on the left below, and the final version that loads from the main menu can be seen on the right.

