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.