Inspiration

What if learning about sustainability was as fun as playing SimCity?

We built Amoria, a 3D city-building game created for the United Nations Convention to Combat Desertification (UNCCD) challenge at Hack for Social Impact 2026.

The problem we wanted to tackle was simple: young people care about the environment, but it's difficult to understand how decisions about land, water, agriculture, and development affect the future of their communities.

Most educational approaches explain why sustainability matters. We wanted people to discover those lessons for themselves.

Instead of telling someone that deforestation increases erosion or that sustainable farming can improve long-term livelihoods, what if we gave them a living world where they could experiment with those decisions?

Our idea was to build SimCity, but make the environment just as important as the economy.

What It Does

Amoria is a browser-based 3D city builder where players manage a small town in a river valley over 20 simulated years.

Players can build roads and bridges, expand housing, develop farmland, construct reservoirs, manage water resources, restore forests, and experiment with sustainable agricultural practices.

But unlike traditional city-building games, every decision interacts with an underlying ecological simulation.

Clearing forests on a hillside can increase runoff and erosion, affecting downstream farmland. Expanding agriculture creates economic opportunities but increases pressure on soil and water resources. Investing in restoration can improve environmental resilience and support livelihoods over time.

The game models how these effects interact rather than relying on scripted outcomes.

Players can experience droughts and heavy rainfall, track the consequences of their decisions, and compare two different futures for the same landscape under identical weather conditions.

Amoria includes two playable worlds:

  • Amoria Valley: A procedurally generated fictional landscape.
  • Kaani, Kenya: A real 6.4 km × 6.4 km region reconstructed from satellite elevation data, land-cover imagery, and OpenStreetMap infrastructure.

The goal isn't to tell players which decisions are right or wrong. It's to help them discover the environmental, economic, and social tradeoffs themselves.

How We Built It

We built Amoria over two days using Claude Code and a multi-agent development workflow.

Rather than having one AI agent work through the entire project sequentially, we organized development into five parallel teams responsible for simulation, 3D rendering, UI and state management, real-world geographic data, and integration.

Each team had a dedicated judge agent that reviewed its work and required revisions before approval. Two final review panels evaluated the integrated game.

We began with a detailed product specification and a shared TypeScript contract to ensure that all components could integrate consistently.

The 3D game

Our frontend uses React 19, TypeScript, Vite 8, Three.js, React Three Fiber, and Zustand.

We created a stylized 3D valley with interactive terrain, buildings, roads, bridges, farmland, forests, reservoirs, and animated environmental conditions.

Vegetation and natural props use CC0 assets from Kenney's Nature Kit, while terrain, buildings, infrastructure, and water are procedurally generated.

To keep performance manageable, repeated objects are rendered using GPU instancing.

The interface uses floating panels so players can interact with the world without constantly obscuring it with dashboards.

The ecological simulation

The most technically challenging component was developing a simulation that connects hydrology, soil erosion, vegetation, agriculture, economics, and community well-being.

We implemented the engine in pure TypeScript, completely separate from the 3D renderer.

The world is represented by a 64 × 64 spatial grid. Each cell stores environmental and land-use characteristics, and each simulated season updates the interconnected systems.

Rather than inventing arbitrary environmental scores, we drew on established scientific methods:

  • Hydrology: USDA NRCS curve-number methods for rainfall, runoff, and infiltration, with D8 routing to move water downhill.
  • Soil erosion: RUSLE-inspired erosion modeling and sediment transport.
  • Agriculture: FAO-inspired crop water requirements and yield-response relationships.
  • Flood exposure: Terrain analysis using height above the nearest drainage.
  • Water infrastructure: Reservoir storage and sediment accumulation.

These models are simplified and calibrated for educational gameplay, not precise environmental forecasting. We documented their assumptions, sources, and limitations.

One important design decision was keeping weather independent of the player. Droughts and heavy rainfall are generated from deterministic random seeds. Players cannot cause a drought by clearing forests, but their land-use decisions can change how vulnerable their community is when one occurs.

This also enables one of our favorite features: Compare Futures, where players can develop the same landscape using different strategies and see how both perform under identical weather conditions.

Recreating real-world terrain

We wanted players to interact with actual geography, not just fictional landscapes.

Using Python, Rasterio, NumPy, and PyProj, we built a geographic-data pipeline that reconstructs part of Kaani in Machakos County, Kenya.

The pipeline combines:

  • Copernicus DEM elevation data.
  • ESA WorldCover satellite land-cover classifications.
  • OpenStreetMap roads and settlement information.

We convert the datasets into a playable 3D landscape while preserving geographic provenance and documenting where the game's environmental conditions are illustrative rather than observed.

Testing and validation

We also invested heavily in making sure the simulated systems behaved consistently.

The project includes 575 JavaScript/TypeScript tests across 47 files, plus 84 Python tests for the geographic pipeline.

We built automated strategy bots that play complete 20-year games across different weather seeds, testing whether different development approaches create meaningful tradeoffs.

The results confirmed that multiple strategies can achieve different objectives, but no single strategy dominates across all 11 game goals.

The application is a static web app with local browser saves, so users can play without accounts or a backend.

Challenges We Faced

Our biggest challenge was making the ecological models realistic enough to be meaningful while keeping the game approachable and fun.

Environmental systems are interconnected. Water flows downhill, vegetation affects runoff, erosion influences agricultural productivity, and changes in food production affect economic and community outcomes.

Getting those systems to work together without producing unrealistic or contradictory results required substantial attention to simulation architecture, mathematical assumptions, and testing.

Integrating real geographic data introduced another challenge. Satellite elevation, land-cover imagery, and road networks come from different sources and resolutions, so we had to align them into one consistent game world.

We also encountered practical integration issues during development. At one point, the 3D renderer displayed the environment one season out of sync with the actual game date. Fixing that reinforced why the simulation and rendering systems needed a clear separation.

Finally, coordinating multiple AI agents presented its own challenges. Having a shared specification, stable interfaces, independent reviews, and a unified test gate helped prevent parallel development from turning into integration chaos.

What We Learned

One of our biggest takeaways was that sustainability isn't simply a choice between economic development and environmental protection.

Healthy ecosystems can support economic productivity, water security, and long-term community resilience. But sustainable interventions also have costs, delays, and tradeoffs.

We wanted those relationships to emerge naturally from gameplay.

We also learned how valuable it is to separate the rules governing a system from how that system is visualized. By keeping our simulation independent from the renderer, we could test ecological behavior, compare strategies, and reconstruct real environments without changing the underlying game logic.

And on the development side, building Amoria demonstrated how far agentic coding workflows can go when paired with detailed specifications, well-defined interfaces, parallel ownership, and rigorous verification.

What's Next

Our vision is to make Amoria a platform where young people can explore the environmental futures of their own communities.

We'd love to expand the geographic pipeline so players can select more real-world locations, improve the ecological models with region-specific data, and introduce collaborative planning where multiple players negotiate development and restoration decisions together.

We also want to work with educators and environmental organizations to evaluate whether playing Amoria improves young people's understanding of land-use tradeoffs and motivates participation in local planning.

Ultimately, we want to make environmental science something young people can experience, experiment with, and understand through playing a game.

Because the best way to understand how our choices shape the world might be to build one yourself.


GitHub: https://github.com/jihanraiyan/amoria-unccd

Built With

Share this project:

Updates

Submission history