When your game is ready to ship, Prowl’s build pipeline compiles your C# scripts, bundles all referenced assets, and outputs a self-contained executable alongside aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ProwlEngine/Prowl/llms.txt
Use this file to discover all available pages before exploring further.
GameData/ directory. The whole process is orchestrated through the Build Window in the editor, which drives the Desktop_Player builder — a concrete implementation of the abstract ProjectBuilder class. The result is a standalone executable (platform-native binary) that depends only on the .NET 9 runtime and your bundled assets, with no editor code included.
Opening the Build Window
In the Prowl editor, open the Build Window panel. Here you:- Add the scenes you want included in the build (at least one is required).
- Choose the target Platform (Windows, Linux, macOS) and Architecture (x64, Arm64, …).
- Select Debug or Release configuration.
- Choose Asset Packing mode: All Assets or Used Assets (dependency-traced from the scene list).
- Optionally enable AOT Compilation (
BuildProjectSettings.EnableAOTCompilation) for ahead-of-time native compilation. - Set the output directory and click Build.
Build Steps
Validate the project and scenes
ProjectBuilder.StartBuild checks that a project is loaded and that every scene AssetRef in the list is available. If validation fails, the build aborts with a descriptive error in the console.Compile user scripts
Desktop_Player calls CompileProject, which regenerates the .csproj for your game code and compiles it with dotnet into a GameName.dll. The output lands in Temp/bin/GameName/Build/.Compile the Desktop Player shell
The thin
DesktopPlayer executable (found under Players/Desktop/ next to the editor binary) is copied to a temp directory, given a generated .csproj that references Prowl.Runtime and your game DLL, then compiled into the output folder as a self-contained native binary.Pack assets
Assets are exported into
<OutputDir>/GameData/ as Prowl build packages.- Used Assets (default):
AssetDatabase.GetDependenciesDeeptraces all assets referenced from your scenes. AllShaderassets are always included regardless. - All Assets:
AssetDatabase.ExportAllBuildPackagesexports every asset in the project.
Pack scenes
Each scene is serialized to binary using
Prowl.Echo and written to GameData/scene_0.prowl, scene_1.prowl, etc. Scene order in the Build Window determines load order at runtime.Build Output Structure
The
GameData/ directory must always be co-located with the executable. Do not move or rename it.Debug vs Release
| Setting | Debug | Release |
|---|---|---|
| Optimization | None | Full (dotnet publish -c Release) |
| Symbols | Included | Stripped |
DEBUG define | Active | Inactive |
Debug.Log calls | Active | Active (use log levels to filter) |
AOT Compilation
WhenBuildProjectSettings.EnableAOTCompilation is true, the player is published with PublishAOT = true. This produces a single native binary with no JIT dependency, which reduces startup time and memory usage at the cost of longer build times. AOT requires all generic instantiations to be statically resolvable — if you use heavy runtime reflection, test your build in AOT mode early.
Platform Targets
Windows
Set
platform = Platform.Windows. Outputs DesktopPlayer.exe. Tested on x64 and Arm64.Linux
Set
platform = Platform.Linux. Outputs a native ELF binary. Requires the .NET 9 runtime or AOT mode.macOS
Set
platform = Platform.OSX. Outputs a native Mach-O binary. Universal (x64 + Arm64) requires two separate builds for now.Android, iOS, and WebAssembly (browser) targets are not yet supported. Contributions are welcome — see the
ProjectBuilder abstract class for the extension point.What’s Included in the Build
| Component | Source |
|---|---|
DesktopPlayer host | Players/Desktop/ template in the editor install |
Prowl.Runtime.dll | Copied as a reference from the editor install |
GameName.dll | Your compiled game scripts |
| Veldrid + backends | Transitive reference from Prowl.Runtime |
| Asset packages | Exported from AssetDatabase |
| Scenes | Serialized via Prowl.Echo |
| Project settings | Copied from editor settings folder |
Prowl.Editor, Prowl.Editor.Build, etc.) are never included in the build output.