One Mac. One Windows PC.
Only these two build computers need developer tools. Everyone else will install the launcher from this page.
1. Copy the project once
Privately copy the Ember Lane DeveloperKit to both build computers and extract the latest launcher source update over it. Keep the same Unreal 5.8.3 patch version on both. Do not upload the editable asset kit to this public site.
2. Prepare the M1 Mac
- Install Unreal Engine 5.8.3, full Xcode 26.1.1 (Epic’s recommended version for UE 5.8; Xcode 26.4 is incompatible), and Python 3.12 or newer from Python.org. Complete Xcode’s first-launch setup.
- Open Terminal in the extracted developer kit.
python3 tools/family_release.py build --platform Mac --unsigned --destination Releases/first-test python3 tools/build_launcher.py --development --output Releases/launcher-preview
The first commands make local test builds. For smooth family installation, sign and notarize both the final game and launcher with a Developer ID Application certificate. Keep signing/notary credentials in the Mac’s keychain.
export EMBER_MAC_SIGN_IDENTITY='Developer ID Application: YOUR NAME (TEAMID)' export EMBER_NOTARY_PROFILE='EmberLaneNotary' python3 tools/family_release.py build --platform Mac --notarize --destination Releases/mac-candidate python3 tools/build_launcher.py --config Launcher/profiles/Mac-arm64.json --notarize --output Releases/mac-launcher
The notary profile must first be set up interactively with xcrun notarytool store-credentials EmberLaneNotary.
3. Prepare the Windows PC
Install Unreal 5.8.3, Python 3.12+ with Tk, and Visual Studio 2022 17.14+ or Visual Studio 2026 with a compatible C++ toolchain with Game development with C++ and the Windows SDK. Open PowerShell in the extracted kit.
$env:SPELLCASTER_UE_ROOT = 'C:\Program Files\Epic Games\UE_5.8' py -3 tools\family_release.py build --platform Win64 --destination Releases\windows-candidate py -3 tools\build_launcher.py --config Launcher\profiles\Win64-x64.json --output Releases\windows-launcher
Windows signing is supported through the owner’s certificate-store identity. The game package includes Unreal’s prerequisite installer.
4. Test the exact candidates
Launch on a second computer without developer tools. Test graphics, microphone permission, English/Arcane casting, stairs/falling, Host/Join and a mixed Mac/Windows match. Also test launcher update, interruption/retry, Repair, offline Play, rollback and updating blocked while the game runs.
5. Prepare the update candidates
The launcher build sets up the Python environment used below. After native testing, prepare the final staged game on each computer. Use the paths printed by your build; these examples use release 0.2.0-rc.1.
Mac:
Launcher/.venv/bin/python Launcher/publish.py prepare --platform Mac-arm64 --package-dir Releases/mac-candidate/0.2.0-rc.1-Mac-staging/Mac --output Releases/mac-update --bundle
Windows:
Launcher\.venv\Scripts\python.exe Launcher\publish.py prepare --platform Win64-x64 --package-dir Releases\windows-candidate\0.2.0-rc.1-Win64-staging\Windows --output Releases\windows-update --bundle
This creates an UpdateCandidate.tar without needing the private release key. Return that TAR, the launcher ZIP, build receipts and exact test results privately to the owner.
6. Publish the tested release
Keep the final launcher ZIP, final signed game package and build receipts. The owner signs the update manifest and uploads verified content objects before promoting the platform feed. Only then do download buttons become available here. The release-signing private key and storage-write credentials stay off playtesters’ computers.
7. Iterate
Keep engine installations and caches. Sync only changed source/assets, bump the shared release once, then build both platforms. Use --iterate for daily game builds and omit it for a fresh candidate cook. Give each build a new destination. The launcher transfers only the game pieces it needs.
Toolchain references: Epic Mac requirements · Epic Windows setup. The build Mac must also meet Xcode’s host macOS requirement.