Roving Rovers is a lunar rover simulation game developed by Enigmanaut Labs in association with the University of Adelaide. Players must design and control their own moon rovers to complete objectives and build up a lunar colony.
Roving Rovers has been available at the University of Adelaide’s annual Australian Rover Challenge every year since 2021 where it was updated with new content to match the competition’s tasks and goals for visitors to play. It has also been presented in Adelaide’s MOD. museum for a month-long exhibition, displaying the evolution of the game.
Development Environment:
Unity, C#
Role:
Lead Programmer
Release Platform:
Windows, Steam Deck
Team Size:
Up to 12
Release Year:
Ongoing
Development Time:
5 years
Overview of Contributions
Physics and Movement
Managed the control of the physics of objects within the game world, including complicated and dynamic Articulation Body driven vehicles.
Implemented physics controlled movement tied to player input through rover parts, such as wheels, steering hinges, pistons, and suspension.
Input
Allowed for player input across devices in all areas of the game, from driving, menus, and RTS style, top-down view points. These needed to account for the differences and limitations of various devices including mouse, keyboard, gamepads, and touch screens.
Added ability for players to rebind controls, not only globally, but for individual rover parts, allowing them complete control over their activation.
Implemented the ability for players to change which rover they were controlling at any time.
Artificial Intelligence
Created a Finite State Machine based system for creating jobs for AI controlled rovers. Players could then assign these jobs to any rover not currently controlled by a player.
Allowed players to create and modify ‘zones’ for the AI rovers to interact within, defining what containers they can interact with, or areas they can build.
Implemented Unity’s NavMesh system for calculating paths. The NavMesh updated dynamically as players built or removed dynamic structures or adjusted the terrain.
Setup AI controlled rovers to use physics based movement on the NavMesh, accounting for player designed rovers and custom part layouts.
Rover Builder
Created the in-game rover editor, allowing players to design their own rovers. Players can create, pick-up, move, rotate and scale parts which snap together at pre-placed points.
Added a reflection based system for modifying rover part values including keybinds, allowing designers to dictate which values players will be able to modify in the rover editor.
Created a colour selection menu, as well as a custom shader to allow players to recolour their rover.
Implemented a gamepad controlled cursor for interacting with the rover builder on controllers.
Allowed players to save and load built rovers to JSON files.
Management Mode
Created an RTS style management mode that allows players to interact with their lunar colony from a top down viewpoint.
Implemented construction, allowing players to place and connect buildings, which can then take resources from the player or AI to construct.
Implemented terrain modification, allowing players to sculpt terrain, before using a tool on their rover to finalize it.
Split Screen Multiplayer
Updated the game to support up to 4 simultaneous player inputs. This includes input while driving, and in the rover builder and management mode menus.
Setup split screen support, including separating parts of the UI per player, including the functionality of the rover builder and management mode.
Project Management
Created and organised required tasks for implementation or for bug reports.
Managed the allocation of tasks and issues to junior programmers.
Assisted and upskilled junior programmers and designers in programming tasks.
Outreach
Presented the game at booths at various conventions and events including the Australian Rover Challenge, MOD., SAGE, PAX and Gamescom.
Conducted workshops for kids at libraries with a modified version of the game.