Updates

Every fix and new thing in Gamesteel, newest first, with the engine version each came in. The engine's version moves when the way a game plays changes.

0.9.2

Stores, ads, online services and purchases

New

  • Games go to Google Play and the App Store from the editor's Upload menu, through the maker's own developer accounts: a wizard for each, from the account to the Submit, with the listing, the privacy policy and the stores' forms. The agent uploads with app store_upload.
  • Ads from the maker's own AdMob account: game.ads.break(), game.ads.reward() and game.ads.banner(), the player's consent asked where the law asks for it, and none in a game made for children.
  • A game's own server, turned on in the Online tab and paid by use from the workspace's wallet: server code with calls, live rooms, timers and its own web address, a Postgres database, players' files and push notifications, a test server and a live one, and Delete my online data for every player.
  • Purchases in the store apps: game.purchases.buy() sells coins, unlocks and subscriptions through Apple's and Google's own in-app purchases; the game's server checks each one before onPurchase gives it, and AdMob's rewards before onReward. The money is the maker's.
  • game.openPrivacy() opens the game's privacy policy, from a small button the game draws itself, as the App Store and Google Play ask of every app.
  • In a phone app it opens in the phone's browser; on the web, in a new tab. A game with no policy yet opens nothing, and the editor says so.
  • The agent still has 15 tools: app gains the stores, ads, online and purchases.

0.9.1

Tile kinds and ranges

New

  • A level is written as ranges, tiles 512x64 { solid 0-511, 63 }: a kind over columns and rows, one line however wide, in place of a row of letters for every row.
  • A tile is solid or empty, and a solid one may have a shape: top only, or a slope either way. That is all the engine knows of tiles.
  • A game names its own tile kinds, tile Pond { empty depth 2 }, with art and properties only its scripts read: tileIn() and tileUnder() say what an object is in and stands on, so water drowns in one game and carries in another.
  • Scenes up to 512 tiles a side, played as fast as small ones; the editor paints a game's own kinds and edits one in the Inspector.

Changed

  • Games written with rows of tile letters no longer load.

0.9.0

Fewer tools

Changed

  • Every AI now gets every tool: the 48 are 15, each tool an action of its kind, as playtest look, read code and art paint.
  • Cursor, which takes only 40 tools from all its servers, gets every one of them, at the address every other AI uses.
  • What each tool does is unchanged. An agent that reconnects sees the 15.

0.9.0

Shaders

New

  • A game can draw with the graphics card: g.shaded paints a box with a shader, and g.screen.shader redraws the whole picture through one, in passes that keep their pictures for later ones.
  • A shader is a file of the game's own, shader:<name>, in GLSL. It reads numbers, lists of numbers, the game's paintings, the picture beneath and the frame before, and every loop runs to a fixed count.
  • Your agent sees shaders through the editor where the game is open, drawn on your own graphics card, and hears how long each takes there.
  • On a phone or computer without WebGL2 a game plays on without its shaders, and a slow shader draws at a lower resolution while the game runs.

0.8.0

Films, and Render video

New

  • A level marked film plays itself, in a world of its own: as the game begins, when the game goes to it, or as a cutscene over the game, which comes back exactly where it stopped. game.chapter marks its parts and game.endFilm() ends it.
  • Render video makes each film an MP4 in your browser, at 1080p or 720p and 60 or 30 frames a second, frame by frame with its sound, however heavy the film is to play live.
  • An exported game plays a film's video in its place, in the player's language, with pause, chapters and skip, and keeps it for playing offline.
  • render_video: your agent asks the editor where the game is open to render its films, and hears how it goes.

0.8.0

Your agent, set up in one command

New

  • pnpm connect sets Gamesteel up in 31 agents, one command each: Claude Code, Codex, Gemini, Copilot, Cursor, Zed, Goose and more, each in its own configuration.
  • A portable form of every tool for Gemini, and a core set of 36 tools for agents that cap how many they take.

Fixed

  • Setting an agent up keeps its file as it was: its comments and every line Gamesteel does not own, in JSON, YAML and TOML alike.
  • pnpm connect keeps its list in line, whatever the longest name.

0.8.0

3D art, made for each game

