Skip to main content

Documentation 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.

Every game built with Prowl lives inside a project — a self-contained directory that holds your assets, scripts, scenes, and generated build artifacts. The editor’s Projects window is the first thing you see on startup, and it is where you create or open projects. Once a project is open the editor compiles your C# scripts into assemblies on the fly, tracks every asset by a stable GUID, and provides settings panels for adjusting everything from frame-rate targets to import caching behavior.

Creating a New Project

When you launch the Prowl editor, the Projects window (ProjectsWindow) opens automatically as a centered modal dialog. It lists every project you have previously opened and provides controls to create or add existing projects.
1

Open the Projects Window

Start the Prowl editor. The Projects window appears on top of the editor on launch. If you have closed it while a project is active, there is currently no toolbar shortcut to reopen it — relaunch the editor without a project path argument to see it again.
2

Click 'Create'

In the top-right area of the Projects tab, click the Create button. A side panel slides in asking for:
  • Location — the parent directory where Prowl saves new projects (shown as a truncated path). Click the ellipsis () button to choose a different folder.
  • Project Name — type the name of your new project. The final project directory will be <Location>/<Project Name>.
3

Confirm Creation

Once a valid name is entered and the target path does not already exist, the Create button in the footer becomes active. Click it to create the project directory and all required sub-folders, then open the project automatically.Alternatively, you can create a project from the command line:
# Replace <path> with your desired project directory
dotnet run --project Prowl.Editor/Prowl.Editor.csproj -- create -p <path>
4

Open an Existing Project

To open a project that already exists on disk but is not in the list, click Add (next to Create) and navigate to the project’s root directory. The project is validated and added to the recent list. Double-clicking a project in the list opens it immediately.
When a project is opened for the first time the editor compiles your scripts, imports all assets, and creates the Library/ and Temp/ directories. This first-open pass may take a few seconds depending on the number of assets.

Project Folder Structure

After creation, a Prowl project directory contains the following layout:
MyProject/
├── Assets/          # All your game assets (textures, models, scenes, scripts, …)
├── Config/          # Editor and project preference files (hotkeys, window layout, etc.)
├── Defaults/        # Engine default assets (meshes, materials, shaders) — do not edit
├── Library/         # Asset import cache — auto-generated, safe to delete
├── Packages/        # Third-party packages installed into this project
├── Temp/            # Compiled script assemblies and other transient data
├── CSharp.csproj           # Auto-generated .NET project for your game scripts
└── CSharp-Editor.csproj    # Auto-generated .NET project for editor-only scripts
Never hand-edit CSharp.csproj or CSharp-Editor.csproj. These files are regenerated by the engine every time scripts are recompiled. Place any custom NuGet dependencies in a separate partial project and reference it, or request support on the Discord.

The Assets Folder

Everything you create or import goes under Assets/. The engine watches this directory at runtime and reacts to new, modified, or deleted files automatically. Sub-folders are fully supported — organize your project however you like.

The Library Folder

Library/ is a generated cache that stores the processed, engine-ready form of every imported asset. It is platform-specific and can be safely deleted; the engine will regenerate it on the next startup. You should add Library/ to your .gitignore.

The Asset Pipeline

Prowl’s asset pipeline revolves around three key ideas: meta files, GUID references, and import caching.

Meta Files

Every file under Assets/ has a corresponding .meta sidecar file generated beside it:
Assets/
├── Textures/
│   ├── hero_albedo.png
│   └── hero_albedo.png.meta   ← generated automatically
The .meta file records the asset’s stable GUID (a Guid value) and importer-specific settings (e.g., texture compression format, normal map flag). GUIDs never change even if you rename or move the source file, so all scene and component references remain valid.

Import Caching

When the asset pipeline processes a source file it writes the result into Library/. On subsequent editor starts, the pipeline checks whether the source file’s modification time or importer settings have changed; if nothing changed it uses the cached result. This keeps startup times fast even with large asset collections.

