Inspiration
As humans, we experience both the flaws and virtues of society: how we cooperate, compete, govern, and build our lives together. AI is trained on accounts of those same human experiences, the good and the bad. That made us wonder: how well could it simulate the world that shaped it?
To find out, we built GEarth. Our project sets out to recreate the core systems of society—citizens, governments, economies, trade, diplomacy, and conflict—and watch how AI agents navigate life together.
We also wanted to make that world easier to understand visually. Alongside the simulation and browser dashboard, we developed a native 3D renderer to give GEarth a visual identity and a foundation for exploring recorded simulations.
What it does
GEarth is a generated and simulated Earth where AI agents represent countries, institutions, and citizens, and simulate economic behaviors. Our default world contains 1000+ agents across ten fictional countries.
- Citizens work, buy necessities, seek healthcare, and start businesses.
- Governments, banks, and businesses make policy decisions, provide loans, and produce and trade goods.
- Countries navigate diplomacy, resource shortages, and conflict.
These decisions interact: a shortage can affect production, production can affect employment, and unemployment can affect an entire country's economy.
Through our browser dashboard, viewers can watch the simulation unfold, explore countries, and inspect individual agents' decisions and explanations. GEarth makes it possible to follow both a society's overall development and the choices of the individuals living within it.
Our native C++/Vulkan viewer adds 3D visualization and playback of recorded simulation data, complementing the dashboard with another way to explore the world.
How we built it
Simulation Engine: We built the simulation engine in C# and .NET, giving it responsibility for time, resources, transactions, and the consequences of every action. AI agents receive observations about their circumstances and choose from actions the engine allows.
Distributed AI Inference: Our Python inference workers connect those agents to Qwen3-8B and Qwen3-4B, running across two NVIDIA DGX Spark systems and an AMD GPU. We use the larger model for institutional and entrepreneur decisions and the smaller model for resident decisions. Scheduling and batching help coordinate requests across the hardware.
Cloud, Data & Analytics: We use Neon PostgreSQL to preserve simulation checkpoints and event history, and Google Cloud to keep the shared world running independently of our laptops. A browser dashboard makes the simulation observable, while our Databricks analytics pipeline processes completed runs to help us investigate their outcomes.
Native Rendering: We developed a C++20/Vulkan renderer, with GLSL support. GLSL shaders support physically based material shading, normal mapping, sun shadows, point and spot lights, and emissive textures. The asset pipeline supports glTF models and compressed textures, while an HDR rendering pipeline handles exposure, tone mapping, bloom, and anti-aliasing.
Environmental Shaders: We developed procedural ocean and meadow rendering, including wave displacement, water reflections, grass shading, cloud shadows, and atmospheric haze. The ocean shader accounts for wave detail that becomes too small to resolve, transferring that detail into surface roughness to help stabilize distant reflections.
Visual Replay: The native viewer can play exported simulation states and events, allowing recorded runs to be explored without rerunning the AI inference that produced them.
Challenges we ran into
Balancing a Functioning Economy: Making a society function was harder than giving agents personalities. Early simulations exposed businesses hoarding money, high unemployment, and declining citizen health. We had to revisit how wages, production, healthcare, public services, and spending connected to one another.
Coordinating Distributed Inference: Different machines had different capacities and response times, and model requests could time out or arrive after the world had changed. We worked on bounded scheduling, batching, validation, and fallback behavior to keep the simulation progressing.
Enforcing Reliable Accounting: Every decision had to respect available money, goods, and authority. Recording events and distinguishing model decisions from rule-based fallbacks helped us understand what actually happened.
Keeping the Graphics Pipeline Consistent: Getting geometry onto the screen was only the beginning. Materials, textures, lights, shadows, and post-processing all had to agree. Texture color spaces, normal-map interpretation, shadow artifacts, and GPU resource lifetimes could each affect the final result, so we had to inspect those stages separately.
Balancing Visual Detail and Rendering Cost: Outdoor scenes introduced details that looked good nearby but could become unstable at a distance. We worked on filtering small wave details, controlling texture memory, and combining lighting and atmospheric effects without losing the scene's readability.
Accomplishments that we're proud of
Building a connected AI society where individual choices have consequences beyond a single conversation, with citizens, businesses, banks, and governments participating in the same economic system.
Bringing NVIDIA and AMD inference into one shared simulation, preserving worlds for later inspection, and building a dashboard that makes complex interactions easier to explore.
Designing a full-year rule-based calibration test that checks economic consistency over time, giving us a repeatable foundation alongside our live AI experiments.
Developing a native Vulkan renderer with custom material, lighting, shadow, and environmental shaders.
Bringing imported 3D assets, procedural environments, HDR post-processing, and recorded simulation playback into the project's visualization tools.
What we learned
We learned that believable agent behavior depends on the world around it. A model needs meaningful choices, useful information, and consistent consequences.
Building GEarth also taught us how interconnected society's systems are. Healthcare affects people's ability to work. Employment affects spending. Spending supports businesses, and businesses help fund governments. Small implementation choices can ripple through the entire simulation.
We learned to inspect those connections carefully and separate problems in the economic rules from problems in model behavior or infrastructure.
On the graphics side, we learned that visual quality depends on consistency across the entire rendering pipeline. A material can look incorrect because of its texture format, lighting calculation, shadowing, or final display conversion. Separating those stages and inspecting their contributions made problems easier to understand and fix.
We also learned that visualization helps explain a complex system. Recorded events and numerical results become easier to discuss when viewers have multiple ways to inspect what happened.
What's next for GEarth
We want to expand our what-if experiments so viewers can change a policy or a citizen's circumstances and compare how alternate timelines develop. Our initial experiment system uses rule-based decisions; extending it to live AI decisions is a next step.
We also want richer visual replay, more scenarios, and longer experiments with matched starting conditions. As we scale the population, we'll measure sustained inference performance and decision coverage.
For the renderer, we want to connect more simulation outcomes to visible changes in the world, improve replay presentation, and continue refining lighting, environmental effects, and asset handling.
Ultimately, we want GEarth to become a place where people can explore how individual decisions shape a society and discover outcomes we didn't anticipate.
Log in or sign up for Devpost to join the conversation.