FrinkyEngine is a C# 3D game engine with a desktop editor, standalone runtime, JSON-based scenes and prefabs, hot-reloadable gameplay assemblies, and a packaged export pipeline.
- ImGui-based editor with viewport, hierarchy, inspector, asset browser, console, and performance tools
- Standalone runtime that runs from
.fprojectin development or.fassetin exported builds - ECS-style gameplay model with custom components and hot-reloadable game assemblies
- Forward+ tiled lighting, post-processing, skeletal animation, and inverse kinematics
- BEPU physics with rigidbodies, colliders, triggers, and a built-in character controller
- Audio system with 2D and 3D playback, buses, listener/source components, and attenuation
- Prefab workflow with override tracking and entity-reference remapping
dotnet newtemplate pack for creating game projects
- .NET 8 SDK
- Windows for the included
.bathelper scripts, or use the equivalentdotnetcommands directly
If you just want to try the editor, download a packaged build from GitHub Releases.
Clone with submodules:
git clone --recurse-submodules https://github.com/frinky04/FrinkyEngine.git
cd FrinkyEngineIf you already cloned without submodules:
git submodule update --init --recursiveBuild:
.\build.batdotnet build FrinkyEngine.sln -c ReleaseRun the editor:
.\launch-editor.batdotnet run --project src/FrinkyEngine.EditorOpen the example project:
.\launch-editor.bat ExampleGames\PrefabTestingGround\PrefabTestingGround.fprojectdotnet run --project src/FrinkyEngine.Editor -- ExampleGames/PrefabTestingGround/PrefabTestingGround.fproject| Goal | Command |
|---|---|
| Build the solution | dotnet build FrinkyEngine.sln -c Release |
| Run the editor | dotnet run --project src/FrinkyEngine.Editor |
| Run the runtime in dev mode | dotnet run --project src/FrinkyEngine.Runtime -- path/to/Game.fproject |
| Install the template | dotnet new install ./templates/FrinkyEngine.Templates --force |
| Publish the editor | dotnet publish src/FrinkyEngine.Editor/FrinkyEngine.Editor.csproj -c Release -r win-x64 --self-contained false -o artifacts/release/editor/win-x64 |
| Publish the runtime | dotnet publish src/FrinkyEngine.Runtime/FrinkyEngine.Runtime.csproj -c Release -r win-x64 -p:FrinkyExport=true --self-contained false -o artifacts/release/runtime/win-x64 |
| Package a game | .\package-game.bat path\to\Game.fproject [outDir] [rid] |
| Build the docs site | npm run docs:build |
Install the template:
dotnet new install ./templates/FrinkyEngine.Templates --forceCreate a project:
dotnet new frinky-game -n MyGameThe template creates a .fproject, .csproj, starter scene, and starter script under Assets/Scripts/.
- Docs site: frinky04.github.io/frinky-engine
- Docs source: docs/index.md
- Local docs dev server:
npm install
npm run docs:devRecommended starting pages:
FrinkyEngine/
src/
FrinkyEngine.Core/ shared engine code
FrinkyEngine.Editor/ desktop editor
FrinkyEngine.Runtime/ standalone runtime
templates/
FrinkyEngine.Templates/ dotnet new template pack
docs/ hand-written documentation
Shaders/ GLSL shaders copied to output
EditorAssets/ editor fonts and icons
ExampleGames/ git submodule example projects
artifacts/ publish and build outputs
Example projects are stored as git submodules.
ExampleGames/PrefabTestingGround/demonstrates prefabs, entity references, and post-processingExampleGames/PhysicsStressTest/exercises rigidbodies, colliders, and physics-heavy scenes
| Project | Package | Version |
|---|---|---|
| Core | BepuPhysics |
2.4.0 |
| Core | Raylib-cs |
7.0.2 |
| Editor | NativeFileDialogSharp |
0.5.0 |
| Editor | Hexa.NET.ImGui |
2.2.9 |
| Editor | Hexa.NET.ImGui.Widgets |
1.2.15 |
| Runtime | Raylib-cs |
7.0.2 |
Global project defaults: .NET 8, C# 12, nullable enabled, AllowUnsafeBlocks=true.
Unlicensed. All rights reserved.