Dream Racer is a mobile education game designed to teach teenagers financial literacy. Players customize their dream car and make payments on their lease every four races.
- Design, create, and implement the three racetracks from concept to final product
- Communicate with art team to plan the 3D assets needed to populate each track
- Work with the gameplay programmer to set up respawn systems for each track
- Balance vehicle stats (speed, handling, boost power) and in-game economy
- Ensure character controller feels good and consistent with the level design
- Create sound effects and properly implement them into the game
- Pitch concept to client and regularly present progress updates
This is what the player sees. Our environment artist UV unwrapped the wall and ground models then painted rock and sand textures for them.
These are the invisible boundaries that the player drives on. The character controller required the ground and wall colliders to be on separate gameobjects with separate tags because cars accelerate whenever they are colliding with an object tagged “Ground”. Having ground and walls on a single gameobject resulted in the car accelerating up walls into the sky.
This bridge is the main reason we used separate meshes for the ground renderer and collider. Originally we put a box collider on the bridge model to fill in the gap; this created a small bump that would frequently launch cars into the air. I duplicated the ground renderer model, filled in the bridge-gap, and imported it into Unity with a mesh collider and the mesh renderer turned off. This created a perfectly smooth ride over the bridge with zero chance of hitting a bad bump.
In our first prototypes each fence model had its own box collider; this resulted in harsh collisions when driven into that could completely stop the player’s movement. I tried extruding the outside edge loop of the ground model upwards to create a single wall encompassing the entire racetrack. This gave us smooth collisions that felt great and ensured the player could never slip through an unintended crack in the fence.