Documentation menu

Foundry

Turn Your Game Into an App

Foundry packs your MAKO game so another person can run it. Linux builds work now, and so does a web build for games that stick to the language core and physics packages. You can use the windowed builder or type the same build command in a terminal.

New to coding?

Copy the examples exactly first. Run them. Then change one number or word and run them again. You are not expected to memorize the command lists.

1

Build one file

Replace game.mko with your game's filename. foundry opens the builder. build makes the finished game folder. A one-file game needs no setup file.

Try this code
# Open the easy windowed game builder
mko foundry game.mko

# Show Foundry information in the terminal instead
mko foundry game.mko --term

# Build a Linux game folder
mko build game.mko --target linux-x64

# Put the finished build in a folder named release
mko build game.mko --output ./release
2

For a bigger game

A bigger game can use foundry.json as a packing list. It says which file starts the game and which pictures, sounds, and levels must be included.

Try this code
{
  "name": "My Game",
  "version": "0.1.0",
  "entry": "main.mko",
  "output": "dist",
  "target": "linux-x64",
  "icon": "assets/icon.png",
  "include": ["assets", "levels"]
}
3

Build for the web

The web target compiles your game to WebAssembly and bundles it with a browser page, so anyone with a link can play it — no install. It's language-only for now: the core language, Physics2D, and Physics3D really run in the browser, but graphics, audio, input, and networking packages aren't ported yet. A game that only uses those will run for real; a game that uses MakoUI, Mako2D/3D, Audio, or Inputs will load and give a clear error instead of a blank screen.

Try this code
# Build a web bundle
mko build game.mko --target web

# Try it locally with any static file server
python3 -m http.server --directory dist/game-web
4

Which computers work?

Linux, Windows, and macOS all build as real, working games today, and the web target works for language-only games. macOS builds aren't code-signed yet, so the first launch needs Right Click, Open, Open Anyway instead of a normal double-click. The other choices are plans, not finished features — Foundry tells you when a choice is not ready instead of pretending the build worked.

Try this code
Ready:   linux-x64 portable folder
Ready:   windows-x64 portable folder
Ready:   macos (.app bundle, unsigned)
Ready:   web (WebAssembly, language + physics only)
Planned: AppImage, Android APK
Later:   OpenXR/VR, consoles