Game Premise
SolarApp is a sophisticated .NET 8.0 + MonoGame Framework 3.8.1 desktop application that simulates our solar system in real-time. Using actual orbital-element data and Keplerian orbital mechanics, it positions and renders:
🌍 8 Planets
Complete planetary orbits with accurate orbital mechanics, positions updated dynamically based on date/time.
🌙 400+ Moons
Planetary satellites with hierarchical orbital calculations relative to their parent planets.
⭐ 10,000+ Asteroids
Dwarf planets and minor bodies rendered from MPC orbital element databases.
☄️ 1,700+ Comets
Periodic and long-period comets with precise orbital trajectories.
Architecture Overview
SolarApp is built on a layered, dependency-injection-driven architecture with clear separation of concerns:
- Domain Layer (libraries/) — Keplerian physics, spacecraft mechanics, orbital calculations, game state management
- Rendering Layer (SolarApp.Rendering/) — MonoGame-agnostic rendering abstraction with pluggable decorators
- UI Hosts (SolarApp.Game, SolarApp.Sandbox) — MonoGame Game class, composition root, user interfaces
Technology Stack
- .NET 8.0 — Modern C# runtime with LINQ, async/await, records, nullable annotations
- MonoGame 3.8.1 — Cross-platform 2D/3D rendering framework built on XNA
- Dependency Injection — Microsoft.Extensions.DependencyInjection for loose coupling
- Domain-Driven Design — Layered architecture with .Interface/.Core splits
- Keplerian Orbital Mechanics — Newton-Raphson solver for position calculations
- Real Data Sources — MPC (Minor Planet Center) and JPL orbital elements
Key Features
Dynamic Orbital Mechanics
Every celestial body's position is calculated in real-time using Keplerian orbital elements (eccentricity, semi-major axis, inclination, etc.). The system updates planetary orbital elements over time to maintain accuracy across decades or centuries of simulation.
Layered Rendering Pipeline
SolarApp uses a flexible rendering architecture with pluggable decorators:
- Body Renderers — Sphere textured planets, sprite-based bodies, orbit trails
- Light Sources — Additive lighting for realistic illumination
- Selection Decorators — Visual feedback for selected objects
Data-Driven Design
The simulation loads orbital data from generated JSON files built from authoritative sources (MPC, JPL). This allows easy updates and integration of new celestial bodies as data becomes available.
Learn More
Explore the deep dives into specific aspects of the project:
Astrial API & Physics
Understand how Kepler's equations power accurate orbital calculations and gravitational influence modeling.
Read Article →UX Architecture
Explore the MVVM pattern, SOLID principles, and the blend of modern UI design with MonoGame.
Read Article →Data Creation Pipeline
Discover how we built the solar system database using Python, Jupyter notebooks, and sprite generation.
Read Article →AI-First Development
Learn how MemPalace and Claude.md files enforce standards and enable AI-assisted development.
Read Article →Getting Started
To run SolarApp locally:
# Build the solution
dotnet build SolarApp.sln
# Run the production UI
dotnet run --project SolarApp.Game/SolarApp.Game.csproj
# Run the sandbox (development/experimental)
dotnet run --project SolarApp.Sandbox/SolarApp.Sandbox.csproj
# Run all tests
dotnet test SolarApp.sln
Requirements: .NET 8.0 SDK, Windows 10+ (MonoGame WindowsDX backend)