
Logix Championship
An demo F1 racing game that includes features such as online PvP, realistic collisions, fuel consumption system and more
This is a project was a proof of concept for a client. It was made using the Realistic Car Controller Asset from the Unity Asset Store. The features worked on by me are:​
​
-
Car model configuration and tuning
-
Racer real time lap and positioning systems
-
Real time minimap of track
-
Character animations
-
Online PvP using Photon PUN
Car model configuration
Configuring the car model is a relatively simple task thanks to the functionality provided by the Realistic Car Controller Package. We make sure the mesh collider is set to convex, set up the colliders for each wheel independently, set the Center of Mass, change the mass value of the RigidBody component to an accurate value, and set up the configuration for the respective vehicle. I wanted the handling to be a blend of realistic and arcade-y. I also added a few new texture materials for the car so that the player can customize their vehicle. I used simple tiled textures with UV mapping to achieve the required look.




Positioning System
For the lap and positioning mechanics I decided to go with a waypoint system. Throughout the map I have set up triggers that act as invisible waypoints. When any racer activates the current target waypoint, we update that racers next target to the next waypoint.
​
Each waypoint also keeps a count of how many racers pass through it each lap, we use this count to determine the racer's position as they pass through the waypoint.
Minimap System
The minimap is created using the same waypoints used for the positioning system. Using a LineRenderer component, we create a loop by mapping each waypoint to the next one. We complete the loop by rendering the last section of the line from the last waypoint to the first waypoint. This line is rendered above the actual map as shown below.

Each racer has a circle png that follows it's position in real time at the same level that the lines for the map are rendered. This is used to indicate each racer's position. We use a green circle to indicate the player's position.
​
By placing a camera above the rendered lines and using mask culling, I can now have a render of just the minimap while culling everything else. This render is then mapped onto the canvas through a RenderTexture Component. Thus, the player can see the full minimap and their real time position on the map.







