Thanks for your interest in contributing! Loopolis is a solo indie project open to community improvements. Keep PRs small and focused — that makes review fast and merges easy.
Website: https://www.codewithagents.de
Prerequisites
- .NET 10 SDK
- Godot 4.4.1 .NET edition — install to
/Applications/Godot_mono.appon macOS or adjust paths accordingly
Clone and build
git clone https://github.com/codewithagents/loopolis-city-builder.git
cd loopolis-city-builder
dotnet build src/All simulation logic lives in src/Loopolis.Core/ and is covered by NUnit tests. Run them with:
dotnet testTests complete in under 5 seconds — no Godot startup required.
DOTNET_ROOT=/opt/homebrew/opt/dotnet/libexec \
/Applications/Godot_mono.app/Contents/MacOS/Godot \
--path /path/to/loopolis/godot/ \
--editor
# Open scenes/World.tscn and press F5# Terminal 1 — start simulation server
export DOTNET_ROOT="/opt/homebrew/opt/dotnet/libexec"
dotnet run --project src/Loopolis.Runner -- server default --speed 2
# Terminal 2 — launch Godot viewer
DOTNET_ROOT=/opt/homebrew/opt/dotnet/libexec \
/Applications/Godot_mono.app/Contents/MacOS/Godot \
--path /path/to/loopolis/godot/ \
--editor
# Open scenes/World.tscn and press F5dotnet run --project src/Loopolis.Runner -- 500 default
dotnet run --project src/Loopolis.Runner -- 1000 powered_startOutput is JSON — useful for verifying simulation balance without opening Godot.
- Fork the repository
- Create a branch —
git checkout -b feat/my-feature - Implement Core changes first (if any), then Godot presentation
- Test —
dotnet testmust be green; Godot must compile (cd godot && dotnet build) - Open a PR — fill in the PR template
- No Godot imports in
Loopolis.Core/— ever. Core is pure C# with zero engine dependencies. - Every new system needs NUnit tests — test files mirror source paths (e.g.
Simulation/MySystem.cs→tests/.../Simulation/MySystemTests.cs). - No business logic in
Program.csorWorld.cs— wiring only. - Keep PRs small and focused — one feature or fix per PR makes review much easier.
- Balance check — if you touch simulation math, run a headless scenario and include the output (or a summary) in the PR description.
Open a GitHub Discussion or reach out via the website: https://www.codewithagents.de