The repository
Branches
main holds the releases, each tagged vX.Y.Z. Day-to-day work lands on
develop.
Verified releases
Every release publishes SHA256SUMS and per-platform validation records next to the
SDKs, the WebAssembly module, this website and the source archive.
Specification first
The .iprop format is a written contract. Semantic changes update spec/
before the code, and frozen versions never change.
Apache 2.0
Use it in commercial and open-source games alike. See LICENSE. The compiled props shown on the home page are not included: they are all rights reserved.
Build from source
You need a C++20 compiler, CMake 3.24 or later and zlib 1.2.9 or later (Linux:
zlib1g-dev; macOS: the platform SDK; Windows: vcpkg).
git clone https://github.com/jCzachor6/infinite-props.git
cd infinite-props
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
ctest --test-dir build --output-on-failure
The tools land in build/tools/. The optional SFML and Godot backends are described
under Backends.
The WebAssembly module and this website
emcmake cmake -S backends/html5 -B build/wasm -DCMAKE_BUILD_TYPE=Release
cmake --build build/wasm --parallel
sh website/prepare.sh build/wasm build/tools
npm --prefix website ci
npm --prefix website run build
node website/test/release-smoke.js website/dist build/tools
The smoke test checks every link and compares the website's WebAssembly renders with the native tools pixel for pixel.
Repository layout
| path | what lives there |
|---|---|
spec/ | the format and VM specifications, one self-contained current contract |
runtime/ | the reference interpreter: loader, validator and VM |
language/, compiler/ | the .ips front end and the compiler with its optimizer |
tools/ | ipc, ipgen, ipsheet, ipdis, ipval, ipa |
backends/ | the C API, HTML5/WASM, SFML and Godot |
editor/ | the VS Code extension |
docs/, examples/ | the handbook sources, guides, recipes and example assets, plus the compiled props of the home page |
tests/, benchmarks/ | unit, golden and conformance tests; runtime and compiler benchmarks |
website/ | this site |
Contributing
- The specification is the contract. Change
spec/first, then the code. - Determinism is sacred. No time, threads or FMA contraction in generation; branches on integers only.
- Golden tests are the law. A change to a golden image or output is a breaking change.
The full guide is in CONTRIBUTING.md; issues and ideas go to the issue tracker.