Send It!
Background
This game is created during my time at Purdue. The course that I was in allowed for me to gather the necessary skills needed to make this game.
This game was completed as a solo project. There was no team involved in the making of this game.
In short, this game is a simple arcade racing game. However, there is a twist to this game, and that is instead of the usual super cars or race cars. It is the vehicles of the average farmer or driver.
So, in the simplest sense, the player will just have to,
Send It!
Models
As I previously stated, this game was made solely by me. So, I had to make the models.
Bellow are the models for the vehicles that are in the game.
These are not the final models. They still need touched up and textured.
Sedan
Now a lawn mower is not the first vehicle a person thinks of when it comes to a racing game, but this does fit the game that I have made to the tee.
This mower is modeled after the early 2000s and late 90s Simplcity Mower. I have tweaked the design a little so that the steering wheel is more prominent.
Mower
Where would a redneck, midwestern racing game be without a dirt bike.
This bike is modeled after the 90s era of Honda dirt bikes. I chose this design, because of its easy recognizability. The design though as been modified a little, since, I did not not want to copy the design of the original Honda.
Dirt Bike
Maps
For this game I have decided to make three different maps. Each of which offer different playability to the player.
The maps are shown bellow with their sketches and the white box for each of them.
Each map will also offer different terrain for the player to race on. From, grass to concrete, the player will have their choice in three different options.
Grass
This is the first model that I made for the game.
This model was not made direct for this game specifically, but it was a model that I prevousily made for another course that I took at Purdue, and I thought that this model would be perfect for this game.
The car that it is modeled after is a 2001 Toyota Corolla. I choose that car for the model for two reasons. One is the simple design of the vehicle and two is that I own this car.
Corn
Programming
Game Engine
Back Roads
Send It’s programming is something that I have never learned for any of my video games. This game is made using C++.
I decided early on in the development process that I wanted the game to use mainly C++. I decided to go with Unreal Engine 5 because of the real-time renderer options. This allows me to not have to worry about the render and the lighting system for the levels that are programmed.
Using Unreal Engine 5 also allowed me to make special material instances for certain elements that had to be programmed. Unreal Engine 5 has provided me with the ability to use C++ classes as the parents for the blueprints. The blueprints are the things placed on the levels. But the C++ code is the blood of the blueprint actors. Unreal’s blueprints are the way that the engine uses to calculate its physics-based code. However, behind it all is C++.
The very first thing that I programmed in C++ for the game was the base of the vehicles. The base is the car base.
Car Base
Code
Engine
Code
Streak Mark
Above is the code for the wheel actor. The wheel actor sets the turn angle for the vehicle to move. It can also be affected by the engine if it is set to.
For the most part, the actual code of the wheel is determined by the vehicle movement component. The vehicle movement component does all the calculations for movement, throttle, brake, etc. The component does the basic stuff for the day-to-day tasks of a vehicle. I made calls to the component so that it knows what it is to do. For example, the engine.
As I previously stated the vehicle movement component does the majority of the physics-based calculations as well as the vehicle movement. The code that I did for the engine is as follows.
Above is the input functions for the throttle. The throttle is a simple call function like the turn. However, in the reverse functions. I have included some code to set up a drag mark emitter.
Apart from the base of the vehicles. I have decided to make them react to swift motions a little like their real-life counter part. The emitter is rather simple. It is a special effects node that is placed onto the mesh. The code then calls the nodes to emit the trail emitters based on the movement speed of the vehicle. The emitter is a black streak that resembles tire marks. It is like a burnout or a drift.
As I previously stated, the first thing that I programmed for the Send It game is the base for the vehicles.
The base for the vehicles is programmed using C++. I made the base of the car since it allowed me to use the most finished mesh at the beginning of the programming stage. The car is modeled after my personal vehicle. And because it is my personal vehicle. I tried to make sure the physics engine of Unreal mimicked the car’s real-life physics as possible.
To the left is the physics based turning animation for the car base. For the code it was rather one of the simplest parts of the creation of the base. The code for the turn mechanic is a simple function that points to vehicle movement component that Unreal has built it. This movement component is simular to the movement components of other actor types.
Code
The Trails functions are called when the vehicle is stopped when the speed is going a certain amount. The emitter will then emit a black streak along the ground. The next effect that I programmed for the car was the nitrous.
Nitrous
The nitrous system was a fun yet challenging thing to program for my game. The system is mostly determined by Unreal’s thruster component. However, the function still needed to have certain variables set by me in order for it to function in the way that I saw fit for the game. As well as have another function that gets called when the nitrous has run out or the shift key has stopped being pressed.
Code
The code for the Nitrous is one of the things for the vehicle base that took the longest time. Because of the nitrous having multiple issues with colliding with the physics system. At the begining, the nitrous system caused the car to fly and spin. And through to calculations and estimates. I found the best placement of the beam of the emitter/thruster for the nitrous system boost.
AI Path Follow
The final big hurdle that I faced when making the vehicle base was the AI Path Follow.
I needed to have the vehicle base have a function in it that would have a non-player-controlled vehicle follow a distinct path that is laid out in the level. I completed this by making a new class for the path actors. I then placed a function inside the vehicle base.
Code
Above is the cast for the path follow function. The function checks if the placed vehicles in the level are controlled by the player. The function will then take control of the vehicle and calculate the closest point to the placed path node. Then it will control the vehicle and steer along and drive along the path.
I decided to add this in the main class so that the other vehicles would automatically have it in them when they are placed into the level.
This was the main base for all vehicles of the game Send It. The car is the vehicle used as the default for the base. Because of the average wheelbase for the vehicle movement component.
If you are interested in the full code of the game the Git Hub is linked below.
Git Hub For The Game