No. 21 Tuesday 3 November Game dev, software and AI

More uploads, same buyers

itch.io now gets twice as many new game pages a day, but not twice the buyers, and it is cleaning up. On the agent side, the Claude API now keeps the conversation for you, and Uber shows how to run 5,000 tools through one gateway.

The short version

  • Game dev itch.io says new game pages per day doubled in two months while downloads and purchases did not. It deleted terabytes of AI uploads and widened its AI disclosure rules.
  • Game dev A studio rebuilt a nine-year-old idle game from scratch and kept every player's save; the hard part was recovering why the old code worked.
  • Software and AI Message threads in the Claude API keep the conversation on the server, so each turn of an agent loop sends only what is new.
  • Software and AI Uber runs more than 800 MCP servers through one gateway, and new tools start switched off until their owners approve them.
  • Software and AI GitHub will block the pull_request_target trigger by default in public repositories on December 2, with test blackouts on November 9 and 16.
Game dev News

itch.io doubled its new games, not its buyers

The open game store itch.io says twice as many game pages are created each day as two months ago, while sales did not double. It is deleting the worst AI uploads and asking more creators to say when they used AI.

Contextitch.io is an open storefront where anyone can upload a game, asset pack or zine for free, which has made it the home of game jams and small experiments.

Bar chart of game pages created per day on itch.io from August 3 to October 30: bars sit near 3,000 through August, rise through September and reach roughly 6,000 to 7,000 by late October.
Image: itch.io (Bluesky)

itch.io's own chart of new game pages per day climbs from about 3,000 in early August to between 6,000 and 7,000 by late October. When people asked whether the growth showed up in sales, itch.io answered that downloads and purchases had not doubled, Game Developer reports.

On November 3 the store's account said it had "just deleted a couple terabytes of ai slop" and reminded uploaders that its quality guidelines have had a clause against mass AI-generated uploads for over two years. The same morning it made an AI disclosure mandatory to create or edit pages in the tabletop, books, comics and soundtracks categories, which join game assets, and added the No AI filter to more pages, including search results.

For games, the disclosure question is still optional, so a page can go up without answering it. Steam is dealing with a similar wave of AI clones, and Valve has asked developers to lean on community and depth to stand apart.

2xnew game pages a day on itch.io, in two months

Why it mattersOn a store where supply doubles and demand does not, each new page is harder to find. Tags, disclosure and a page that shows real craft now do part of the work that simply being new used to do.

For youBrowser builds on itch.io now compete with twice the noise: fill in the AI disclosure honestly (code help counts on some forms), and treat the page screenshots and devlog as the thing that sets the game apart.

AI disclosure
A question on the upload form where creators say whether, and where, their project contains output from generative AI tools.
quality guidelines
The store's written rules for what uploads are welcome and what can be removed.
AI clones
Games that copy an existing game's look or design, produced quickly with AI tools to ride on its popularity.

Sources itch.io: pages per day doubled (Bluesky)Game Developer: itch.io game pages doubleitch.io: AI disclosure in more categoriesitch.io: No AI filter in searchitch.io quality guidelines

More like this Less like this

Stores and studios

Who is filling the shelves, what players like, and a rewrite that kept every save.

Game dev Trend

Only a quarter of itch.io's newest games carry the No AI tag

Turning on itch.io's No AI filter shrinks its list of newest games from about 1.77 million to about 432,000.

1.77Mgames in itch.io's newest list

432Kleft after the No AI filter, about one in four

The other three quarters mix games that disclose AI use with games whose makers skipped the question, which is optional for games, so the split is not a count of AI games.

Why it mattersThe No AI tag is becoming a filter players actually use, so leaving the question blank now hides a page from them.

Sources Game Developer

More like this Less like this

Game dev Trend

Which models build the AI games, and which ones players like

ContextPlaygama runs a portal for browser games; its AI Game Index counts which model built each game and how players react.

A web games platform that tracks more than 4,200 AI-built games finds that most are made with Claude Opus, but players like games made with OpenAI's models more.

54%of new AI-built games in the index were made with Claude Opus

