Polyphase Engine Docker Build System
One Docker container with all toolchains for building Polyphase Game Engine on any supported platform.
Quick Start
# 1. Build the Docker image (from project root)
./Docker/build.sh
# 2. Build the Editor
docker run --rm -v ./output:/game polyphase-engine build-editor
# 3. Build a game (pass your project directory)
docker run --rm -v ./output:/game -v ./MyGame:/project polyphase-engine build-linux
Available Build Commands
| Command | Platform | Project |
|---|---|---|
build-editor |
Linux Editor | Optional (recommended) |
build-linux |
Linux Game | Required |
build-3ds |
Nintendo 3DS | Required |
build-gcn |
Nintendo GameCube | Required |
build-wii |
Nintendo Wii | Required |
Volumes
| Volume | Purpose |
|---|---|
/game |
Output directory - where build artifacts are copied |
/project |
Your game project directory (required for game builds) |
Project Structure
Your game project should be structured like:
MyGame/
├── MyGame.oct # Project file
├── Assets/ # Game assets (textures, models, sounds, etc.)
└── Scripts/ # Lua scripts (optional)
Usage Examples
Build the Docker Image
# Using the helper script
./Docker/build.sh
# Or manually
docker build -f Docker/Dockerfile -t polyphase-engine .
Build the Editor
The editor can optionally include your project files. Pass your project directory to have it copied into the output.
# With project (recommended)
docker run --rm -v ./dist/Polyphase:/game -v ./MyGame:/project polyphase-engine build-editor
# Without project
docker run --rm -v ./dist/Polyphase:/game polyphase-engine build-editor
Output:
dist/Polyphase/
├── Engine/
├── Standalone/
├── External/
├── ...
└── PolyphaseEditor.elf ← Ready to run
Build a Game
Game builds require your project directory mounted at /project.
# Linux
docker run --rm -v ./dist:/game -v ./MyGame:/project polyphase-engine build-linux
# Nintendo 3DS
docker run --rm -v ./dist:/game -v ./MyGame:/project polyphase-engine build-3ds
# Nintendo GameCube
docker run --rm -v ./dist:/game -v ./MyGame:/project polyphase-engine build-gcn
# Nintendo Wii
docker run --rm -v ./dist:/game -v ./MyGame:/project polyphase-engine build-wii
Output contains only the executable/ROM files:
# Linux
dist/Linux/
└── Polyphase.elf
# GameCube / Wii
dist/GCN/
├── Polyphase.dol
└── Polyphase.elf
# 3DS
dist/3DS/
├── Polyphase.3dsx
└── Polyphase.smdh
Interactive Shell
docker run -it --rm -v ./output:/game -v ./MyGame:/project polyphase-engine bash
Show Help
docker run --rm polyphase-engine help
Output Directory
You should create the dist directory or whatever you want to export to beforehand or else the directory will be created by Docker and you will have to sudo chmod -R 777 ./dist to change permissions so you can access it.
or do a sudo rm -rf ./dist to delete the directory.
VS Code Integration
Use the task "Docker Build Editor - Linux" from Command Palette (Ctrl+Shift+P → "Tasks: Run Task").
Included Toolchains
- Vulkan SDK 1.3.275.0 - For Linux builds
- devkitPPC - For GameCube and Wii
- devkitARM - For Nintendo 3DS
Requirements
- Docker
- ~5GB disk space for the image
- Internet connection (first build only)
Troubleshooting
"No project mounted at /project"
Game builds require your project directory. Mount it with -v:
docker run --rm -v ./output:/game -v ./MyGame:/project polyphase-engine build-linux
Permission denied when deleting output
Use Docker to clean:
docker run --rm -v ./output:/game alpine rm -rf /game/*
devkitPro installation fails
Try rebuilding without cache:
docker build --no-cache -f Docker/Dockerfile -t polyphase-engine .