A 2D color-matching platformer built with Godot 4 and C#.
You play a cube with four differently colored faces — blue, pink, purple and yellow. Every platform in the world is colored too, and a face may only touch a platform of its own color. Land on the wrong color and the cube explodes back to the last checkpoint, so moving means rotating the cube mid-air to line the right face up with whatever you are about to land on.
The game currently is localized into 7 languages (English, French, German, Spanish, Italian, Portuguese, Dutch).
Defaults — every action is rebindable in Settings → Controller, and the on-screen input hints follow whichever device you last touched.
| Action | Keyboard | Gamepad |
|---|---|---|
| Move | ← → | D-pad ←/→ or left stick |
| Jump | ↑ | A |
| Down | ↓ | D-pad ↓ or left stick |
| Rotate left | Z | Left shoulder |
| Rotate right | C | Right shoulder |
| Dash | X | X |
| Pause | Esc | Start |
| Switch settings tab | — | Left / right shoulder |
Requirements:
- Godot 4.7 — the .NET / Mono build. The exact
Godot.NET.Sdkversion is pinned inglobal.json. - .NET SDK — version and roll-forward policy also come from
global.json.
git clone https://github.com/g3ida/WithFlyingColors.git
cd WithFlyingColors
dotnet buildThen open the project in the Godot editor and press F5, or run it from the command line:
$GODOTTests run inside the game, using GoDotTest with Shouldly for assertions, LightMoq/LightMock for mocks and godot-test-driver for driving scenes. There are two suites:
test/src/— unit tests that need little or no Godot runtime.test/Instrumented/src/— tests that build real nodes and menu screens in a live tree. Fakes for the injected services live intest/Instrumented/src/Helpers/Fakes/.
# Run everything
$GODOT --run-tests --quit-on-finish
# Run a single test class
$GODOT --run-tests=PlayerRotationTest --quit-on-finishOther useful runner flags: --sequential, --stop-on-error, --coverage (forces the
exit code through C# so a failing run actually fails).
The .csproj keeps the test scripts and test-only package references out of release
builds.
Coverage needs two dotnet global tools, installed from the project root:
dotnet tool install --global coverlet.console
dotnet tool install --global dotnet-reportgenerator-globaltoolThen run the script, which builds, collects coverage, generates an HTML report under
coverage/report/ and refreshes the badges in badges/:
chmod +x ./coverage.sh # first time only
./coverage.shOn Windows, coverage.ps1 is available if coverlet has trouble
finding the .NET runtime. Coverage requires GODOT to be set, and a coverlet version
newer than 3.2.0 — older releases could not instrument Godot 4 assemblies.
MIT — see LICENSE. © 2023 G3idaGames.
Bootstrapped from the Chickensoft Godot game template, and still using their tooling for DI, testing and code style.