Appearance
Platform Builds
Build for Windows, macOS, and Linux.
Supported Platforms
macOS
| Architecture | Target | Description |
|---|---|---|
| ARM64 | macos-arm64 | Apple Silicon (M1/M2/M3) |
| x64 | macos-x64 | Intel Macs |
Output: a folder containing YourGame.app
Full Mac Support
Build both ARM64 and x64 to support all Macs. ARM64 for Apple Silicon, x64 for Intel.
Building macOS on Windows
A Windows host cannot store the Unix executable bit, so the .app is packed into YourGame-macos.zip instead. Players extract it on macOS and the permissions come back. That ZIP cannot go into a Steam depot — see Deploy.
Windows
| Architecture | Target | Description |
|---|---|---|
| x64 | windows-x64 | 64-bit (most common) |
| ARM64 | windows-arm64 | ARM-based devices |
| x86 | windows-ia32 | 32-bit (legacy) |
Output: a folder containing YourGame.exe alongside its DLLs and resources/
Linux
| Architecture | Target | Description |
|---|---|---|
| x64 | linux-x64 | 64-bit (most common) |
| ARM64 | linux-arm64 | ARM devices (Raspberry Pi 4+) |
Output: a folder containing a yourgame launcher script next to yourgame-bin
Package Format
Every target is a folder, never a single file. GemShell does not produce a portable one-file .exe or an AppImage.
| Platform | What you get |
|---|---|
| Windows | YourGame.exe + DLLs + resources/ |
| macOS | YourGame.app (or YourGame-macos.zip when built on Windows) |
| Linux | yourgame launch script + yourgame-bin + resources/ |
The Linux launcher is a small shell script rather than the binary directly: it sets the flags Chromium needs inside Steam's container, and on Wayland compositors it selects the native backend. Point Steam and itch.io at that script, not at yourgame-bin.
Distribution
Zip the folder for direct downloads or itch.io. For Steam, upload the folder contents to the depot — unpacked files are what Steam's delta patching needs, so updates stay small.
Build Output Structure
Build Output
~/GemShell-Builds/
└── GameTitle-1.0.0/
├── macos-arm64/
│ └── GameTitle.app/
│ └── Contents/
│ ├── MacOS/
│ ├── Resources/
│ └── Info.plist
├── macos-x64/
│ └── GameTitle.app/
├── windows-x64/
│ ├── GameTitle.exe
│ ├── resources/
│ └── *.dll
├── linux-x64/
│ ├── gametitle # launch this — sets the flags Chromium needs
│ ├── gametitle-bin # the actual Electron binary
│ └── resources/
└── ...Cross-Platform Building
GemShell can build for all platforms from any host OS:
| Host OS | Can Build For |
|---|---|
| macOS | macOS, Windows, Linux |
| Windows | Windows, Linux |
| Linux | Linux |
TIP
Build from macOS to create all platform builds in one go.
Platform-Specific Notes
macOS
- Apps are code-signed for local use
- For distribution, you need an Apple Developer certificate
- Notarization required for macOS 10.15+
Windows
- No code signing by default
- Consider signing for distribution
- 32-bit builds for legacy Windows support
Linux
- Ship the
yourgamelaunch script, notyourgame-bin - The script needs the executable bit; zip it on macOS/Linux to preserve it
- Test on target distributions
Recommended Targets
For most games, build these targets:
- macos-arm64 - Apple Silicon Macs (M1/M2/M3)
- windows-x64 - Most Windows users
- linux-x64 - Linux users
Add these if needed:
- macos-x64 - Intel Macs
- windows-arm64 - Surface Pro X, etc.
- windows-ia32 - Very old Windows
- linux-arm64 - Raspberry Pi, etc.
Distribution
Steam
One depot per platform, uploaded as unpacked folders — that is what Steam's delta patching needs:
| Depot | Build | Launch executable |
|---|---|---|
| Windows | windows-x64 | YourGame.exe |
| macOS | macos-arm64, macos-x64 | YourGame |
| Linux | linux-x64 | yourgame |
macOS targets must be built on a Mac or Linux — see Deploy.
itch.io
Upload each platform folder as a ZIP; butler handles the rest.
| Platform | What to upload |
|---|---|
| Windows | the windows-x64 folder |
| macOS | YourGame.app zipped (or the -macos.zip GemShell already made) |
| Linux | the linux-x64 folder |
Direct Distribution
Every target is a folder, so zip the folder:
bash
cd ~/GemShell-Builds/GameTitle-1.0.0/
# macOS — zip on a Mac so permissions and symlinks survive
zip -ry GameTitle-macos-arm64.zip macos-arm64/GameTitle.app
# Windows and Linux
zip -r GameTitle-windows-x64.zip windows-x64/
zip -ry GameTitle-linux-x64.zip linux-x64/