Skip to content

Platform Builds

Build for Windows, macOS, and Linux.

Supported Platforms

macOS

ArchitectureTargetDescription
ARM64macos-arm64Apple Silicon (M1/M2/M3)
x64macos-x64Intel 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

ArchitectureTargetDescription
x64windows-x6464-bit (most common)
ARM64windows-arm64ARM-based devices
x86windows-ia3232-bit (legacy)

Output: a folder containing YourGame.exe alongside its DLLs and resources/

Linux

ArchitectureTargetDescription
x64linux-x6464-bit (most common)
ARM64linux-arm64ARM 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.

PlatformWhat you get
WindowsYourGame.exe + DLLs + resources/
macOSYourGame.app (or YourGame-macos.zip when built on Windows)
Linuxyourgame 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 OSCan Build For
macOSmacOS, Windows, Linux
WindowsWindows, Linux
LinuxLinux

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 yourgame launch script, not yourgame-bin
  • The script needs the executable bit; zip it on macOS/Linux to preserve it
  • Test on target distributions

For most games, build these targets:

  1. macos-arm64 - Apple Silicon Macs (M1/M2/M3)
  2. windows-x64 - Most Windows users
  3. 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:

DepotBuildLaunch executable
Windowswindows-x64YourGame.exe
macOSmacos-arm64, macos-x64YourGame
Linuxlinux-x64yourgame

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.

PlatformWhat to upload
Windowsthe windows-x64 folder
macOSYourGame.app zipped (or the -macos.zip GemShell already made)
Linuxthe 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/