← All projects

Games

Osmose, a tactical RPG

A turn-based tactical RPG in the style of Dofus, written from scratch: a Godot 4 C# client for Windows, macOS and Linux, rules shared with an ASP.NET Core server for accounts and characters, a launcher in Rust.

In progress Sprint S45-S60+S64-S219 · 728 points
In short, no jargon for non-developersRead the summaryClose
What it is
A turn-based combat video game on a board seen at an angle, like Dofus: you create your character, walk around a town and talk to its people.
What it is for
A real game to download, with its installer, player accounts and a server, built to grow: monsters, landscapes, then multiplayer.
What it shows
Running a large video game project, from its rules to its distribution, in C# and Rust.
Source code

How the pieces fit together

Diagram: the launcher (Rust, Tauri) signs in to the server and updates the game, then starts the game with the token. The game (Godot 4, C#) goes through Rpg.Client, which talks to the server over HTTP with the JWT token and applies the rules of Rpg.Core. The server (ASP.NET Core) checks with the same rules of Rpg.Core and keeps accounts and characters in PostgreSQL through EF Core. sign-in, updates starts it, with the token HTTP + JWT same rules EF Core Launcher Rust, Tauri Desktop game Godot 4, C# Server ASP.NET Core, JWT Rpg.Client controls, texts Rpg.Core shared rules PostgreSQL accounts, characters

A look at the fight

The desktop client, in Godot 4 and C#: a diamond board seen at an angle, animated characters (Kenney's free 3D models), and the rules of sprint 45, without a single extra rule in the client.

Pictures taken by the game itself (option --screenshot), in a virtual screen, with Mesa's software OpenGL renderer.

Spell icons: game-icons.net, under the CC BY 3.0 licence, by Lorc, Delapouite and Sbed (background removed, set on the element's colour).

To run it at home (.NET 10 SDK and Godot 4.7 .NET):

Ready-to-run builds (Windows, macOS, Linux, unsigned), made by the CI, which plays a whole fight in them, kept 14 days: artifacts of the rpg workflow

Tech stack

  • Godot 4
  • C#
  • .NET
  • ASP.NET Core
  • EF Core
  • PostgreSQL
  • JWT
  • Rust
  • Tauri
  • xUnit
  • Docker

Who does what

Godot 4
The desktop client: isometric maps, combat, character creation, town and NPCs, exported for Windows, Linux and macOS by CI.
C#
The game rules (grid, action and movement points, line of sight, spells, AI) in a deterministic library, shared by the client and the server.
.NET
The common platform of the client, the rules and the server.
ASP.NET Core
The accounts and characters server, which validates every character created.
EF Core
Database access and its migrations.
PostgreSQL
Accounts, characters and their progress.
JWT
The login tokens, shared by the launcher and the game.
Rust
The launcher: login, checking and downloading only the changed files.
Tauri
The launcher's interface and its packages for the three systems.
xUnit
Tests of the rules (paths, line of sight, replayed fights) and of the server, on a real PostgreSQL database.
Docker
The server and its database, started by docker compose.

Definition of Done

  • Code reviewed, diff by diff
  • Unit and integration tests green
  • Green CI on Linux, Windows and macOS when compiled
  • README, REVIEW.md and DECISIONS.md up to date
  • Texts in French and English
  • Demo deployed and tested on mobile