DRILL DERBY: my open-source game prototype

Moritz Kirschner

| 2-minute read

DRILL DERBY is a 2-4 player couch-multiplayer action game. Crash into your opponents and be the last player to survive. Play with multiple people on a single keyboard, using Xbox 360 gamepads or any combination thereof.

You can check out the source code here or download a playable Windows or macOS build.

Overview

I developed this game prototype in C# using the Unity Engine. The alpha build on display/linked here is considered feature complete with local multiplayer, a menu for mapping input and a rudimentary gameplay loop. The next step would be to implement networked multiplayer functionality before expanding the game in any other way.

Tell me about the cool stuff.

About 2.5k lines of code

Character Input

Input is abstracted using the command pattern (See CharacterInput.cs). This lays the foundation for local (and later networked) multiplayer.

Input Mapping

InputMappingCursor.cs handles the mapping of player actions in the main menu lobby. It assigns player actions to any input from the keyboard and any Xbox 360 gamepads.

Cold Start

The game can be cold-started from a game scene as long as the scene contains a WorldManager. We call the singletons InputManager and GameManager which come with a default configuration to quickly test gameplay without going through the menu.

Character Controller

The heart of this game is the DrillCharacterController which inherits from PhysicsObject. PhysicsObject implements realistic forces such as gravity and drag on objects that move in the game world (the result of which I refer to as extrinsic velocity). However, for an arcade-like game like this, controlling your player through realistic forces only often results in floaty gameplay. Therefore, PhysicsObject also implements a virtual function CustomMovement which is called once per physics update. This can be used to set what I call “intrinsic velocity” and result in instantaneous/erratic movement. DrillCharacterController makes ample use of this and the result is snappy movement which still feels grounded in reality.

Other details such as freeze-frames and particle movements on hit are also implemented there to add to satisfying game feel.

And would there be a better closing bit than a glimpse of the action?

suck it, green
- Red

That's it for now :)
Get notified about new posts