A factory game in plain C. Droppers make ore, conveyors carry it, upgraders raise its value, and furnaces turn it into money.
The game is under active development. Saves, controls, and balance can change between releases.
Prebuilt binaries are on the releases page. Each tagged release contains one self-contained executable per platform. Assets are built into the binary.
| Platform | Release |
|---|---|
| macOS | Universal binary for Apple silicon and Intel |
| Linux | x86_64 with glibc 2.35 or newer |
| Windows | x86_64 with no redistributable required |
The binaries are unsigned. On macOS, clear the quarantine flag before running:
xattr -d com.apple.quarantine machWindows SmartScreen will warn before the first run.
The repository includes its engine in src/mach.h. You need a C compiler and
the platform OpenGL libraries. There is no asset or dependency download step.
Bootstrap the nob build tool, then build the game:
# macOS and Linux
cc -o nob nob.c
./nob
./build/mach_debugFrom a Visual Studio x64 Native Tools prompt on Windows:
cl nob.c
nob
build\mach_debug.exe./nob accepts debug, release, hot, or game. Debug is the default. On
Linux, the script checks for X11 and OpenGL development headers and prints the
package command when they are missing.
Each upgrader raises an ore's value toward a ceiling. Each distinct upgrader also raises that ceiling. The puzzle is to route loops through several upgraders, then use a splitter to send the ore into a furnace.
Money pays for machines, machine tiers, and more grid space. The build area starts at 4 by 4 and doubles when expanded.
| Input | Action |
|---|---|
| WASD or arrows | Pan the camera |
| Scroll wheel | Zoom |
| 1 through 6 | Select a machine, delete, or splitter |
| R | Rotate a machine or the next placement |
| T | Turn a splitter branch |
| Left click | Use the selected tool |
| E | Buy the next grid expansion |
- or = |
Select a machine tier |
| K or L | Save or load |
| Space | Pause or resume the simulation |
| Backtick | Toggle the debug overlay |
| Escape | Open the pause menu or quit from the title screen |
The placement preview is green when a machine can be placed. Solid red marks a blocked or locked cell. Faint red means the placement is valid but costs more than the current balance.
./nob hotThe hot build watches the source and reloads the game library while preserving game state. The engine remains separate from the game and only the game owns the main loop.
ARCHITECTURE.md explains the unity build, hot reload, world data, renderer boundary, and save format. Engine internals live in the mach.h repository.
I develop on macOS. Linux and Windows build in CI and have been run on real hardware. The release targets are the architectures listed above.
The current version is v0.7.0. VERSION matches the git tag.
docs/VERSION tracks the game design document separately.
The game uses the PolyForm Noncommercial 1.0.0 license. You may use, modify, and share it for noncommercial purposes. You may not sell it. See LICENSE.
src/mach.h uses the zlib license. Its embedded RGFW and Clay code also uses
zlib. stb_image is public domain or MIT licensed.
