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: .app bundle

Full Mac Support

Build both ARM64 and x64 to support all Macs. ARM64 for Apple Silicon, x64 for Intel.

Windows

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

Output: .exe (portable) or directory with DLLs

Linux

ArchitectureTargetDescription
x64linux-x6464-bit (most common)
ARM64linux-arm64ARM devices (Raspberry Pi 4+)

Output: AppImage (single file) or directory

Package Format

GemShell offers two package formats for Windows and Linux builds:

Single File (Default)

PlatformFormatDescription
WindowsPortable .exeSingle executable, no installation needed
LinuxAppImageUniversal Linux format, runs on most distros
macOS.app bundleAlways a directory (macOS standard)

Best for: Direct distribution, itch.io, easy sharing

Directory

PlatformFormatDescription
WindowsFolder with .exeExecutable with separate resource files
LinuxFolderExecutable with separate resource files
macOS.app bundleSame as Single File

Best for: Steam (delta updates), debugging, faster iteration

Steam Recommendation

For Steam distribution, use Directory format. Steam's delta patching works best with unpacked files, resulting in smaller update downloads for your players.

Build Output Structure

Directory Format

~/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
    │   └── resources/
    └── ...

Single File Format

~/GemShell-Builds/
└── GameTitle-1.0.0/
    ├── macos-arm64/
    │   └── GameTitle.app/          # Always .app bundle
    ├── GameTitle-windows-x64.exe   # Portable EXE
    ├── GameTitle-linux-x64.AppImage
    └── ...

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

  • Executable needs chmod +x on some systems
  • Consider AppImage for easier distribution
  • 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

Upload platform-specific builds to Steam depots. Use Directory format for best delta patching:

DepotBuildsFormat
Windowswindows-x64Directory
macOSmacos-arm64, macos-x64Directory (.app)
Linuxlinux-x64Directory

itch.io

Upload each platform build separately. Use Single File format for easy downloads:

PlatformFile
WindowsGameTitle-windows-x64.exe
macOSGameTitle.app (zip the .app folder)
LinuxGameTitle-linux-x64.AppImage

Direct Distribution

For Single File builds:

bash
cd ~/GemShell-Builds/GameTitle-1.0.0/

# macOS: zip the .app bundle
zip -r GameTitle-macos-arm64.zip macos-arm64/GameTitle.app
zip -r GameTitle-macos-x64.zip macos-x64/GameTitle.app

# Windows & Linux are already single files
# GameTitle-windows-x64.exe
# GameTitle-linux-x64.AppImage

For Directory builds:

bash
cd ~/GemShell-Builds/GameTitle-1.0.0/
zip -r GameTitle-macos-arm64.zip macos-arm64/
zip -r GameTitle-macos-x64.zip macos-x64/
zip -r GameTitle-windows.zip windows-x64/
zip -r GameTitle-linux.zip linux-x64/