See it running.
From an empty project to something moving on screen.
One language.
Zero boundaries.
Most engines split you in two: the engine in C++, your scripts behind a binding layer. Prowl removes that wall. Engine and game code are the same language, the same binary.
No FFI overhead
Your game code calls engine code directly. One IL binary.
The engine is readable
Renderer, physics, audio, ECS. Plain C# you can read and change.
Scripts are first-class
Your components match built-in ones. No privileged internal API.
Tooling just works
Prowl projects are standard .NET .csproj files. Rider, VS Code, and Visual Studio open and debug them as-is, no plugin, no
special extension, no ceremony.
using Prowl.Runtime; // Your component. Engine component. Same thing. public class PlayerController : MonoBehaviour { public float speed = 5f; private RigidBody3D rb; void Start() { // No reflection magic, direct reference rb = GetComponent<RigidBody3D>(); } void FixedUpdate() { var input = Input.GetAxis("Horizontal"); rb.AddForce(Vector3.right * input * speed); } }
Come as you are.
The editor works today.
Clone the repo, read the source, open a PR. No gatekeepers, just the code.
Core Engine
Runtime + Editor
Full editor running. PBR, terrain, particles, physics, audio, all functional today.
Scripting
C# 14 .NET 10
Native C# components. No separate runtime. Full .NET access in scripts.
License
MIT
Engine, editor, and all Prowl.* libraries. No royalties, no strings.
No editor?
No problem.
The runtime is an ordinary .NET library. Write a class, run your game. Nothing in your game links against the editor.
Explore the runtimeusing Prowl.Runtime; new MyGame().Run("Simple Cube", 1280, 720); public sealed class MyGame : Game { public override void Initialize() { var scene = new Scene(); // camera, light, cube... Scene.Load(scene); } }