Runneth Over Studio's in-house game engine. Written in C#.
Development generally follows Game Engine Architecture by Jason Gregory and the Vulkan Game Engine Series by Travis Vroman. However, this remains a bespoke solution. For established open-source C# game engines/frameworks, consider exploring Stride, FlatRedBall, and MonoGame.
Warning
This engine is in pre-alpha development and subject to significant change.
- Why make a game engine in C#?
The short answer is simple: if I’m going to commit to a long-term project of this scale, it has to be something I genuinely enjoy working in every day. C# is the ecosystem where I’m most productive and comfortable.
From a technical leadership perspective, C# offers excellent IDE and tooling support, a reduced day-to-day memory management burden, strong type safety, and a mature, feature-rich ecosystem. Modern .NET provides cross-platform support, competitive performance through JIT optimizations, and first-class asynchronous programming models. Just as importantly, C# not being limited to a strictly object-oriented style, supporting functional and data-oriented patterns (immutability, value types, expression-based APIs, and composition) aligns naturally with modern engine design. These traits allow me to focus more on engine architecture and gameplay systems rather than fighting the language or tooling.
- Why make a game engine at all?
Years ago, I enjoyed learning Unity, but over time it became clear that relying on a proprietary platform means being subject to corporate licensing decisions and shifting business priorities. Often entirely outside a developer’s control. That dependency runs counter to my long-term goal of creative and technical independence.
I later explored Godot and MonoGame, both of which are excellent projects, but ultimately concluded that building my own technology stack best aligned with how I want to learn, experiment, and create. Gopher Wood Engine exists not as a replacement for existing engines, but as a personal, open-ended platform. One that prioritizes ownership, transparency, and deep understanding of the underlying systems.
Gopher Wood Engine uses Semantic Versioning.
- MAJOR version: Incompatible API changes
- MINOR version: Backward-compatible functionality
- PATCH version: Backward-compatible bug fixes
During initial development the version will be at 0.1.0. Once a usable API is released, the version will remain 0.y.z during rapid development. When the engine is ready for production use (building a real game), version 1.0.0 will be released.
- All projects target the LTS version of the .NET SDK, which also provides the
dotnetcommand-line tool used in the build process. - The engine renderer requires the Vulkan SDK, which provides validation layers and command-line tools for shader compilation.
- The 'VULKAN_SDK' environment variable is required to be set. On Windows this is typically done automatically during SDK installation. On Linux the setup-env.sh script included with the SDK download must be sourced. On most Ubuntu desktop systems, adding a line to your .profile file to source the setup-env.sh file sets up the environment variables for you for both shells and programs started from the graphical environment in a desktop session.
- The Build project must be run at least once prior to launching other projects to ensure necessary shaders are compiled and embedded into the engine runtime.
-
The Build project uses Cake (C# Make) as the build orchestrator and can be launched from your IDE or via script.
- On OSX/Linux run:
./build.sh
- If you get a "Permission denied" error, you may need to make the script executable first:
chmod +x build.sh
- On Windows PowerShell run:
./build.ps1
-