New

  • model_art: 3D art Blender builds from a short script and renders for the game, beside painting, with bodies that bend at joints, walk in cycles and keep their feet on the ground.
  • undo_art puts a piece of art back as it was before its last painting or model.
  • list_made shows what every game already has and the brief each piece was made from, so a new game's art and sound are made for it.

Changed

  • The ready-made art and sound tools are gone: everything a game shows or plays is made for it, or is your own.

Fixed

  • Every bug then known, and every leftover from review; gradients are drawn in their own frame.

0.8.0

Games as phone apps

New

  • The App tab, and app_settings, app_build and app_status for your agent: a finished game becomes an Android app (an APK to try, a signed release, or an install on a plugged-in phone) and runs on the iPhone Simulator, its icons and splash screens made at every size.
  • The studio in black glass, lit by the game you are playing.

Fixed

  • A built app starts its game and never stays on its splash; a build's failure never shows the upload key's password.
  • A phone's browser starts a game's sound at a touch, and the button that picks Resume on a gamepad no longer jumps.

0.8.0

Sound, music and on-screen interfaces

New

  • design_sound, compose_music and listen: effects and songs written in TypeScript, on 168 instruments from the MuseScore General sound font, and heard back as numbers, words and a picture.
  • game.ui: buttons, menus and text a game declares and draws, clicked, focused and fitted to any screen by the engine, with a checker that reads what a player would read.
  • Play a game fullscreen, and show or hide its interface in the Scene view.

Fixed

  • A held key keeps what it pressed through its repeats; the Scene view draws a game's own fonts and survives an engine failure.

0.8.0

Painting in code, through your own agent

New

  • paint_art and read_art: pictures, animations, tilesets and backgrounds painted in TypeScript against the 2D canvas, sandboxed, and kept as the game's own art.
  • The Game tab draws gradients, blur, blend modes and outlined text, and a sprite can be one frame of a painted sheet.
  • A style guide for your agent: palette, light, texture, depth and type.

Changed

  • Games are made through your own agent, over MCP; the studio's built-in agent is retired.

Fixed

  • A trackpad scrolls a list smoothly; very large curves and nearly clear gradients no longer stall the Game tab.

0.8.0

Touch, sound and finding things

New

  • Touch controls, every mouse button and the wheel; fonts a game carries with it.
  • A game's own sounds, in the editor's Sounds section.
  • search_code and find_references, and checks and timelines while a game plays.
  • An exported game plays offline, with everything it needs inside it.

Fixed

  • A renamed type keeps its scripts, and rules read every player's buttons.

0.8.0

Physics, motion and the camera

New

  • Slopes, round bodies, bounce, layers, bodies up to 32 tiles, and a body's own gravity and solidity set from a script; a resting body can be pushed, and a moving one carries what rides it.
  • Pauses, sequences and easing curves that run the same on every machine.
  • A camera that follows several things, fits them, glides to a point, zooms and keeps inside the level.
  • Script modules a game shares, animated tiles, and options on spawning.

Changed

  • Engine 0.8.0: a game made before plays as before, except where 0.8.0 now does something differently, so a report made by 0.7.0 is stale.

0.7.0

Scripts that cannot hang

New

  • A script call a tick's time cuts off is undone and runs again first the next tick, so a game never hangs; every run has its own interpreter, with everything scripts share frozen.
  • Contacts found through a grid, so a big level stays fast.
  • Your agent plays a game to judge it, instead of the old checks.

Changed

  • Engine 0.7.0: a track's aim is in tiles; a replay recorded before aims where it did.

0.6.0

Scripts in the engine

New

  • Engine 0.6.0: TypeScript scripts run in the tick, so a game can do more than its rules say.
  • Your agent playtests: it plays the game itself and looks at it.
  • Menus, behaviour that changes as a game plays, aiming, and keys of a game's own.

Fixed

  • Engine 0.5.0: a platformer stops cleanly, forgives a late jump and remembers an early one; fast shots hit what they pass; one-way bodies work.
  • Engine 0.4.0: a body stands on the bodies under it, so a player on a crate, a ledge or a moving platform can jump.
  • Engine 0.3.0: facing follows movement, so a shot goes the way the player last moved.

0.2.0

The foundation

New

  • Fixed-point numbers and a single tick, so a game plays the same on every machine, and the collision core.
  • The studio: its editor, the scene, the camera and the canvas.
  • Art in the engine, art made in code, and what a player sees on screen.