





Project Status
Available Platforms
Project Type
Project Duration
Software Used
Languages Used
Primary Role(s)
Unreleased/on hold
PC
Learning
1~ year
Unreal Engine 4
Blueprints
Solo Dev (All Roles)
The ‘no title’ vehicle project was my first real shot at a game idea.
It has A* pathfinding, racing and/or combat AI settings, smooth movements with custom abilities like speed boost / super jump and gravity switch.
There was also about 6 months worth of 3D design experience involved, as can be seen by the vehicle, the arena level and it’s design elements.
To achieve the mechanic to drive on walls and ceiling, while still applying functional suspensions and motor operation simulations, we disabled the default gravity that is built into Unreal Engine and applied our own forces to the playable vehicle and adjusted cameras and other systems to work relative to vehicle orientation.
Throttle, steering and handbrake all have 2 modes.
First mode is taking inspiration from games like ‘GTA’ and ‘Need for Speed’ and utilizes gear changing, RPM limitations, manual vs automatic transmission and overall a more realistic approach to how the vehicle should be handled.
The second approach takes inspiration from games like ‘Mario Cart’ and only uses acceleration to modify speed and steering.
Suspension
Suspension values are captured by tracing under each of the wheels of the vehicle, and by comparing last frames suspension values with the current frames values we get the spring compression delta value, which combined with suspension stiffness, damping, ratio, vehicle mass and gravity gives us the current ‘force’ to apply to each individual wheel per frame.
Throttle
3 available options for throttling was created, this picture illustrates the one utilizing manual or auto gear switching.Â
Automatic transmission or gear changes are handled outside of the throttle input.
The third option doesn’t use gears and RPM, instead used a more cartoony approach which applies force to the vehicle with acceleration scaling.
Steering
When changing steering value, updating the orientation of physics constraint components (Wheels) creates a smooth and realistic visual transition.Â
Sliding
Our third approach to vehicle input (Cartoony style) uses force to offset active sliding.
Navigation & Tracking
The AI navigates by using 3 front sensors that checks for obstacles and modifies its steering based on the hit results.
The AI also tracks waypoints and each waypoint holds a vector that targets the next waypoint. Based on current vehicle trajectory compared to the stored vector the AI calculates if it needs to slow down or speed up.
Behavior Logic
During initialization we randomize some values to create more ‘individual’ AI behavior, making each active AI unique when compared to each other.
These values consist of ‘braking level’, ‘max speed’ and ‘mistake level’ to name a few.
AI behavior settings also includes aggressiveness toward other racers (heavily WIP),
which would determine how big of a risk the AI is willing to take to cause trouble for other contesters by bumping into them or completely crash into them.
The AI is also aware of its surrounding environment, because of this the AI is less likely to intentionally bump into other contenders during a corner turn since it comes with a high risk of negatively affecting its own driving capabilities.
Safeguards
We also have safeguards in place, if an AI gets out of bounds (The level map) it gets teleported back in, same situation if the AI lands on it back, it gets flipped over.
Gravity Switch
The gravity switch feature is designed to make vehicles able to switch gravity for an ‘arena shooter’ prototype, with vehicles being able to drive on any surface of the playing field.
We temporarily disable our custom gravity when initiating the gravity switch, while also applying an impulse causing the vehicle to float upwards and before reapplying gravity we animate the orientation of the vehicle.
Suspension values are modified to soften the landing, and switched back to normal once the landing is complete.
Super Jump
To launch the player vehicle upwards we apply force to the root of the actor.
Once a certain distance from the ground is achieved we enable air control, allowing player to change vehicle orientation while in air.
No static animations were created, so things like the 360 vehicle flip seen in the video is completely created by player input while airborne.
Flip Control
Flip control is utilizing a similar setup to air control, except we only want to rotate vehicle along the sides (X-axis) and we have to reduce the strength of the flip.
Speed Boost
We add force in the forward axis of the vehicle to apply speed boost.
With a large amount of sliding going on this feature is meant to add extra control to users in situations like curves were you can launch yourself forward.
It’s currently in a WIP state as it was more of a proof of concept and not necessarily something that was going to make it into the finished product.
Depending on player distance from the camera things like view distance, field of view and camera roll gets changed, giving us the cinematic effect seen above.
[WIP] Cinematic Camera Control Implementation.
The continuous function call below was a successful prototype, next phase was to optimize and polish it.