Engine

The video above shows development work on the terrain simulation showing multiple sediment layers. Demonstrating layers of earth and gravel moving. Earth and gravel sediment types can be seen sliding down hills and moving differently underwater.

Engine Roadmap

At a high level we are developing the engine on three stages. Each stage will improve aspects of the simulation along with expanding the scope of the simulation domain.

  1. Aquarium
    • Simulate the world as a tile of landscape in an aquarium.
    • The world is a single piece of bedrock.
    • Supports multiple soil and sediment types that all interact with flowing water
    • Water simulation using ‘shallow water’ equations
    • Ground water simulation. Penetration based on soil and rock porosity and evaporation.
    • Biosphere model based on seeding plants & trees. Seeds are sensitive to:
      • Temperature,
      • Rainfall,
      • Soil quality
      • Sandiness of soil
      • Soil depth
      • Competition
  2. Islands
    • Build multiple floating islands that share an atmosphere inside a ‘greater aquarium’.
    • Islands are created by erupting a volcano that releases lava that cools to form the bedrock.
    • Water, earth and lava can fall from one island to another carrying heat with it.
    • Floating islands in can interact to form puzzles
  3. Planetoid
    • Simulates the world as a ball in space.
    • Planets are small.. Small enough to simulate everything on them for a game.

Simulation

Ocean and Atmospheric simulations combine to feed the Biosphere simulation with data using the model below.

Terrain sim + Water sim + Atmosphere sim -> Biosphere sim 

The Biosphere simulator manages all the life-forms on the surface of a planet, and what by-products those life-forms create to export back to the landscape, such as ‘Biomass’ that then rots to create more soil to compete the life cycle.

The technology challenges in the new engine come from creating and running a rich and detailed simulation engine and feeding that simulation data to the GPU to keep it busy.

Load balancing resources such as memory and compute power between the CPU and GPU is the name of the game.

The landscape sand, earth and water simulations run on the multi core CPU to get the most out of the extra memory. This allows us to build and simulate a multi layer sediment model of the terrain (which is memory hungry but only requires fast access when land layers are modified which is less frequent) along with a real-time water simulation.

This leaves the GPU memory and power for volumetric simulation of the atmosphere as well as rendering.

Today on early prototypes of the new engine we can achieve over one million individually simulated life forms on an average modern multi-core CPU. Move to a high end CPU (16 + cores) and you are in the realm of 10 million individual simulated organisms.


The 2011 Earthsim 2 planet engine

The videos below show what we achieved with the Earthsim 2 engine from 2011. We hope to go far beyond this with the new engine in the coming years.

At the end of 2011 we had the planet engine able to resolve an earth like planet down to below 1cm of detail. The videos below show some of the work we did on the way to hitting the 1cm resolution milestone.

Putting a an ocean onto the surface of Mars allowed us to clearly see ancient river channels. Three years before NASA made a similar announcement.
Very high resolution simulation and rendering of the planets using the latest satellite scanning data at the time.
Early work on Dinosaur animation blending in 2007. Mainly showing how the Acrocanthosarus can bend its neck left right and roar high and low. Some early herding and predator prey behaviors too.
Some of the pieces we implemented through 2011
From the first time we got the planet rendering down to 10M accuracy