Skip to content

Getting Started

This guide walks you through downloading the Plume3D binaries, installing the Blender addon (optional for your first app), and writing a minimal runnable app.

  1. Go to the Downloads page.
  2. Download the archive for your platform (e.g. plume3d-macos.zip, plume3d-win64.zip, plume3d-linux.zip).
  3. Extract the archive. You should see the plume3d executable (or plume3d.exe on Windows) and any required DLLs/libs.
  4. (Optional) Add the folder containing plume3d to your PATH so you can run it from anywhere.

Run a game: From a terminal, go to a folder that contains a game.toml (your app root) and run:

Terminal window
./plume3d .

Or pass the path to a project folder or archive:

Terminal window
./plume3d /path/to/my_game
./plume3d /path/to/my_game.zip

The engine mounts that path and looks for game.toml and main.wren (or the script configured in game.toml).


The Blender addon lets you attach Wren scripts and config to objects and collections in a .blend file. You can skip this for your first app and add it when you start using Blender-authored scenes.

Prerequisite: Install Blender 5.0 from the Blender release index. The addon is built for Blender 5.0.

  1. Go to the Downloads page.
  2. Download the archive for your platform (e.g. plume3d_blender_5.0.zip).
  3. Extract the archive. You should see the __init__.py and the plume3d_wren.py.
  4. In Blender: Edit → Preferences → Add-ons → Install…
  5. Select plume3d_wren.py (or a zip of the addon folder containing __init__.py and plume3d_wren.py).
  6. Enable the addon (search for “Plume3D” in the addon list).
  7. Tag and Collision layer names are defined in your app’s game.toml [Physics] section; set Game Config Path in the addon (on the root collection) to that game.toml so the addon UI shows the same names. See Configuration (game.toml).

After configuring Wren Script Config on objects/collections, save the .blend (File → Save) so the engine can read class names and Node Ids.

For full addon usage (Config Path, Class Path, Class Name, Node Id, pipeline, and engine behavior), see the Blender Addon guide.


A Plume3D app is a folder (or archive) that contains at least:

  • game.toml — App name and window settings.
  • main.wren — Entry script that defines a Game class with init(), update(dt), and draw().

Create a folder for your game, e.g. my_game/.

Create game.toml in that folder:

[Game]
name = "My Game"
version = "0.0.1"
description = "My first Plume3D app"
[Window]
width = 800
height = 600
resizable = true

Create main.wren with a Game class. The engine instantiates Game once and calls init() at startup, then update(dt) and draw() every frame. This example uses the built-in Gui so you don’t need any shaders or assets:

import "engine" for Gui, Window, Logger
class Game {
construct new() {}
init() {
Logger.info("My Game started!")
}
update(dt) {
if (Gui.beginWindow("Hello", 20, 20, 280, 120)) {
Gui.layoutRowDynamic(22, 1)
Gui.label("Welcome to Plume3D")
Gui.label("Window: %(Window.getWidth()) x %(Window.getHeight())")
if (Gui.buttonLabel("Click me")) {
Logger.info("Button clicked")
}
Gui.endWindow()
}
}
draw() {}
quit() {}
}

From a terminal, in your app folder:

Terminal window
/path/to/plume3d .

Or from elsewhere:

Terminal window
/path/to/plume3d /path/to/my_game

You should see a window with a small GUI panel. Resize the window; the label updates. Click the button and check the terminal for the log line.