Make a 256x256 pixel game with GameLib
Output one JavaScript file that defines const game = { init, step, draw }. The global GameLib is provided.
Rules
Use
view: 'front'(top-down) orview: 'side'(side-scroller).isoanddepthare in development; do not use them.initreturns JSON-compatible state.step(state, input, world, dt)returns the next state without mutating; it runs at 60Hz,dt = 1/60.draw(state, g, world)only renders.Use
world.time,world.tickandGameLib.random(seed, index). Never use wall-clock time orMath.random.Write rules, levels, scoring, enemies and win/fail conditions yourself. GameLib has primitives only, no game templates.
Colors:
ink / paper / mist / stone / shadeonly. Images: built-in assets only. Text: 8x8 font, Latin and kana; other glyphs render?.No persistence or network.
world.caps.save/shared/room/aiare allfalse.Do not call
GameLib.runor include the engine. Max 3,000 bytes after gzip, 65,536 bytes of source.
Docs
https://play.inta.site/docs/api.md — every function, option and default
https://play.inta.site/docs/start.md — run in HTML or as a module
https://play.inta.site/docs/patterns.md — minimal game structure
https://play.inta.site/docs/game.md —
init / step / drawcontract, time, simulationhttps://play.inta.site/docs/worlds.md — front and side views, grid coordinates, placement
https://play.inta.site/docs/mechanics.md — recipes: maps, doors, platformer, particles, HUD
https://play.inta.site/docs/graphics.md — screen, hero, sprites, palette, text
https://play.inta.site/docs/assets.md — asset names and size rules
https://play.inta.site/docs/input.md — keys and on-screen controls
https://play.inta.site/docs/sharing.md — share URLs and limits
https://play.inta.site/assets.json — every asset with description, size, anchor and PNG URL
https://play.inta.site/materials/<name>.png — PNG preview of any asset
https://play.inta.site/engine.d.ts — complete types
Distribution
https://play.inta.site/claude.js — global
GameLibhttps://play.inta.site/engine.mjs — ES module