The Plume3D API is exposed to game scripts via Wren. All classes and methods described here are available in your game’s Wren code.
Each reference page includes return types, parameter types, descriptions, and code examples where applicable. Documented types (e.g. Num, String, Bool, List, Map, or class names like Mesh, Source) indicate the expected or returned values.
| Module | Description |
|---|
| Engine | Engine identity, version, screenshot, exit, and entropy (a non-deterministic seed) |
| Logger | Logging (info, warn, error, dump) |
| Random | Seeded, deterministic RNG — int, intRange, float, shuffle (identical seed ⇒ identical sequence) |
| Coroutines | Cooperative coroutines the engine ticks each frame — Async.run, wait, nextFrame, pending, clear |
| Http | Blocking HTTP POST — out-of-band JSON sends at event boundaries, never per frame |
| Shader | Shader resource (name) |
| Mesh | Vertex buffers, draw modes, and rendering |
| Module | Description |
|---|
| Input | Mouse, keyboard, modifiers, gamepads |
| Window | Size, fullscreen, title, design size, scale mode |
| Module | Description |
|---|
| Graphics | Load shaders, create meshes, draw, view/projection, lighting, shadows, debug views |
| Gui | Full immediate-mode GUI: windows, layouts, labels, buttons, sliders, knobs, combos, trees, charts, menus, popups, custom drawing, themes |
| InstancedMesh | GPU-instanced rendering of many mesh copies (SSBO, up to 65K instances) |
| Texture | GPU textures loaded from the mounted project (PNG/JPG/WebP) |
| Sprite | Camera-facing billboarded quads — size, RGBA tint, spherical/cylindrical/flat modes |
| Text | Signed-distance-field text, crisp at any scale — world-space or screen-space, outline, wrap, rich markup |
| Ui | Retained-mode UI: load a .ui document (panels/text/buttons), render it letterboxed into a screen rect; buttons dispatch on_click → Game.<name>() |
| Module | Description |
|---|
| Net | GameNetworkingSockets transport — server/client, reliable and unreliable send, poll, entity replication |
| PlayFlow | PlayFlow Cloud client — request and poll a hosted dedicated server |
| Module | Description |
|---|
| Audio | Global audio state, volume, listener position/orientation |
| Source | Per-source playback, volume, pitch, 3D position, cone, attenuation |
| Module | Description |
|---|
| Scene | Scene graph root, add nodes/cameras/lights, instanced meshes, physics objects |
| Node | Transform hierarchy, position/rotation/scale, children, tags |
| Camera | View/projection, FOV, planes, world/screen conversion |
| Light | Point, Sun, Spot, Hemi, Area; color, energy, spot/area params, shadow casting |
| Raycast | Raycasts from point, camera, or node direction; RaycastHit |
| Module | Description |
|---|
| Physics | Rigid bodies, forces, impulses, velocities, gravity, simulation control, raycasts, contact events |
| CharacterController | Capsule character movement with ground detection, jump, and state machine |
| CharacterState | State constants (IDLE, WALKING, RUNNING, JUMPING, FALLING, etc.) |
| ParticleEmitter | Physics-backed particle system with emission rate, burst, and instanced rendering |
| Module | Description |
|---|
| Config | Load TOML from mounted paths; save TOML text to the write directory |
| Save / Load | Game-authored, versioned save state — SaveState typed key/value store + Save file I/O (write/read/exists) |
| Resource | Cached loading (config, blend, sound) |
| BlendResult | Result of Resource.loadBlend; classes, configs, instantiate, node custom data |
| Module | Description |
|---|
| AnimationState | Per-clip state, time, params, blend layers, crossfade, play/pause, events |
| AnimationEvent | Named events and callbacks (Blender markers or custom) |
| AnimationPlayOptions | Reverse, time offset, speed, blend weight, layer, crossfade duration, loop |
| AnimationBlendOptions | Blend options (reserved for future blend tree support) |
| Module | Description |
|---|
| Math | Trig, rounding, sqrt, pow, min/max, constants (pi, e) |