In this update4
Full notes
Full Droning On update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Server
- Balance
- Gameplay
- UI and audio
Droning On changes
For about two days in May, Droning On could be played without anyone actually playing it. I'd wired up a way for an external AI agent to read a level and drive Gizmo through it. No human, no typing, just a model calling the same functions you would. It worked... too well... then I deleted it.
So before anyone panics, that capability is not in the game and isn't coming back. The short detour was interesting enough, and the impacts to the codebase were for the better, so I figured it was worth writing up.
What I Actually Built
The feature was a bridge (technically, a Model Context Protocol server) that exposed Gizmo's command surface – [c]move()[/c], [c]turn()[/c], [c]scan()[/c], all of it – along with the current level and your code, to an outside AI assistant. The idea was a big-brother figure: something to look over your shoulder, explain why a script wasn't behaving, and point you in the right direction when you hit a wall.
It worked... a little too well. In fact, with a capable model, it was capable of fully solving the entire game. Out of sheer curiosity, I asked an AI agent to completely solve the hardest (subjectively) level in the game, and it did so at breakneck speeds with incredible accuracy.
That is when I stopped and realized we had a problem.
Why I Pulled It
The intent was good. Learning to code is brutal when you're stuck and have nobody to ask, and a patient assistant who reviews your work and helps when you are stuck is a genuinely nice thing to have. I still believe that.
But it ran counter to the entire premise of the game. Droning On, from day one, was built on the idea that you can write real Python code to solve gamified problems. The threading work, the deterministic clock, and the leaderboards all exist to make your solution feel honest and measurable. The moment a helper is one click away, the math changes. Why wrestle with the problem when you can ask? Why grind a script down to the fastest possible run when something will hand you a clean one? Even when it was only meant to hint and support, it made the hard parts optional.
What Came Of It
Wiring the game up to an outside caller forced me to look hard at exactly what the game exposes and ask myself what can be accessed externally. It also forced me to look at alternatives to give positive support for new programmers without being game-breaking.
What I landed on
a tiered 1/2/3 hint system, available only in the bootcamp – the part of the game geared toward learning, where you pick up the language one concept at a time rather than racing for a ranked time.
Each hint breaks into three parts
direction, surface, and solution. It scratches the same itch the assistant was meant to, but because it lives in the teaching mode and nowhere else, even the last hint is just an answer where you're meant to be learning, not a shortcut past the parts that count.
The other thing it shook loose was less glamorous. The audit turned up a fair few things that were public with no business being public, so the same pass that removed the MCP bridge also tightened the API. Data classes that should've been internal got locked down, and the surface a script can touch is now smaller and more deliberate than it was. The detour wasn't a waste; it left the scripting layer cleaner on the way out.
Why It Matters
Gizmo stays manual and does what your code says, and your code is something you wrote. That's the whole pitch, and I'd rather defend it than dilute it, regardless of the potential benefits a feature might bring.
Thanks for reading. As always, your feedback is welcome. If you haven't already, drop a wishlist and come hang out in the Discord. It's the best place to share feedback, follow development, and engage.
Source
Changelog.gg summarizes and formats this update. How we read updates.
