The Blender add-on

Everything lives in the BlendForge tab of the 3D viewport sidebar (press N; the tabs run down its right edge).

Main panel

Play / UpdateExports the scene and runs it in blendforge.exe. While the game is open the button reads Update and hot-reloads instead. The ▶ button in the viewport header does the same. The square button next to Update stops the game.
Live LinkWhile the game runs, moving, rotating, scaling or hiding objects and editing lights in Blender updates it instantly. Mesh and material edits still need Update.
Add Player StartAdds the spawn arrow at the 3D cursor. The player faces along the arrow. (Any Empty can be made a Player Start with its checkbox.)
Add Trigger VolumeAdds an invisible 2 m wireframe box at the 3D cursor, already set to Trigger. Give it a script with on_trigger_enter.
Export LevelSaves the scene as a .glb the engine can load, without running it.
Package GameBuilds a standalone game. See Shipping your game.

Object Components

Settings for the selected object. What you see depends on the object type.

Body — how it behaves physically

BodyUse it for
Static (default)Floors, walls, level geometry. Never moves.
DynamicCrates, balls, props. Falls, tumbles, can be pushed, picked up and thrown.
KinematicThings moved by animation or scripts: lifts, doors, moving platforms. Pushes dynamic bodies and carries the player. Parented to a character’s bone it’s a hitbox instead: rays (and shots) find it, but it pushes nothing. An object on a bone left at Static (a gun in the hand) gets no collider.
TriggerAn invisible volume that calls on_trigger_enter / on_trigger_exit in its script. Tick Visible In Game for visible pickups.
No CollisionRendered only — decoration you can walk through.

Shape — the collision shape

AutoExact triangle mesh for static objects, convex hull for dynamic ones. Usually right.
MeshExact triangles. Static and kinematic only — dynamic bodies use a convex hull.
Convex HullA tight shrink-wrap around the mesh.
Box / Sphere / CapsuleSimple shapes fitted to the object’s bounds. Fastest; great for crates, balls and characters.

Other settings

Mass (kg)Dynamic only. Default 10.
Can Pick UpDynamic only. The player can carry and throw it (up to 150 kg).
2DDynamic only, for 2D games. X/Z Plane keeps the body in the front view’s plane, turning only about Y (crates). X/Z, No Turning never turns it (characters).
Friction0 = ice, 0.6 default, 2 = very grippy.
Bounciness0 = dead stop, 1 = super ball.
Visible In GameUntick for invisible walls and helpers.
Cast ShadowsUntick for small or distant objects to save time.
MirrorA flat mesh that shows the scene reflected in it, as a real mirror does, including what’s behind the player. Give it a metallic, smooth material: its colour tints the reflection. The nearest mirror in view reflects the room (it’s drawn a second time, so keep to one or two); others, and every mirror on the Low graphics preset or with reflections off, reflect the sky.
Virtual GeometryFor dense meshes (scans, sculpts, high-poly rocks and statues): the engine splits the mesh into small clusters with levels of detail and draws, each frame, just the detail the screen can show (about a pixel per triangle), skipping clusters out of view or facing away. Millions of triangles cost about what the screen shows. Not for meshes with shape keys or armatures.
Always LoadedWith World Streaming: keep this object (and what’s parented under it) loaded everywhere, for things scripts need to find() wherever the player is.
Player ModelYour own body for the player, replacing the built-in cowboy: it follows the player (origin at the feet, facing +Y). A rigged model (bones named like Mixamo’s: LeftArm, LeftForeArm, LeftHand…) is also seen in first person, holds carried things in both hands, and plays its actions player_idle, player_walk (walking), player_run (sprinting) and player_jump (in the air) as the player moves. Give its meshes No Collision.
TemplateHidden and inactive in the game until a script copies it with spawn("Name"). Use it for bullets, enemies, pickups.
ReplicateMultiplayer: the host sends this object’s movement to every player, and copies of it spawned on the host appear for everyone. Tick it on things that move. See Multiplayer.
Many at once: select several objects and use the Selected: Static / Dynamic / None buttons to set them all.

Lights export as real-time lights (Sun, Point, Spot and Area). Armatures export their animations, which play automatically unless you turn off Autoplay Animations in World.

Script

Attach a Lua script to the object. Pick an existing Blender Text, or click the new-file button to create <Object>.lua from a template. Edit it in Blender’s Text Editor. Scripts are saved inside your .blend. See Lua scripting.

Below it, Logic attaches a Logic graph instead of, or as well as, a script: visual scripting in a node editor. The new-file button creates one. See Logic graphs.

Sound

SoundA WAV, MP3, OGG or FLAC file. It’s copied with the level when you export.
Volume1 = normal.
LoopRepeat forever (hums, music, ambience).
Play On StartStart when the level loads. Otherwise call self:play_sound() from a script.
3D / Radius (m)Positional sound that fades out by the radius. Turn 3D off for music and UI sounds.

Particles

Tick the checkbox in the panel header to make the object an emitter. Particles leave along the object’s local +Z axis. Start from a preset — Fire, Smoke, Sparks or Dust — and adjust:

Rate / BurstParticles per second, and a one-off burst when the level starts.
Lifetime, Speed, SpreadHow long they live, how fast they go, and the cone angle. The Random values add variation.
Emit VolumeHalf-size of a box to spawn in (0 = from a point).
Gravity / Drag1 falls like objects; negative rises (smoke). Drag slows them.
Start/End Color, Start/End SizeColour and size fade over each particle’s life.
BrightnessAbove 1 glows through bloom.
Glow (Additive)On for fire, sparks and magic; off for smoke and dust.
Emit On StartOff = silent until a script sets self.emitting = true or calls self:emit(n).
Max Particles, TextureA cap, and an optional PNG sprite (empty = soft dot).

