ROVE - GAME DESIGN & ART

Pre-alpha teaser for the game
(rendered in Unreal Engine, edited in Davinci Resolve Studio)

We used publicly-available DEM data to  recreate Mars at 1/20th-scale

We used publicly-available DEM data to recreate Mars at 1/20th-scale

An early rendition of voxelized Mars. I later mapped an 8K color texture of Mars' surface across the entire voxel planet to add more detail and surface material variation

An early rendition of voxelized Mars. I later mapped an 8K color texture of Mars' surface across the entire voxel planet to add more detail and surface material variation

After applying the visible light satellite image texture and adjusting the atmosphere, I rendered this for use as a loading screen background

Mars' North Polar ice cap. 
We were able to eliminate most distortion caused when equirectangular projected data is mapped to a sphere by applying slight corrections to the transformation to six separate cubemap tiles

Mars' North Polar ice cap.
We were able to eliminate most distortion caused when equirectangular projected data is mapped to a sphere by applying slight corrections to the transformation to six separate cubemap tiles

Concept render showing Mars with an artificially-thickened CO2 atmosphere

Concept render showing Mars with an artificially-thickened CO2 atmosphere

Early landscape foliage scattering tests. I used Voxel Plugin's Spawner to generate cliff details, rocks, etc. based on slope ranges and biome data.

Early landscape foliage scattering tests. I used Voxel Plugin's Spawner to generate cliff details, rocks, etc. based on slope ranges and biome data.

Playtesting menus & gameplay. We had to modify Unreal Engine (4.27) source so our custom spherical gravity component would work. We are accurately simulating Martian gravity (373 cm/s²)

Mars and Phobos
(distances not to scale, but it sure looks cool!)

Mars and Phobos
(distances not to scale, but it sure looks cool!)

Mars and Phobos
(distances not to scale)

Mars and Phobos
(distances not to scale)

Early playtesting of my 'Pinging' mechanic, which includes visual responses when hits occur.
(Made using blueprints)

(distances to scale)

(distances to scale)

(distances to scale)

Gameplay testing, trying to get to a human settlement before nightfall

Dialog UI look dev
(made in Photoshop & Illustrator)

Dialog UI look dev
(made in Photoshop & Illustrator)

Where it all started: Our entry in the GMTK Game Jam in 2019, completed from start to finish in ~40 hours over two days. This concept game is what Rove is based on.

Game art
(rendered in Unreal Engine & edited in Photoshop)

Game art
(rendered in Unreal Engine & edited in Photoshop)

ROVE - GAME DESIGN & ART

'Rove' is a driving exploration-adventure game that takes place on Mars. After forming Olympus Mons Games, my brother Jeff and I started this project after a much simpler version we made came in 7th out of over 2500 entries in the GMTK Game Jam (2019). Based on the response we got, we set out to develop Rove into a fully-fleshed out experience.

======================
A Huge, Spherical Game World
======================
Since our goal has been to enable players to drive anywhere on Mars, we have harnessed the power of Voxel Plugin for Unreal Engine to render our game world as a 1/20th-scale planet. We used the highest-resolution Digital Elevation Model (DEM) of Mars available, which allowed us to accurately resolve surface features as small as 200 meters. The rest of the detail was populated by a combination of mesh scattering and biome-based 2D (and in some cases 3D) noise operations on the voxel surface data.

=====================
Martian Environment Design
=====================
- Atmosphere --- Using the SkyAtmosphere component and help from a scientific paper on the scattering properties of the Martian atmosphere, I was able to closely approximate the thin, CO2-rich atmosphere of the planet. I then played a bit with the values to match our art style for the game.
- Real-world Space Skybox --- Since our game world is a planet, our "Skybox" would need to be outer space. Using imagery from the European Space Agency's GAIA space telescope, I transformed the image in Blender from spherical to equirectangular projection and applied the image to a custom SkySphere actor in the main level. When the player looks up, they know they are looking at the same sky that they would be were they actually standing in that location on Mars in real life.
- Day/Night Cycle --- Since we began development in Unreal Engine 4.27, I had to design a custom Day/Night cycle for the game. This was accomplished by first calculating the correct initial rotation angle for the Sun (Directional Light actor) to match the orientation of our planet in World Space, then accounting for the tilt of Mars' rotational axis (25.2-degrees). Once the math was figured out, I simply encapsulated the directional light into a Blueprint actor to parameterize relevant values, and automated the cycle with a looping Level Sequence.

=======
Art Style
=======
The stylized look of Rove is heavily influenced by concept artists Syd Mead (Bladerunner, Mission to Mars), and Don Dixon (cover artist, Mars Trilogy by Kim Stanley Robinson). We like the painterly feel of the colors in these artist's imagery, but also want to retain the "inked sketch lines" that are a hallmark of Syd Mead's work.
- Post Processing --- I created two custom post-process materials, one for detecting mesh edges and drawing outlines (similar to a Sobel filter), and the other for control over the vibrance and bit-depth of the SceneColor to achieve a small amount of 'toon-shading'.
- Textures --- All textures used in the game are PBR textures run through a custom pipeline I developed to assist in achieving the painterly look, while still being compatible with the PBR workflow in Unreal. Albedo, Roughness, and even Normal maps are processed in this way (the process differs slightly for Normals since we don't want to destroy the directional information, only simplify details)

================
Technical Challenges
================
- Precision --- Unreal Engine 4 float values are 32-bit, which means precision errors become a problem at ~65,535m from world origin. Our voxel Mars has a radius of ~170km (or 170,000m). This means that, by default, the player would experience major precision issues in physics and rendering anywhere on the surface of the planet. To solve this, we implemented World Origin Rebasing which places the origin deep underground beneath the player as they travel across the surface.
Unreal Engine's systems are built with the assumption that Z+ will always be up (flat world). On the surface of our planet, Z+ = upVector would only be true on the North Pole, so we had to account for this in a few ways.
- Spherical Gravity --- Our custom gravity component matches Mars' reduced g (371.1 cm/s²), and it's direction is set by comparing player position and world origin (which is always below the player).
- Materials --- The landscape material had added complexity, as the (local space) triplanar-projected material I created needed to itself be (world space) triplanar-projected over the entire planet. The local space transformation was done by subtracting local position from world 0,0,0 (to prevent the ground material shifting UVs every time the world origin rebased). The world space (planetary) mapping was done by transforming the world position to Cartesian (Lat-Long) coordinates and using that as the lerp alpha.