65likes per 1,000 plays for games made with OpenAI's Astra

39likes per 1,000 plays for games made with Claude Opus

The index covers 1.1 million launches by more than 500,000 players, and Playgama has not published its method. Separately, Roblox says more than 80% of its top 100 games used AI to speed up development in October.

Why it mattersThe first player-side numbers on AI-built games suggest the model that makes the most games is not the one making the best-liked ones, though one portal's audience is a narrow sample.

For youIf a three.js game ships through a web portal, track likes per 1,000 plays yourself: it is the number this index ranks on.

Sources PocketGamer.biz

More like this Less like this

Game dev Lesson

Rewriting a nine-year-old hit without losing a single save

ContextAdVenture Capitalist is a 2015 idle game from Hyper Hippo, a Canadian studio; Alexandre Denault is its vice president of production and technology.

The studio behind the idle game AdVenture Capitalist rebuilt it from scratch, and players returning after five or six years found their progress intact. Its production lead explains what was harder than expected.

AdVenture Capitalist's main screen: a cartoon tycoon beside a list of businesses from lemonade stands to oil companies, each with its income.
Image: Hyper Hippo (Steam)

By 2022, changing one system broke others, which Denault calls "like playing whack-a-mole". The team chose a full rebuild, estimating that an incremental rewrite would take twice as long.

  1. Admit the code is the blocker

    No single bug forced it. Feature talks had turned into risk talks and updates had shrunk to maintenance, so the owners backed an expensive rebuild.

  2. Recover the why, not just the what

    Source code and a working build show what a system does, not why. Rebuilding the design documents took design, programming and QA together; Denault calls assuming it would be easy the biggest misjudgement.

  3. Treat old bugs as features

    Some long-standing bugs had become behavior players expected. Fixing them could make the game feel broken, so each one was a design decision.

  4. Migrate every save format

    Keeping progress across several generations of save files was the hardest part. For long-lapsed players there were no saves to test with, so QA recreated them from archives.

  5. Ship the same game first

    The first release was meant to feel familiar and keep progress, with no new content. New progression, minigames and events came in later 9.x updates.

  6. Staff the testing

    His one regret: more people on the project, for breathing room and more test time.

Why it mattersAny long-lived codebase hits this point. Writing down why systems behave as they do, and keeping real samples of every old data format, is cheap now and expensive to recover later.

For youFor each Fab plugin version and each shipped game build, keep a sample save or data asset in a fixtures folder with a test that loads it; that is the archive Hyper Hippo had to rebuild by hand.

idle game
A game that keeps progressing while the player is away, built around upgrades that grow income.
QA
Quality assurance: the people and process that test a game before players see it.
save format
The layout of the file a game writes to remember a player's progress.

Sources PocketGamer.biz: burning down AdVenture Capitalist

More like this Less like this

Agent plumbing

Less to send per turn, weights edited by a model, a deadline for Actions, and a gateway for thousands of tools.

Software and AI Release

Message threads

Server-side conversation state for the Messages API, in beta since November 2.

Normally every turn of a chat or agent loop resends the whole conversation. With the new message threads, the API keeps it for a few minutes, so each request carries only what is new and replies start faster.

The first request creates a thread with the full conversation, system prompt and tools. Each later request sends only the new messages plus the previous response's id; the system prompt and tools are left out because the thread keeps them.

Anthropic says requests get smaller and time to first token stays lower and steadier as the conversation grows, and that long agent loops gain most. A thread is best-effort: if it has expired, the app resends everything, so it must keep its own copy.

Status
Beta
Expires
5 minutes after the last request
Deleted
No more than 1 hour after last use
Zero data retention
Not eligible
Where
Claude API, AWS, Google Cloud, Microsoft Foundry

Try itanthropic-beta: message-threads-2026-08-12

Why it mattersIn long agent loops, re-uploading and re-reading the whole history each turn adds latency that grows with every step. Sending only the new turn removes most of that work.

For youThe scheduled routines and any Managed Agents loop that runs past 20 turns are the first candidates; keep the replay path, since a five-minute pause loses the thread.

