Project Type
Engine Used
Languages Used
Primary Roles
Main Skills Developed
|
University Team Project
Unreal Engine 4
C++, Blueprints
Technical Lead, Car Physics Programmer, AI Programmer
Unreal C++, SVN, Technical Knowledge (Kart Physics, AI etc), Communication, Team Working and Leadership Skills
|
Dimension Drifters - a fast paced, split screen kart racing game - is the project I helped to develop for our final team project module at university.
During this project, I implemented many difficult aspects that were vital to the game's success and helped the other programmers with their code. I also managed the source control software (we used SVN combined with TortoiseSVN) and worked closely with our designers/artists to develop and implement interesting features, such as the item pickups and track obstacles.
During this project, I implemented many difficult aspects that were vital to the game's success and helped the other programmers with their code. I also managed the source control software (we used SVN combined with TortoiseSVN) and worked closely with our designers/artists to develop and implement interesting features, such as the item pickups and track obstacles.
Official Trailer
The above trailer shows some of the most exciting aspects of Dimension Drifters.
Development Video and Gameplay Footage
The above video is a development reel showing how our game progressed. We had three main weeks where we worked on it - Game Sprint 1, 2 and 3, and then worked on it part time between sprints.
Kart Physics Breakdown
Several parts of the car physics can be seen below, and I try to explain what each part does.
Each frame, several calculations are performed on the car such as acceleration, speed limit applications and steering. Motorcar features (components that handle additional features such as drifting and boosting) are also processed in this section.
Suspension is applied to each car wheel each frame. My system is a raycast suspension system, which means that raycasts are used facing locally downwards at each wheel of the car, and forces are applied to the main body based on the distance that each wheel is away from the ground. This can be pictured below (the red lines are raycasts).
Apply steering, forwards and backwards movement each frame and remove any sliding. To remove sliding, the sideways world velocity of the car is taken, transformed into the car's local space and modified according to a curve. This new value is combined with the original vector, converted back to world space and then the car's velocity that frame is updated accordingly.
When the car boosts, customisable data is found for the current boost level, the rest of the car systems are informed via delegates, the car's current speed is modified and timers are used to control how long the boost should last.
There are many more aspects to the kart controller, however this was a snippet of a few vital parts. I cannot currently release all of the code as it is still being marked by my University, but I will put it on GitHub when I can.
Gameplay Gifs
Source Code
The source code for this game is currently withheld due to it being a part of my university module. It will be added after this university year has finished.
Demo Download Link
Please find the download link to a playable demo available here: https://drive.google.com/file/d/1ucSEkjZh5mLadj62FZkrTiJQDEmQnQQx/view?usp=sharing
Once downloaded, please extract the contents into a folder and run the exe file.
Once downloaded, please extract the contents into a folder and run the exe file.
Demo Controls
Function |
Keyboard |
PS4 Controller |
XBoX Controller |
Accelerate |
W |
Right Trigger |
Right Trigger |
Brake/Reverse |
S or Spacebar |
Left Trigger |
Left Trigger |
Steer |
A or D |
Left Analog Stick |
Left Analog Stick |
Use Item |
E |
Left Bumper |
Left Bumper |
Pause |
Escape |
Options |
Start |
To drift, please hold both accelerate and brake/reverse keys, as well as a steering direction. If you drift for long enough, you will get a boost at the end (depending on how long you drift).