A university project whereby students were tasked with the challenge of working within a team and instructed to: pitch, design, and prototype a game, developing core infrastructure, and gameplay, within a three-month time frame.
The game was developed using a custom developed game engine that makes use of DirectX 11 for rendering, and a custom physics engine that handles full 3D rigid body dynamics.
Spectrum Speedrun is a challenging space racing game that tasks players with flying space ships with an easy to use but hard to master physics based flight model across procedurally generated tracks. Players can compete against themselves or a friend: in split-screen play, in up to three different ships, across two tracks, racing to complete each track in the fastest time possible.
The ships are controlled using a physics based flight model whereby the player has to use the actions provided: acceleration, deceleration, panning and rotation (turning) to control the ship along the track.
The challenge of the gameplay involves mastering a complex set of controls for the ships, but also keeping the ship within the confines of the track. Failure to stay on the track results in a speed penalty, and if a player is to stray too far from the track then they are placed back on the track with their velocity reset to zero.
An important design decision for Spectrum Speedrun was to procedurally generate the tracks. This would simplify track creation, and allow for a seemingly endless amount of track types. The basic principles fpr creating a track are as followed:
- An initial shape is chosen, an ellipsoid or circle.
- The shape is divided into a set of points.
- Each point is displaced across the horizontal plane using a 3D perlin noise function.
- Two additional points are created for each point created during step 2.
- A triangle is formed using three points, as shown in the diagram to the…
- The triangles defined within step 5 are used to build a mesh for the track.
- The track is then populated with portals or other desirable objects
<In order for the team to work as efficiently as possible, roles were assigned early on in the development process. Two members were tasked with developing the engine for the game, whilst another team member, and myself focused on designing and implementing the game.
As a gameplay programmer it was my job to design and implement game modes, features, and mechanics for the game. I mostly focused on core gameplay mechanics and their implementation within single-player. A list of some of the work I carried out on the project includes:
- Implementing the ships flight model.
- Designing and developing portal behaviour.
- Developing an algorithm to distribute portals across any procedurally generated track.
- Handling portal and ship collision.
- Resetting the ship as it strays too far of the track.
- Inflicting a speed penalty if the player leaves the confines of the track.
- keeping track of number of laps a player has completed.
- Develop various different camera modes.
Other duties included helping resolve issues with the track generation algorithm, helping track down and fix bugs, writing user documentation, and creating a video of the game.