Get started / The dev loop
Edit, save, see it in the running game.
One binary scaffolds the project, generates the bindings from the surface definition, builds it and hot-reloads it into an attached process.
TERMINAL~/dev/betterhud
$ axiom new betterhud --tier wasm --lang cpp
created betterhud/ from the wasm-cpp template
target wasm32, toolchain wasi-sdk 24
generated include/axiom/surface.hpp · 42 calls, 9 bulk forms
$ axiom build
compiling betterhud 0.3.1
capabilities entity.transform@1 ui.overlay@1 input.observe@1
[WARN] src/main.cpp:84 scalar entity::position() inside on_frame
use entity::positions() to cross the boundary once
[ OK ] built target/betterhud.wasm · 184 kB in 2.4 s
$ axiom watch --game treyarch.bo2
attached to t6mp.exe pid 18244, profile build 1.0.0.3
[ OK ] hot reload armed, watching src/ and assets/
reloaded betterhud in 41 ms, state preserved
$
Scaffold
betterhud/
├─ axiom.toml
├─ include/axiom/
│ └─ surface.hpp generated
├─ src/
│ └─ main.cpp
├─ assets/hud.layout.json
└─ target/betterhud.wasm
AXIOM.TOMLhand-edited
id = "dev.carson.betterhud" version = "0.3.1" tier = "wasm" [[targets]] game = "treyarch.bo2" builds = ">=1.0.0.3" [capabilities] requires = ["ui.overlay@1", ...] [load] phase = "post-init" after = ["dev.carson.hudkit"]
axiom run
launch the game with a dev profile
axiom attach
attach to a process already running
axiom profile verify
hash the install, report unresolved symbols
axiom sign
sign the package before publishing
axiom doctor
diagnose attach failures and blocked backends