
AuraJS is a JavaScript-first game runtime with a native host underneath it.
The working model is simple:
aura.setupaura.update(dt)aura.draw()aura.* as the full runtime surfaceIf you are starting a new project, read these pages in order:
AuraJS is not a retained scene editor or class-heavy engine API. The normal pattern is:
setupupdatedrawThat means:
The committed lifecycle is:
aura.setupaura.update(dt)aura.draw()aura.onResizeaura.onFocusaura.onBluraura.onQuitMost games can ignore the extra callbacks until they need resize handling, pause behavior, or cleanup.
Use the namespaces like this:
aura.window, aura.input, aura.draw2d, aura.audio, aura.assets, aura.storage, aura.fs for the normal 2D/native game loopaura.draw3d, aura.camera3d, aura.light, aura.mesh, aura.material, aura.scene3d for 3D renderingaura.physics, aura.physics3d, aura.terrain, aura.navmesh, aura.character3d when your game actually needs simulation-heavy systemsaura.video when you need native desktop .mp4 playback or the frame/spritesheet fallbackKeep the optional-module mindset:
If you want the shortest route to a working game:
For 3D specifically:
Use these guides for the golden path. When exact signatures or validation behavior matter, use the contract docs:
docs/api-contract.mddocs/api-contract-3d.mddocs/video-cutscene-contract-v1.mddocs/native-mp4-video-contract-v1.mdFor machine-readable consumption, AuraJS also ships a generated JSON artifact:
https://www.aurajs.gg/aurajs-public-api-schema-v1.jsonUse the grouped handbook when you need a namespace-by-namespace map:
Use the narrower exact-reference pages when you know the subsystem and want to avoid searching the full contracts:
Do not guess at unsupported parity.
The safest AuraJS workflow is: