About this project
Prowl is an open-source 3D game engine written in pure C# on the latest .NET and released under the MIT license. It is explicitly inspired by Unity: it keeps a similar editor and scripting API, uses a GameObject and MonoBehaviour component architecture, and aims to make porting Unity projects as low-friction as possible while staying small and customizable (KISS). The project is currently at 1.0-preview after a full rewrite of the editor, renderer, physics, audio and UI; projects from older versions are not compatible and there is no migration path, and further breaking changes are possible before 1.0.
Editor and workflow: a full editor provides Scene View, Hierarchy, Inspector, Project Browser, Console and Game View, with custom component/property/scene-view editors, transform gizmos (move, rotate, scale), undo/redo, dockable and resizable panels with layout persistence, drag and drop, multi-select, search/filtering, asset thumbnails and 3D previews, animation curve and gradient editors, rebindable shortcuts, theming, in-editor playtesting and script hot-reloading. The editor is localized into English, German, Spanish, French, Italian, Japanese, Korean, Polish, Portuguese, Russian, Turkish and Chinese. Managed and native plugins with assembly definitions are supported. The runtime is fully standalone from the editor, so a game can reference it directly and ship with no editor dependency.
Rendering: an OpenGL backend via Silk.NET with a dedicated render thread and an extensible pipeline (custom pipelines supported). The default forward-lit pipeline uses a thin G-buffer pre-pass (depth, normals, motion, roughness, metallic). It offers HDR and PBR metallic workflow with albedo, normal, surface and emission maps; mesh and skinned mesh renderers with bone animation and blendshapes; line renderer; sprites with grid, isometric and automatic alpha-based sheet slicing plus a sprite editor; render textures and Texture3D; GPU instancing and frustum culling. Lighting covers point, spot and directional lights with shadow mapping, cascaded shadow maps for directional lights (up to four cascades), cubemap shadows for point lights and a shadow atlas with dynamic packing. Post-processing includes HDR tonemapping (ACES, Reinhard, Uncharted, Filmic, Melon, AgX), bloom, FXAA, TAA, SMAA, GTAO, stochastic SSR, bokeh depth of field, volumetric fog and cinematic effects. Also present: transparency, a depth-aware grab pass for refraction/heat-haze/frosted glass, procedural/cubemap/gradient skyboxes, a terrain system with quadtree LOD, heightmap and splatmap painting, GPU-instanced grass, tree rendering with LOD distance, holes and a dedicated terrain editor, plus a GPU-instanced particle system with emission, over-lifetime modules, collision and UV animation in local or world space. A custom shader language supports #include, multi-pass and shader keywords/variants; UV unwrapping and a progressive lightmapper with baked light probes are included.
Physics uses Jitter Physics 2: box, sphere, capsule, cylinder, cone, convex hull, mesh, model and terrain colliders; a raycast-based wheel collider with suspension and slip-based grip; many joints and constraints (ball socket, hinge, hinge angle, fixed angle, cone limit, distance limit, twist angle, prismatic, universal, point on line, point on plane, angular and linear motors); a character controller; trigger volumes; collision layers and LayerMask filtering; and raycasting plus shape query APIs.
Audio uses MiniAudio with spatial 3D audio including attenuation and Doppler, WAV/MP3/OGG/FLAC support, an effect chain (delay, distortion, biquad filter, reverb, phaser) and custom IAudioEffect implementations.
Other systems: serialization via Prowl.Echo; tags and layers; scenes with fog and ambient lighting; prefabs with nesting, apply/revert/break-instance and override tracking; project settings; script compilation via dotnet build; an input action system with composites and processors, .inputactions assets and a dedicated editor, action phases and keyboard/mouse/gamepad bindings; GameObject-based UI including world-space UI with RectTransform-driven layout, buttons, sliders, layout groups and drag-and-drop handlers; Prowl Actions for inspector-configurable persistent callbacks; and a math library with matrices (Float4x4), quaternions, Transform2D and shapes such as AABB, bounds, frustum, cone, ray, plane, line segment and rect.
The asset pipeline uses GUID-based references with meta files, import caching and file watching for auto-reimport, custom importers via attributes, sub-assets with deterministic GUIDs, forward and reverse dependency tracking and threaded loading. Supported formats include models GLTF, GLB, OBJ and FBX; textures PNG, JPG, BMP, TGA, PSD, HDR, DDS and EXR; and audio WAV, MP3, OGG and FLAC. The build system exports standalone applications with packed .prowlpak asset files, exporting only used assets, per-platform build profiles and support for Windows, Mac and Linux. The codebase is unit tested with 450+ tests across runtime and editor.
Getting started requires .NET 10. Prebuilt 1.0-preview releases are available, or the repository can be cloned and the solution opened in Visual Studio 17.8+, VS Code or Rider. The project is cross-platform for both editor and exported builds, and community support is available through a Discord server.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.