John’s Road is a 3D game that blends immersive storytelling with an engaging driving experience. This game was developed by a two-person team over the course of a semester and features collaborations with the Berklee College of Music.

Contribution

As the other half of the development team, I took charge of multiple aspects of the game – from programming to design and production. Besides coding the fundamental driving experience, I also designed most of the game’s levels and penned all in-game dialogues.

Tools Used: Unity, C#, Perforce

Technical Details


Path Creation and On-Rail Driving

Early in development, we decided that the game should be a driving game incorporating elements from arcade games and the endless runner genre. We relied on Bézier curves to create the driving path for each level.

One challenge we faced early on was how to streamline the level design process and make the driving experience as smooth as possible. The solution was to have the player’s vehicle drive along the path, with its transform calculated at runtime. The transform is evaluated by plugging in the distance traveled into the Bézier curve, with the addition of lane offset. Both the number and the width of the lanes can be adjusted to fit the needs of different levels. Lerp was also used to smooth the lane transitions.

We used this solution to develop five levels for the game, each featuring different setups and mechanics.

Boss Fight and Ability Cast Cycle

Level 3 features a boss fight between the protagonist and War, one of the Horsemen of the Apocalypse. As the climactic part of the entire game, we aim for this section to be challenging and to leave a lasting impression on players.

During a standard cycle, the boss randomly selects an ability from a pool, which allows add or remove abilities more efficiently during development. For each ability, there are various attack patterns: for example, with the fireball ability, there might be four fireballs coming together, or they might be fired one by one to form a diagonal line. To keep things interesting, the fireball’s size and number are randomized within customizable ranges. To ensure that the fireballs and ground spikes spawn in the correct positions within the lanes, we apply the same calculation logic as described in the previous section.

A great deal of effort was invested in this level, which has indeed become one of the most successful levels according to our players.