Back to portfolio MSc project
MSc Dissertation · Simulation

GodotSim

An open-source, real-time discrete-event simulation tool: SimSharp inside the Godot game engine, built to make process and queueing simulation something a non-technical audience can actually see and follow.

~11,667
words
C# / GDScript
languages
SimSharp + Godot
integration
DSR
methodology
Scope My MSc dissertation, built solo and supervised by Dr Wolfgang Garn. The current build handles M/M/1 queues and is architected to extend to richer models. Figures below are taken from the dissertation itself.

The problem

Professional discrete-event simulation tools such as Arena, SIMUL8 and AnyLogic are powerful, but they're expensive and they're abstract. For students, SMEs and quick prototyping, there was a gap: a low-cost, open-source alternative where a stakeholder can actually watch the process run rather than read a table of outputs.

Approach

Built GodotSim, integrating the SimSharp discrete-event engine with the Godot game engine. Embedded SimSharp's source directly into Godot rather than depending on external DLLs, and designed a modular architecture that cleanly separates the simulation logic (event scheduling, metrics) from the visualisation (UI, animation). Worked in C# and GDScript, with real-time dashboards for wait time and utilisation, following a formal Design Science Research methodology.

Result

A working, novel system that runs M/M/1 queues in real time behind a visual front end, and taught itself a game engine and two languages to get there. It was validated against SimPy, a standard Python DES library, with the two producing a matching M/M/1 waiting-time distribution. That validation is the point a reviewer should take away: the visual layer isn't decoration, the numbers under it are provably correct, so a non-technical stakeholder can trust what they're watching.

Why it belongs here

On the surface it's an engineering project, but the point is making a complex process visible and understandable to non-technical people, which is the core of business analysis. It also closes a loop: the Operational Analytics project above used a DES tool; this dissertation built one.

Tools

C# GDScript SimSharp Godot Design Science Research

GodotSim running: the DES Simulator window with agent count, trial runs and speed controls, the live simulation summary (arrival rate, service rate, utilisation, wait times), and animated agent sprites
GodotSim running: the DES simulator UI, live summary output, and animated agents.
GodotSim project integration flow: the UI feeds SimulationUi.cs (controller), which drives SimSharpEngine.cs (DES logic), AnimationManager.cs, CSVLogger.cs and the Godot scene and assets
Architecture: UI → controller → SimSharp DES engine → animation, logging, and the Godot scene.
Waiting-time histogram from GodotSim's M/M/1 model matching the reference SimPy distribution
Validation: GodotSim's M/M/1 waiting-time distribution matches the SimPy reference.