Rover's Last Day
Dates: Jan. 19' - Mar. 19' (3 months)
Language: C/C++, C#
Tools: Unity3D, SolidWorks, EAGLE, Arduino
Miniature Stewart Platform
Developed motion platform visualizer.
Fixed critical networking bug.
Take control of a solar-powered rover on a distant planet, discovering its mysteries while collecting scientific data. In Rovers Last Day, you take control of a solar-powered rover on a distant planet. The rover only has two minutes of battery power left, and your mission is to collect as much scientific data as possible within that time. The game features a custom made controller and a small Stewart Platform. The entire project was made over a three month period as part of my Simulation and Visualization Bachelors at Full Sail University.
Built Stewart Platform
One of the first things I started working on for this project was the Stewart Platform, which I modeled in SolidWorks, fabricated using various machines, and assembled together. I hardcoded an animation to display the platform's range of motion. Later, I replaced my animation with a program to dynamically control the platform; The new code uses serial communication to control how the platform moves. The game uses that form of communication to move the platform based on the pitch and roll of the rover.
Built Custom Controller
Like the Stewart Platform, the controller was modeled in SolidWorks and 3D printed. Using an Arduino Leonardo, the PC detects my controller as an input device, which means I didn't have to set up a serial connection for the controller in order for it to communicate with the game.
Making the World Appear Round
The world the player is exploring is divided into sections. The game is programmed to move sections around depending on where the player is. The player is never made aware of this, and it gives the appearance that you were driving around a spherical planet.
Detached Camera Movement
The camera I originally made for the game was fixed behind the rover. This could be a very jarring perspective at times. My solution was to separate the camera from the rover, turn it into a flying robot, and have it automatically follow the rover. The way the robot moved eased the movements of the camera. I also added the option to control the camera manually using the keyboard and mouse. This allowed for a second player to help in navigating difficult terrain by repositioning the camera for a better point-of-view.
The rover uses Unity's physics system and wheel colliders, which took a lot of research and fine-tuning to get the rover moving just how I envisioned it.
What I've Learned
The day the project was due, the game was showcased to different instructors and students at school. The feedback I received was positive. I received good insight into what people enjoyed about the game and how I could improve its design. It was a joy to work on this project and to incorporate the different things I learned along the way. Overall, I am very pleased with how it turned out, and I look forward to the next project.