Skip to content

ProwlEngine/Prowl

Repository files navigation

Prowl logo image

Github top languages GitHub version GitHub license GitHub issues GitHub stars Discord

🎮 An Open Source Unity-like Engine! 🎮

  1. About The Project
  2. Features
  3. Getting Started
  4. Contributing
  5. Acknowledgments
  6. License

📝 About The Project 📝

Prowl is an open-source, MIT-licensed game engine developed in pure C# in latest .NET.

It aims to provide a seamless transition for developers familiar with Unity by maintaining a similar API while also following KISS and staying as small and customizable as possible. Ideally, Unity projects can port over with as little resistance as possible.

Prowl is currently in 1.0-preview, following a complete rewrite of the Editor, renderer, physics, audio, and UI. Projects made with older versions of Prowl are not compatible with 1.0-preview, there is no migration path. Until the final 1.0 release, further breaking changes are still possible.

Screenshot 2024-06-27 172952 Screenshot 2024-06-27 172106
image image
image image
UntitledFLightModel Untitled

✨ Features ✨

  • General:

    • Cross-Platform! Windows, Linux & Mac, for both the Editor and exported builds
    • Unity-like Editor & Scripting API
    • C# Scripting with .NET 10
    • GameObject & MonoBehaviour Component Architecture
    • Prowl.Runtime works fully standalone from the Editor - reference it directly and ship a game with zero Editor dependency
    • Custom Immediate Mode UI (Paper), Editor built on top of Origami
    • Vector Graphics & Text Rendering via Quill
    • Full-Featured Editor
      • Scene View, Hierarchy, Inspector, Project Browser, Console, Game View
      • Custom Component Editors, Property Editors, and Scene View Editors
      • Transform Gizmos (Move, Rotate, Scale)
      • Undo/Redo System
      • Dockable & Resizable Panels with Layout Persistence
      • Drag & Drop (Assets, GameObjects, Components)
      • Multi-Select & Search/Filtering in Editor Panels
      • Asset Thumbnail Generation & 3D Previews
      • Animation Curve & Gradient Editors
      • Rebindable Shortcut/Hotkey System
      • Editor Theming with Customizable Color Palettes and sizing
      • Playtest directly in the Editor
      • Hot-Reloading Scripts
      • Localization - English, German, Spanish, French, Italian, Japanese, Korean, Polish, Portuguese, Russian, Turkish & Chinese
      • Managed & Native Plugins with Assembly Definitions
    • Physics using Jitter Physics 2
      • Colliders: Box, Sphere, Capsule, Cylinder, Cone, Convex Hull, Mesh, Model, Terrain
      • Wheel Collider (raycast-based vehicle wheel, with suspension & slip-based grip)
      • Joints & Constraints: Ball Socket, Hinge Joint, Hinge Angle, Fixed Angle, Cone Limit, Distance Limit, Twist Angle, Prismatic, Universal, Point On Line, Point On Plane, Angular Motor, Linear Motor
      • Character Controller
      • Trigger Volumes (Box, Sphere, Capsule)
      • Collision Layers & Filtering (LayerMask)
      • Raycasting & Shape Query API
    • Audio via MiniAudio
      • Spatial 3D Audio with Attenuation & Doppler
      • Supports WAV, MP3, OGG, FLAC
      • Effect chain (Delay, Distortion, Biquad Filter, Reverb, Phaser) + custom IAudioEffect
    • Serialization via Prowl.Echo
    • Tags & Layers System
    • Scene System with Fog & Ambient Lighting
    • Prefabs with Nested Prefab Support
      • Apply, Revert, Break Instance & Override Tracking
    • Projects & Project Settings
    • Script Compilation via dotnet build (Game & Editor Assemblies)
    • Input Action System with Composites & Processors
      • .inputactions assets with a dedicated editor
      • Action phases (Disabled / Started / Performed / Cancelled)
      • Composite bindings (WASD → Float2, D-pad, etc.) for keyboard, mouse & gamepad
    • GameObject-Based UI, including World Space UI
      • RectTransform-driven layout, Buttons, Sliders, layout groups, drag & drop event handlers
    • Prowl Actions - persistent, inspector-configurable event callbacks
    • Math via Prowl.Vector
      • Matrices (Float4x4), Quaternions, Transform2D
      • Shapes: AABB, Bounds, Frustum, Cone, Ray, Plane, LineSegment, Rect
    • Build System - Build to Standalone Application
      • Packed Asset Files (.prowlpak)
      • Only exports used assets
      • Per-platform build profiles
      • Supports Windows, Mac & Linux
    • Unit Tested - 450+ tests across the Runtime and Editor
  • Graphics Rendering:

    • OpenGL Backend via Silk.NET
    • Dedicated Render Thread
    • Extensible Render Pipeline (Custom Pipelines Supported)
    • Forward-Lit Pipeline with Thin G-Buffer Pre-Pass (Depth, Normals, Motion, Roughness, Metallic)
    • UV-Unwrapping via Prowl.Unwrapper, Progressive Lightmapper via Prowl.Photonic
    • Baked Light Probes
    • Custom Shader Language with #include Support, Multi-Pass, and Shader Keywords/Variants
    • Node-Based Shader Graph
      • 150+ nodes across 14 categories (Math, Vector, Color, UV, Geometry, Scene Data, Lighting, Noise, Post-Effect, Utility, …)
      • Vertex-stage support (Position offset for wind / wobble / displacement)
      • Fragment + Vertex + DepthNormals + Shadow pass emission from one graph
      • Alpha cutout + vertex offset forwarded into shadow & depth passes automatically
      • Lighting modes: Unlit / PBR / Lambert / Blinn-Phong
      • Template seed graphs (Lit Basic / Transparent / Terrain / Grass / Particle / Sky / Post Effect / Custom Lighting)
      • Inline Custom Code (raw GLSL) node
      • Control flow (Branch), Local Get/Set variables
      • Noise nodes (FastNoiseLite): OpenSimplex2 / OpenSimplex2S / Perlin / Value / Cellular (Voronoi) / Domain Warp, with FBM / Ridged / PingPong fractal variants
    • HDR & PBR (Physically Based Rendering) - Metallic Workflow
      • Albedo, Normal, Surface (AO / Roughness / Metallic), Emission Maps
    • Mesh Renderer & Skinned Mesh Renderer with Bone Animation and Blendshapes
    • Line Renderer
    • Sprites, with Sprite Sheet slicing (Grid, Isometric & Automatic alpha-based slicing) and a dedicated Sprite Editor
    • Render Textures & Texture3D
    • GPU Instancing & Frustum Culling
    • Point, Spot, and Directional Lights
      • All light types support Shadow Mapping
      • Cascaded Shadow Maps for Directional Lights (up to 4 cascades)
      • Cubemap Shadows for Point Lights
      • Shadow Atlas with Dynamic Packing
    • Post Processing
      • HDR Tonemapping (ACES / Reinhard / Uncharted / Filmic / Melon / AgX)
      • Bloom (dual-filter downsample/upsample)
      • FXAA (Fast Approximate Anti-Aliasing)
      • TAA (Temporal Anti-Aliasing)
      • Ground-Truth Ambient Occlusion (GTAO)
      • Stochastic Screen Space Reflections (SSR)
      • Bokeh Depth of Field
      • Volumetric Fog
      • Cinematic Effects (grain, vignette, chromatic aberration)
    • Transparency
    • Grab Pass (depth-aware) for refraction / heat-haze / frosted glass
    • Procedural / Cubemap / Gradient Skybox
    • Terrain System
      • Quadtree LOD
      • Heightmap & Splatmap Painting
      • GPU-Instanced Grass Rendering
      • Tree Rendering with LOD Distance
      • Dedicated Terrain Editor (Height, Paint, Grass, Trees, Settings)
      • Holes
    • Particle System
      • GPU-Instanced Rendering
      • Modules: Emission, Size/Color/Rotation/Velocity Over Lifetime, Collision, UV Animation
      • Local & World Simulation Spaces
  • Asset Pipeline:

    • GUID-Based Asset References with Meta Files
    • Import Caching & File Watching for Auto-Reimport
    • Custom Importers via Attributes
    • Sub-Assets with Deterministic GUIDs
    • Forward & Reverse Dependency Tracking
    • Threaded Asset Loading
    • Supported Formats:
      • Models: GLTF, GLB, OBJ, FBX (via Prowl.Clay)
      • Textures: PNG, JPG, BMP, TGA, PSD, HDR, DDS, EXR (via Magick.NET)
      • Audio: WAV, MP3, OGG, FLAC

(back to top)

🚀 Getting Started 🚀

Getting Prowl up and running is super easy!

Releases

Note: Prowl is now at 1.0-preview, grab it from the Releases page. Projects made with older, pre-1.0-preview versions of Prowl are not compatible and cannot be migrated.

Build from source

Prerequisites

Installation

  1. Clone the repo
  2. Open .sln with your editor (Visual Studio Version 17.8.0+, VSCode, Rider, etc.)
  3. That's it! 😄 🎉

(back to top)

🤝 Contributing 🤝

Check our Contributing guide to see how to be part of this team.

(back to top)

🙏 Acknowledgments 🙏

  • Hat tip to the creators of Raylib, While we are no longer based upon it, it has shaved off hours of development time getting the engine to a usable state.

Contributors 🌟

Dependencies 📦

(back to top)

📜 License 📜

Distributed under the MIT License. See LICENSE for more information.

(back to top)


Discord

About

An Open Source C# 3D Game Engine under MIT license, inspired by Unity and featuring a complete editor

Topics

Resources

License

Code of conduct

Contributing

Stars

795 stars

Watchers

18 watching

Forks

Contributors