๐ TERRA
Choose any real place. Turn it into a playable 3D world. Make a land decision. See who gains, who pays, and why.
Inspiration
Every year somewhere, a forest gets cleared, farmland gets paved, housing expands, or an airport gets approved.
The people who will live with those choices longest are often young people, yet they are rarely in the room when the decisions are made. And even when they are invited, understanding GIS layers, hydrology models, land degradation indicators, and planning trade-offs can require years of technical knowledge.
We wanted to change that.
What if a young person could choose their own real community, turn it into a playable 3D landscape from satellite data, and experience a decision before it happens?
Not just:
โDo I like this plan?โ
But:
โWhat happens to food, water, land, livelihoods, and other people if we actually do this?โ
That became TERRA.
What it does
TERRA turns real satellite-mapped landscapes into playable land-use simulations.
Our flagship demo uses a real valley in Machakos County, Kenya, but TERRA is not tied to one map.
๐บ๏ธ Build any real place
From the home screen, a facilitator can choose a location on a map.
TERRA uses:
- Copernicus DEM GLO-30 for elevation
- ESA WorldCover 2021 for land cover
It then builds the landscape pipeline:
terrain โ land cover โ drainage โ settlement โ parcels โ playable 3D world
The result is not a hand-built game map.
It is a real geographic landscape converted into a space people can explore and plan on.
Scenario assumptions such as rainfall, soils, yields, and ownership are shown separately from the observed geographic data.
๐ฎ Learn by making real decisions
Players take on short missions such as:
- Build the Airport
- Feed the Valley
- Water Runs Downhill
- The Big Storm
- Drought
- Restore or Prevent?
They can inspect simple lenses such as farmland value, flood reach, and steepness.
But TERRA never tells them which option is โcorrect.โ
They have to choose.
๐ง๏ธ Then the land responds
After the player builds, seasons play out.
TERRA simulates:
| Water | Land | People |
|---|---|---|
| rainfall | erosion | crop productivity |
| runoff | sediment | food adequacy |
| downstream flow | soil condition | water stress |
| flooding | livelihoods |
The 3D landscape changes with the model.
Fields can become stressed. Erosion scars appear on vulnerable slopes. River buffers become visible. Terraces reshape hillsides. Productive farmland physically disappears beneath a runway.
The player does not just read the consequence.
They see it happen to the land.
๐ Tap a result and see where it happened
The simulation is spatial.
Tap โ22% productive land and TERRA highlights the farmland replaced by the decision.
Tap a runoff result and the contributing land and downhill pathway are shown on the landscape.
This connects the number to the place that produced it.
๐ BEFORE | AFTER
Players can flip between the original landscape and the result using the same camera position.
Instead of comparing charts, they can immediately see:
What did my decision actually change?
โจ Ask TERRA
TERRA also has a small, optional AI explanation layer.
It is deliberately not the simulation.
The physics engine calculates what happened first. Then Gemini can answer contextual questions such as:
- Why did this plan fail?
- Who benefited and who lost?
- What could I change?
- Explain this simply.
The model receives structured facts from the engine.
A number guard checks numbers in the generated explanation against the simulation output before the answer is shown.
AI explains the science. It does not invent the science.
๐ค Negotiate
Land decisions rarely affect only one person.
In multiplayer negotiation, participants represent:
- ๐พ Farmer
- ๐๏ธ Developer
- ๐๏ธ Village
- ๐ณ Conservation
Each has different priorities and minimum rights.
Players see where the costs of their decisions travel, compare compromises, and negotiate a shared plan.
๐งญ Design a future
Participants choose what matters to them and explore possible land-use futures.
TERRA searches candidate plans under hard constraints and re-runs displayed finalists through the full simulation.
Instead of receiving one supposedly โbestโ answer, participants compare alternatives and decide what trade-offs they are willing to defend.
๐ฃ๏ธ My Land Plan + My Voice
At the end, the participant leaves with:
- their original plan
- their redesigned plan
- priorities
- trade-offs they accepted
- restoration ideas
- what they learned
- next steps they want to take
- a recommendation in their own words
My Voice helps turn those ideas into something they could actually say at a community meeting.
TERRA is not only trying to help young people understand planning.
It is trying to help them participate in it.
How we built it
Real geospatial data
Each landscape begins as a 64 ร 64 grid of 60 m cells.
For the flagship Kenya landscape, the terrain comes from Copernicus elevation data and land cover comes from ESA WorldCover.
The same landscape compiler can generate another playable area from a selected geographic location.
Hydrology
Runoff uses the SCS Curve Number method:
$$ S = \frac{25400}{CN} - 254 $$
$$ I_a = 0.2S $$
$$ Q = \frac{(P-I_a)^2}{P-I_a+S} $$
when rainfall exceeds initial abstraction.
Changing land use therefore changes runoff behavior.
Water is routed across the terrain using D8 flow routing, where each cell drains toward its steepest downhill neighbor.
Erosion and sediment
Soil loss uses a RUSLE-based model:
$$ A = R \cdot K \cdot LS \cdot C \cdot P $$
Sediment is routed downstream and can be trapped by vegetation, terraces, buffers, wetlands, and flatter terrain.
Seasonal land system
TERRA advances land state season by season:
$$ X_{t+1} = F(X_t, A_t, \xi_t; \theta) $$
where the state includes variables such as:
- soil depth
- soil organic carbon
- productivity
- groundwater
- population
The land-use decision changes that trajectory.
The 3D world
The interface is built with:
- TypeScript
- Vite
- three.js
- WebGL
The landscape uses lightweight and instanced geometry so a full valley can remain interactive on a normal laptop.
The world includes:
- real terrain relief
- rivers and drainage
- village structures
- airports
- roads
- crop states
- terraces
- river restoration
- vegetation recovery
- erosion marks
- flood exposure
Every environmental visual is driven by an existing simulation state.
The graphics never change the scientific result.
Build any real landscape
Our landscape builder uses:
- Python
- NumPy
- Rasterio
A location can be selected and TERRA reads the required windows of Copernicus DEM and ESA WorldCover tiles, then constructs the playable landscape.
We deliberately do not call this a โvalidated digital twin.โ
It is a playable geospatial scenario landscape built from real terrain and land-cover data with explicit assumptions layered on top.
Challenges we ran into
Real maps can still produce wrong interpretations
When we tested a location in San Francisco, our first pipeline displayed a major drainage path as a river even though the satellite land-cover data did not show permanent water there.
That exposed an important distinction:
A modeled flow path is not automatically a mapped river.
We changed the pipeline so it checks the available land-cover information and labels uncertain features honestly.
We would rather display:
Modeled drainage line
than pretend the model knows something it does not.
AI likes confident answers
Language models are very good at explaining.
They are also very capable of producing confident numbers that were never calculated.
So the AI is never responsible for simulation results.
The physical model runs first.
AI receives the result afterward.
If a generated numeric statement cannot be reconciled with the supplied simulation facts, the app rejects it.
Reproducibility
We discovered that a Python tie-break could cause the same landscape to classify a parcel differently between runs.
We removed the nondeterministic behavior.
For planning software:
the same place and the same inputs should produce the same result.
Complexity
At one point TERRA had more controls, more AI interactions, an open chat, additional timeline controls, and more UI.
We removed much of it.
A young participant should not have to understand the model architecture.
They need to understand two things:
Where did the consequence happen?
Why did it happen?
The complexity belongs underneath the interface.
What we learned
Seeing is different from reading
A chart saying farmland decreased is informative.
Watching productive fields disappear underneath an airport is memorable.
For participatory planning, the landscape itself should explain the result.
The most important question is not always โwhat is optimal?โ
It is:
Who benefits from this choice, and who carries the cost?
A technically efficient plan can still create an unacceptable burden for somebody else.
Uncertainty should be visible
TERRA separates:
- observed geographic data
- derived information
- scenario assumptions
- calibrated parameters
- model outputs
The goal is not to make a simulation look more certain than it is.
It is to make its assumptions understandable enough that people can challenge them.
What's next
With partners such as UNCCD, TERRA could be adapted for:
- rural classrooms
- youth planning workshops
- community land-use meetings
- restoration programs
- participatory planning exercises
- facilitator-led negotiation sessions
Because the landscape is generated from open geospatial data, the long-term goal is simple:
Let young people everywhere play decisions on their own land before those decisions become concrete.
We are not trying to train gamers.
We are helping train the next generation of land leaders.
#TERRA #UNCCD #LandUsePlanning #ClimateTech #Geospatial #GIS #SatelliteData #ParticipatoryPlanning #YouthVoice #LandRestoration #ResponsibleAI #AIForGood
Built With
- climate-tech
- copernicus-dem
- css3
- d8-flow-routing
- esa-worldcover
- gemini
- geospatial
- gis
- html5
- hydrology
- node.js
- numpy
- python
- rasterio
- responsible-ai
- rusle
- supabase
- three.js
- typescript
- vite
- vitest
- webgl
- websockets
Log in or sign up for Devpost to join the conversation.