Custom Importers

You can register a custom importer by creating a class that inherits from ScriptedImporter and decorating it with [Importer], providing a file icon name, the asset’s general C# type, and one or more file extensions. The engine discovers all importer types at startup (via ImporterAttribute.GenerateLookUp(), which is invoked automatically on assembly load).
using Prowl.Editor.Assets;
using Prowl.Runtime.Utils;

[Importer("FileIcon.png", typeof(MyAssetType), ".myext")]
public class MyAssetImporter : ScriptedImporter
{
    public override void Import(SerializedAsset ctx, FileInfo assetPath)
    {
        // Load and process assetPath, then call ctx.SetMainObject(...)
    }
}

Project Settings

Open project-wide settings through the menu bar: Edit → Project Settings. This opens the ProjectSettingsWindow, which groups settings by category.

General Preferences

Target frame rate, VSync toggle, frame-rate locking, and other editor-wide quality-of-life options.

Hotkeys

Customize keyboard shortcuts for common editor actions. Defaults include Ctrl+S (Save Scene), Ctrl+Shift+S (Save Scene As), Ctrl+Z (Undo), and Ctrl+Y (Redo).

Asset Pipeline Preferences

Thumbnail size scaling, cache behavior, and controls to force-reimport all assets.

Scene View Preferences

Camera near/far clip planes, grid display options, look/pan/zoom sensitivity, snap distances, and FPS counter visibility.

Adding Scripts

Prowl compiles all .cs files under Assets/ into a runtime assembly (CSharp.dll) and a separate editor-only assembly (CSharp-Editor.dll). Any class that extends MonoBehaviour can be attached to a GameObject as a component.

Creating a Script from the Editor

1

Navigate to a Folder

In the Assets Browser window, navigate to the folder where you want the new script to live (e.g., Assets/Scripts/).
2

Right-Click → Create → Script

Right-click inside the Assets Browser and choose Assets → Create → Script from the context menu (or use the menu bar Assets → Create → Script). A new file named New Script.cs is created and immediately enters rename mode.
3

Name the Script

Type the class name you want and press Enter. The engine replaces the %SCRIPTNAME% template token in the generated file with the filtered alphanumeric version of the name you entered.
4

Edit the Script

Open the file in your IDE. A minimal generated script looks like this:
using Prowl.Runtime;

public class MyBehaviour : MonoBehaviour
{
    public override void Start()
    {
        Debug.Log("Start");
    }

    public override void Update()
    {
        Debug.Log("Update");
    }
}
5

Recompile

Save the file. The editor detects the change and triggers a script recompilation. When scripts are reloaded while external assemblies are already loaded, the editor restarts automatically to avoid unloading issues with .NET assemblies.You can also force a recompile manually via the menu bar: Assets → Recompile.
Editor-only scripts (custom inspectors, editor windows, menu items) belong in a folder named Editor/ inside Assets/. The project compiler puts these into CSharp-Editor.dll so they are excluded from player builds automatically.

Saving Scenes

Scenes use the .scene file extension and are stored as Prowl’s custom text serialization format.
ActionShortcutMenu
Save current sceneCtrl+SFile → Save Scene
Save scene to a new fileCtrl+Shift+SFile → Save Scene As
Create a new empty sceneFile → New Scene
On quit (or when entering play mode) the editor serializes the current scene state to a temporary file so it can be restored when exiting play mode or restarting the editor. This temp scene is stored in Temp/ and is managed automatically.

Building the Project

When you are ready to produce a standalone executable, open File → Build Project from the menu bar (or Edit → Project Settings → Build) to open the BuildWindow. The build system packages only the assets referenced by your scenes, producing a compact binary for your target platform.
Supported build targets match the editor’s supported platforms: Windows, macOS, and Linux. Android, iOS, and Web builds are on the roadmap but not yet available.

Build docs developers (and LLMs) love