time to first token
How long a model takes to send back the first piece of its reply.
system prompt
Standing instructions sent with a conversation that set how the model should behave.
Zero data retention
An arrangement under which the provider stores no request content after answering.

Sources Claude docs: Message threads

More like this Less like this

Software and AI News

One model edited another's weights and its math score jumped sixfold

ContextA model's weights are the billions of numbers learned in training; changing them normally takes a training run.

MIT researchers had a large AI model read and directly rewrite a tiny fraction of a small model's numbers, with no training. The small model stopped looping on math problems and its scores rose sharply.

Qwen3.5-0.8B before and after GPT-6 Astra edited 131,072 of its weights (0.016%), using 50 test runs as feedback. Scores in percent.

Reported by the authors, who call the work very early. The edit removed a looping failure; on Gemma 3 270M, which rarely loops, scores did not improve, which the authors read as weight edits removing obstacles rather than adding skills.

Technical details

The authors call the approach weight-space programming. Astra worked in a Python kernel over the weights with no GPU, traced the looping to one direction written by layers 15 and 19, and subtracted it from 64 output columns in each. Answers that hit the 32,768-token limit on MATH-500 fell from 93.0% to 33.1%.

Other experiments: naming which Atari game a 17,253-weight policy was trained on, and editing 3.5% of a policy's weights to solve a physics task in one shot. Detecting a sycophantic model from weights alone failed until Astra could also inspect attention patterns. Logs and the edited model are public.

Why it mattersIf a model can find and fix a specific failure inside another model's weights, small local models could be repaired for a task without a training budget. It is early and shown on small models only.

weights
The numbers inside a neural network that determine what it outputs; training adjusts them.
MATH-500
A test of 500 competition math problems.
IFEval
A test of how well a model follows explicit formatting and content instructions.

Sources Takehi et al.: Sparks of weight-space programmingExperiment logs (GitHub)Edited model (Hugging Face)

More like this Less like this

Software and AI Do this

GitHub blocks a risky Actions trigger by default on December 2

A GitHub Actions trigger that lets pull requests from strangers run with your repository's secrets will be blocked by default in public repositories, with two test blackouts first.

The trigger is pull_request_target. Applies to public repositories on GitHub Free, Team and Enterprise Cloud. Private and internal repositories are not affected.

  1. The rule runs in evaluate mode; Insights shows which workflow runs it would block.

  2. Two-hour brownout: blocked runs fail with an error annotation.

  3. Second two-hour brownout.

  4. Blocked by default unless an Actions event policy allows it, optionally for named workflow files only.

Why it mattersLabel, triage and comment bots often use this trigger. Check before November 9 so a brownout does not surprise you.

For youCheck the public plugin and tool repos for pull_request_target in .github/workflows before November 9; allow it only for the workflow files that need it.

pull_request_target
A workflow trigger that runs on pull requests in the base repository's context, with access to its secrets.
brownout
A planned, temporary switch-on of a coming change, so teams find what breaks before it is permanent.

Sources GitHub changelog

More like this Less like this

Software and AI Lesson

Uber puts one gateway between its agents and 5,000 tools

Uber turned its existing internal services into tools AI agents can call, more than 5,000 of them, without rewriting any service. One gateway handles access, privacy and translation, and every new tool starts switched off.

A crawler reads Uber's existing API definitions, generates a tool description for each endpoint with the help of an LLM, and registers it disabled until the owning team reviews and enables it. The gateway then translates each agent request into the HTTP, gRPC or TChannel call the service already speaks.

  • More than 800 MCP servers and 5,000 tools behind one gateway
  • New tools stay off until their owner approves them
  • Access checked per server and per tool; personal data redacted from responses
  • Agents search the catalog and load one tool schema at a time
  • Agents can ask for only the response fields they need
Technical details

Components named in the write-up: an MCP registry as control plane (definitions, ownership, enablement), a proxy gateway as runtime, AutoCrawler running on Cadence to scan Protocol Buffers and Thrift definitions, a token exchange service for third-party tokens such as Jira and Google, Omni MCP for incremental discovery, Response Projection for field selection, and the aifx CLI, which writes results to files so coding agents can inspect them selectively. Configuration changes reach the gateway without restarts.

