All releases
Cairn engine2026.10.2626 Oct 2026

Games in the browser, and a faster renderer

Export a game for the web and upload it to itch.io. Frustum culling, levels of detail, instancing and background loading make big scenes cheaper, and Box3D joins Jolt as a second physics library.

What's new

Web export

  • The runtime compiles to WebAssembly and draws with WebGL2, so a game runs in current Chrome, Edge, Firefox and Safari.
  • The Export window takes a new platform, web. It writes a folder with index.html, the runtime and the game's pack, plus a zip that itch.io takes as it is.
  • Saves are kept in the browser's storage.
  • Zombie Survival and Feature Tour both play in Chrome. Play Zombie Survival on itch.io. See Exporting a game.

Rendering

  • Frustum culling. The camera and each shadow view draw only what they can see. A test checks that culling changes no pixel.
  • Level of detail. An LOD component swaps a mesh for a simpler one by distance from the camera, and hides it past a cull distance. Every pass, shadows included, draws the same level.
  • Instancing. Draws are grouped by mesh and materials, and each group is one instanced call.

Loading and speed

  • Background loading. In a game, images and models are read on worker threads, and become GPU resources a few milliseconds at a time each frame.
  • Audio, UI and physics find their entities by component, so a scene of tens of thousands of entities no longer pays for walking the whole hierarchy every frame.
  • Scenes with many bodies are faster: contact events are built only for entities with scripts, shadow maps cull too, and a game that falls behind catches up less at a time.

Physics

  • Box3D, a second physics library beside Jolt. A project picks one in its settings and can switch both ways at any time. Every physics test runs on both.
  • Ball Pit, a sample that pours up to 20,000 balls into a box, to time the two against each other. See Physics engines.

Documentation

  • A blog and a releases page. The setup and download pages are gone: the engine is private.

Known issues

  • The web build has no GPU timings in the stats, since WebGL2 has no timer queries.
  • A browser keeps a page quiet until the player clicks or presses a key, so a web game starts silent.