Blender’s own emitter particle systems are converted automatically too.

Particle System graphs

For richer effects, build them from modules in a node editor, like Unreal’s Niagara. In the Particles panel press New Particle System (or open a DarkRoast Particles node editor), then plug modules into the Emitter node:

Spawn, Lifetime, Shape, VelocityHow particles start: rate and bursts, how long they live, where they appear (point, box, sphere or ring) and how fast they leave.
Gravity & Drag, Turbulence, Vortex, Attract, Floor CollisionWhat moves them: gravity and drag, swirling noise, spinning round the emitter, pulling in, bouncing and sliding on the floor.
Color over Life, Size over Life, Render, Flipbook, StretchHow they look: colour and size curves, texture and glow, animated sprite sheets, streaks along their motion.
Sub-EmitterAnother emitter that bursts out of each particle when it dies or lands: fireworks, splashes.

A module you leave out keeps the value in the Particles panel, so a graph can be as small as one module. Pick the graph in the panel’s System field; the same graph can drive many emitters. The particles demo in Samples & docs (samples\particles_demo.blend) has fireworks, a fountain, a portal, chimney smoke and sparks.

Sprite (2D)

Tick the checkbox in the header to draw a mesh or Empty as a flat picture. On an image plane it takes the plane’s image and size; on an Empty, pick the Image and set Pixels per Metre and Pivot.

Columns, RowsA sprite sheet: frames in equal cells, counted from 1 at the top left.
First Frame, Frames, FPS, Loop, Play On StartThe animation it plays. Scripts switch with self:play_sprite{...}.
TintColour and opacity.
Sorting Layer, Order in LayerHigher layers (then orders) are drawn over lower ones.
Pixel Art, Hard EdgesSharp pixels; solid-or-invisible pixels (best for pixel art).
Lit, BrightnessShaded by the scene’s lights, or its own colours (brighter than 1 glows).
Flip X, Flip YMirror the picture.

See 2D games for the whole workflow.

Vehicle

Tick the header checkbox on a Dynamic body to make it a car, and tick Wheel on its wheel children (axle along their X). Settings: Engine Torque, Max RPM, Steering, Four-Wheel Drive, Suspension Travel, Stiffness, Damping and Grip. Scripts drive it with self:drive(throttle, steer, brake, handbrake). The whole workflow is in Cars & racing.

AI Agent

Tick the checkbox in the header to make a mesh or Empty walk on the navigation mesh. Set its Speed, Radius and Height, then drive it from a script with self:move_to(pos) — see the guard example.

The navmesh is built automatically from Static objects when the level loads (press F3 in the game to see it). On a static object that isn’t an agent, tick Exclude From Navmesh to keep AI off it.

Character Animation

On a character’s armature (or the object holding it), tick Character Animation and pick its Idle, Walk, Run and (optional) Jump actions, plus how fast the walk and run actions move. The engine then plays them from how the character moves, whatever moves it (an AI agent, physics or a script), with the playback speed following the actual speed. Like the old Blender Game Engine’s action actuators, but automatic.

Anything else comes from its script: an action that isn’t one of those and doesn’t loop (a shot, a hit) takes over until it ends, then it goes back to walking or standing. For a death, set self.auto_animate = false and play the death action. Every copy plays its own actions, including copies loaded with spawn_model.

World

Use World HDRI / Sky StrengthIf the Blender World uses an Environment Texture, it becomes the sky and the image-based lighting.
Sky Zenith, Sky Horizon, GroundSky colours used when there’s no HDRI.
Ambient, ExposureOverall fill light and brightness.
BloomGlow around bright things.
Fog Density0 = none; try 0.01–0.03 for thick fog.
PlayerFirst Person: the built-in walking player, with View (start in first or third person) and Player Can Switch (the C key toggles; in third person the camera follows over the shoulder and pulls in when a wall is behind). The player has a body either way: the built-in animated cowboy, or your Player Model; in first person you see your arms, legs and boots. None (Scripts): no built-in player; your scripts move your own character and the camera (2D and top-down games), starting from the scene camera’s view.
Orthographic cameraIf the scene camera is Orthographic, the game uses it: a flat 2D view of the same height at any distance.
Gravity (m/s²)9.81 = Earth. Try 1.6 for the Moon.
Autoplay AnimationsLoop every animation when the level starts. Turn off to start them from scripts with play_animation().
Level ScriptA script for the whole level, not tied to an object. Good for scores, timers, spawning and win conditions.
Level LogicA Logic graph for the whole level.
World StreamingFor big levels, like Unreal’s World Partition: the export splits the level into a grid of cells (Cell Size, 64 m by default), each written as its own small file next to the level, and the game loads the cells within Load Distance of the player on background threads, unloading them behind. The player start, suns, cameras, Templates, Replicate objects, vehicles, AI agents, anything bigger than a cell, and objects marked Always Loaded stay in the level itself. See the open world demo in Samples & docs.
PluginsThe plugins this game uses: tick them; it applies to every level in the .blend.

Game

Game TitleNames the packaged folder and exe, and the save-game folder.
FullscreenPackaged game starts fullscreen.
Package GameSee Shipping your game.

What exports from Blender

Scale: 1 Blender unit = 1 metre. The player is about 1.8 m tall (eyes at 1.65 m), so make doorways at least ~2.2 m tall.