Why it mattersOnce agents can call dozens of tools, the hard problems are ownership, permissions and context size, not the protocol. Default-off tools and field selection are patterns any team with more than a handful of MCP servers can copy.

For youTwo ideas fit a small MCP server today: return only the fields the agent asks for, and keep new tools disabled until a test covers them.

MCP
Model Context Protocol: a standard way to plug tools and data sources into an AI model.
gRPC
A fast way for services to call each other, using a shared definition of each call.
schema
A formal description of what a tool expects as input and returns as output.

Sources Uber: Designing an MCP gatewayInfoQ: Uber's MCP gateway

More like this Less like this

Under the hood

A big system made incremental without breaking it, and the Claude Code changes worth knowing.

Software and AI Lesson

Cloudflare stopped rebuilding whole DNS zones and cut memory 86%

ContextA DNS zone is the full set of records for a domain; Cloudflare turns database changes into data its servers worldwide read.

Cloudflare's DNS system used to rebuild a customer's whole record set for many changes. It now works out the smallest rebuild that gives the same result, and falls back to a full one whenever it cannot prove that.

Flow diagram: record and wildcard change events feed a build planner, which splits work into required-work boxes, a unified scheduler combines them, and one build comes out.
Image: Cloudflare

A planner sorts each change into one of five build types and must produce output byte for byte identical to a full build. A mirror pipeline with no customer traffic compared 20% of zones against production and found differences in 0.31% of 234,313 zones, mostly timing. Numbers over 24 hours.

Before Targeted builds
Average memory 49 GiB 7 GiB
Peak memory 79 GiB 12 GiB
Median delay About 7.7 s About 3.3 s
Worst p99 spike 14.6 minutes 1.21 minutes
Builds that rebuild the whole zone About 11.9% 7.0%

Most of the gain came from the rare huge zones that used to stall everything behind them; typical delays barely moved.

Technical details

The build types are resources only (86.81% of builds), resources and metadata, apex and metadata, purge, and full zone (7.04%). Before running, the builder re-reads current settings from replicas, since state may have changed after the event arrived. Very large zones never escalate to a full build; they rebuild the apex, metadata and the named records instead. Record changes now arrive at about 700 a second, up from about 250 in 2022.

Why it mattersTurning a full rebuild into an incremental one is a classic way to break a system. Requiring identical output, falling back when unsure, and running a shadow pipeline before switching is a recipe that transfers to build systems, caches and asset pipelines.

For youThe same pattern fits an asset cooking or content pipeline: a planner that picks the smallest rebuild, plus a test that compares its output to a full build.

DNS
The system that turns a domain name into the address of the server behind it.
p99
The 99th percentile: the delay that only 1% of builds exceed.

Sources Cloudflare: targeted DNS zone builds

More like this Less like this

Software and AI Release For practitioners

Claude Code 2.1.317: subagents keep their own effort level

The latest Claude Code release fixes how helper agents pick their effort, makes messages to busy background agents arrive sooner, and asks before your email address goes out over the network.

Show the details

Four changes from the November 3 release that a heavy user will notice.

  • Subagents use their own effort

    A subagent or teammate on a different model from the main chat now uses that model's saved effort level or default, not the session's.

  • Messages reach busy agents sooner

    Sending a message to a running background agent now moves its current command to the background instead of stopping it.

  • Hooks can fail closed

    Agent SDK hook callbacks accept onFailure: "block", so a callback that errors blocks the action instead of letting it run.

  • A prompt before your email leaves

    Claude Code now asks for confirmation before a web or shell tool call sends your account email address over the network.

Technical details

Also in 2.1.317: re-reading an unchanged file returns its content again instead of a stub; claude -p exits 1 when a full disk loses transcript writes; Grep and Glob no longer present partial results as complete after a time limit; OpenTelemetry exports time out after 10 seconds (OTEL_EXPORTER_OTLP_TIMEOUT, up to 30). CLAUDE_CODE_DISABLE_NESTED_SESSION_ID=1 restores the old behavior where claude -p inside a session shares its ID.

