Shipping your game
Package Game turns your .blend into a standalone Windows game anyone can run — no Blender, no DarkRoast install.
Before you package
- Save your .blend. Sounds and textures are found relative to it.
- Open DarkRoast → Game and set the Game Title. It names the exe, the folder, and where saves go.
- Fullscreen (on by default): the game starts fullscreen at the monitor’s own resolution; untick it for a 1600×900 window. Players switch with F11 or Alt+Enter, or in the pause menu, and their choice is kept.
- Launcher (on by default): the game starts with a small window to Play, Play with Vulkan or Play in VR, so players never need the command line. They can tick Remember my choice; holding Shift as the game starts shows it again.
- Version and Update Feed, for updates (below). Leave Version empty to use the time you package (
2026.10.24.2130). - Switch to the scene the game should start in. The scene you’re viewing when you click Package Game becomes the first level.
Package it
- Click Package Game (in the main panel or the Game panel).
- Choose an output folder. Leave Also make a .zip ticked.
- Wait while every scene is exported and its textures are compressed (BC7). Big levels can take a minute.
You get:
<output>/
My Game/
My Game.exe the game (no console window, no debug keys)
game.json title, first level, window settings
levels/
Level1.glb one per Blender scene
Level2.glb
sounds/, textures/
vcruntime140.dll ... Visual C++ runtime, so it runs on any PC
ENGINE-LICENSE.txt the engine's licence (free, including for games you sell)
THIRD-PARTY-NOTICES.txt the licences of the libraries and fonts in the engine
My Game.zip the same folder, ready to share
Send people the .zip. They unzip it and double-click My Game.exe.
My Game folder in that location. Don’t keep your own files inside it.Updates
Set Update Feed to a web folder you can upload to (https://example.com/mygame/updates/). When a player starts the game, the launcher checks it, and if there’s a newer version it offers Update now: it downloads the zip, checks its SHA-512 and that the new program is signed by whoever signed the old one, then closes the game, swaps the files in and starts it again. To publish a new version, package the game and run:
python tools/publish_update.py "My Game.zip" --feed-dir updates --page https://example.com/mygame/
and upload the two files it makes in updates/ (my-game.json and the zip) to the feed folder. With --url the feed points at a zip that’s already on your site instead.
Multiple levels
- Each scene in your .blend (the scene selector at the top of Blender) becomes
levels/<Scene name>.glb. - Move between them with
load_level("Level2.glb")from a script — see Exit to the next level. - Each scene has its own World settings and Level Script.
- The
gametable is wiped when a level loads. Usesave()/load()to carry score, inventory or health across.
The packaged game
- Pause menu (Esc / Start): resume, restart, volume, mouse speed, rebind keys and gamepad buttons, quit.
- Settings and saves are stored per player in
%APPDATA%\BlendForge\<Game Title>\. Changing the Game Title starts fresh saves. (Test runs from Blender save to%APPDATA%\BlendForge\BlendForge\instead, so test saves stay separate from the packaged game’s.) - The developer keys (F1 stats, F3 navmesh, F5 reload) are disabled.
- Licences: the game is yours to give away or sell, with no fees or royalties. Keep
ENGINE-LICENSE.txtandTHIRD-PARTY-NOTICES.txtin its folder; add your own licence for your game alongside them if you like. - Signing: your game’s
.exeis the engine’s player program, renamed, and keeps its signature: Windows shows it as published by Sentient Bean LLC. To publish under your own name, sign it with your own code-signing certificate (Windowssigntool; your signature replaces ours). A new download may still get a SmartScreen prompt until it has built up reputation: players click More info → Run anyway.
Checklist before you share
- Play through the packaged build, not just Play in Blender — it’s what players get.
- Check every
load_levelname matches a scene name exactly (case and spaces matter). - Check for red script errors on screen. In a packaged game they’re easy to miss until a player reports them.
- Try it on another PC if you can — especially one with a weaker graphics card.