Why it mattersEffort settings decide cost and depth per agent; until now a cheap subagent could silently inherit a heavy session setting.

For youSecurity hooks written with the Agent SDK should set onFailure to block, so a crashed check does not wave a command through.

subagent
A helper agent that the main agent starts for one task, with its own context.
hook
A script or callback that runs automatically at a set point, such as before a tool call.

Sources Claude Code v2.1.317 release

More like this Less like this

Learn one thing

What are a control plane and a data plane?

They are the two halves of most large systems. The control plane decides: it holds the catalog, rules and settings. The data plane does: it handles each request quickly, using what the control plane told it.

Think of it like thisA restaurant: the manager writes the menu and decides who works which station (control plane), while the kitchen cooks each order as it comes in (data plane).

Splitting the two lets each grow on its own terms. The data plane must be fast and always up, so it does as little thinking as possible. The control plane changes slowly and carefully, with reviews and approvals, and pushes its decisions down.

In Uber's gateway, pictured here, the registry of tools and owners is the control plane and the gateway that relays every agent call is the data plane; a new setting reaches the gateway without a restart. Cloudflare's DNS works the same way: customers change records in a database, and a builder turns those changes into data that servers answering lookups read.

The split also limits damage: if the control plane goes down, requests keep being served with the last known settings.

Uber MCP gateway diagram: a control plane row (registries, crawler, owners) above a data plane where agent calls pass through a proxy and the central gateway to existing services.
Image: Uber Engineering
registry
A central list of what exists in a system, with who owns each part.

Try this today

Software and AI 30 minutes For practitioners

Send only the new turn: put one agent loop on a message thread

In half an hour you see whether keeping the conversation on the server makes your long agent loops start replying faster.

You needA Claude API key, Node, and an agent loop or chat that runs ten or more turns.

  1. Update the SDK

    Install the latest @anthropic-ai/sdk; the thread helper adds the beta header for you.

  2. Wrap the loop in a thread

    Create the helper with your model, system prompt and tools, then call thread.send with each new user or tool-result message instead of the full history.

  3. Measure both ways

    Log time to first token per turn with the thread, then run the same task with plain requests that resend everything.

  4. Test the expiry

    Pause for more than five minutes and send again. The helper replays the full conversation when the thread is gone; raw HTTP gets a 404 you must handle the same way.

const client = new Anthropic();

// Create the helper. This call sends no request.
const thread = client.beta.messages.thread({
  model: "claude-opus-5-5",
  max_tokens: 1024,
  cache_control: { type: "ephemeral" },
  system: "You are a support agent for Acme. Keep replies short."
});

// Turn 1: the helper creates a thread and sends the full conversation
await thread.send({ role: "user", content: "Hi! I have a question about an order." });

// Turn 2: the helper continues the thread and sends only the new message
const second = await thread.send({
  role: "user",
  content: "How long does standard shipping usually take?"
});

You know it worked whenWith the thread, later requests are much smaller and time to first token stays roughly flat as turns pile up; with full resends it creeps up. After a long pause, the next turn still works.

For youTry it on the longest-running routine first, where turn counts are highest; keep its own transcript as the replay source.

time to first token
How long a model takes to send back the first piece of its reply.
404
The HTTP status for not found; here, the thread has expired.

Sparks

What is catching on right now, and the idea worth borrowing from each.

The lab

Research from the front line, in plain words: what it solves, how, and what you could do with it.

Game dev PaperACM Transactions on Graphics

An LLM writes a small kit of shape functions, so 3D models become short programs you can edit

ShapeLib: Designing a library of programmatic 3D shape abstractions with Large Language ModelsR. Kenny Jones, Paul Guerrero, Niloy J. Mitra, et al. (Brown University, Adobe Research, UCL)

Overview figure: a seed set of chairs and function descriptions feed ShapeLib, which outputs an abstraction library used for LLM shape program editing and generation.
Image: Jones et al., arXiv
The problem
Procedural shape programs are easy to edit only if their building blocks make sense. Earlier methods that discover those blocks automatically produce large, hard-to-read libraries whose edits often break the shape.
The idea
You describe in plain text the functions you want (a chair's legs, a table's top) and give a handful of example shapes. An LLM drafts each function and keeps only versions that actually rebuild parts of the examples; networks trained on LLM-written generators then turn new shapes into programs that use the library.
The result
Against ShapeCoder, fewer function calls per shape (9.6 against 13.5), a library of 5.6 functions against 19.2, and better voxel reconstruction (IoU 50.0 against 32.3), averaged over chairs, tables, storage, lamps and faucets. In a 13-person study, LLM edits of ShapeLib programs looked more plausible.
Use it
A recipe for prop kits: write the parts vocabulary in plain words, let a model build the functions, and let an agent edit assets through them, so every edit stays a valid chair or table.

For youA PCG prop generator in the world tools plugin could expose ShapeLib-style named functions that an editor agent edits instead of raw meshes.

More like this Less like this

  1. Idea
  2. Prototype
  3. Code released
  4. Shipping

ReadPaper (ACM TOG)arXiv version

Software and AI PreprintarXiv preprint

Agents that drive a desktop almost never undo their own mistakes, and real undo would help a lot

Lost in Recovery: Demystifying Recovery Behavior of Computer-Use Agents via Goal-Oriented Action ReplayByeonghun Bang, Sangwoo Park, Jinheon Baek, et al. (KAIST, ETRI, DeepAuto.ai)

Three-panel method figure: on-policy trajectory rollout, trajectory drift via perturbation into erroneous states, and goal-oriented action replay from the recovered state with observation comparison.
Image: Bang et al., arXiv
The problem
Agents that use a computer through mouse and keyboard leave side effects when they slip, and resets are often impossible. Nobody had measured whether they can put things back.
The idea
ReTrace takes a successful run, injects a verified mistake partway through, lets the agent try to recover, then replays the rest of the original actions. Recovery only counts if the same remaining actions now reach the same result.
The result
The strongest open model tested, EvoCUA-32B, restored the earlier state under 1% of the time. Explicit recovery strategies beat implicit ones by 17.86 points on average across Linux and Windows, and ideal recovery lifted task success from 39.38% to 44.26% in one setting.
Use it
Test your own agents the same way: break the state mid-task, then check whether the remaining steps still work. And give agents explicit checkpoints or undo steps rather than hoping they self-correct.

More like this Less like this

  1. Idea
  2. Prototype
  3. Code released
  4. Shipping

ReadarXivCode and data

Game dev PreprintarXiv preprint

Streaming video generation spread across eight GPUs reaches 134.8 frames a second

Wave Forcing: Towards Speed-of-Light Streaming Video GenerationYijie Jin, Yuxuan Liu, Jiajun Xu, et al. (Shanghai Jiao Tong University and others)

Frames from a generated video of a woman reading in bed at times from 0 to 95 seconds, comparing Causal Forcing, Rolling Forcing and Wave Forcing in 4-step and 5-step versions.
Image: Jin et al., arXiv
The problem
Playable world models generate video chunk by chunk, and each chunk waits on the last, so adding GPUs barely helps and frame rates stay low.
The idea
Reorder the work so different GPUs denoise different chunks at different stages at the same time, like a pipeline, and hide the data they exchange behind the heaviest compute.
The result
A 1.3B model reaches 134.8 end-to-end frames a second on eight H200 GPUs, 7.07x a single GPU, and up to 2.53x the faster of two standard parallel methods. The authors note camera drift and lost subjects remain failure modes.
Use it
A marker for where real-time world models stand: real-time today needs a multi-GPU server, so cloud streaming, not local play, is the near-term path. Code and 1.3B weights are released.

More like this Less like this

  1. Idea
  2. Prototype
  3. Code released
  4. Shipping

ReadarXivCodeProject page

Also moving

This week on Toa Radar

Read the weekly summary: The week agents learned to play, and to be checked
Tune mode is on in this browser. Turn it off