Status
SteamPeaks
ChartsSalesUpcomingPatchesNewsCalculator
New on SteamEvery app, DLC and depot the minute Steam creates itAppsEvery app on Steam, newest change firstPackagesSubs and bundles, and what each containsDepotsDepots, manifests and install sizesTagsSteam's user tags and the games under themDevelopers & publishersCompanies and their cataloguesTechnologiesEngines, SDKs and anti-cheat found in the filesChange historyEvery PICS changelist as it lands
SignalsNineteen readings of the whole catalogueCompareAny games side by sideRecordsAll-time peaks and the days they were setReportsWeekly and monthly write-upsAlerts & newsroomWatch a game, get told when it movesSteam statusIs Steam up, right nowWeb API explorerTry the endpoints in the browser
NewsSteam's own announcements and the sales calendarCalculatorWhat a Steam account is worth, and its pile of shame
/
Sign in
/
SteamPeaks
The ultimate resource for Steam data.
ExploreChartsSalesSales and festsUpcomingPatchesNewsRecordsTrendingSignals
DatabaseAppsPackagesDepotsTagsDevelopersTechnologiesChange history
ToolsCalculatorCompareSearchAlertsSteam statusAPI
SiteMethodologyFAQDiscordSupportSign in via Steam
Not affiliated with Valve or Steam. Game names and artwork belong to their owners. All times UTC.
PrivacyCookiesFair useStatus
Droning On DemoNewsDevlog: Why Gizmo Stopped Running Real Python
Community

Devlog: Why Gizmo Stopped Running Real Python

Droning On Demo · published 28 Jun 2026, 04:36 UTC

All newsPlayers around this dateRead on Steam

Droning On has one core promise: you write code that looks and feels just like Python, and Gizmo does what the code instructs. For most of this project, that code ran on real CPython, embedded in the game and executing your scripts line by line. It worked. It also quietly gave every player a way to run code that could reach out and interact with their machine. Doesn't sound too bad until you start to think about what that means.

What "Real" Gave Us

Embedding CPython hands you the whole language for free. Real loops, real functions, real imports, the standard library, all of it. For a game about writing Python, that's the appeal. The trouble hides in the word "all." import os is real. The filesystem is reachable. The network is reachable. eval is sitting right there. None of that has anything to do with steering a robot, but a real interpreter doesn't care. You hand it code, it runs the code, all of the code.

The Problem Was Paste

The point of Droning On is writing your own code to clear a challenge, and sharing was never the pitch. But I know who plays this game, because I am one of them, and developers paste code. You hit a wall, you pull a snippet off a forum, a friend's solution, a few lines from whatever model you keep open in the next tab, and you drop it in to see what it does. The game doesn't ask for any of that. Developers just do it, out of habit, and the second you run code you didn't write, you are running untrusted code. CPython executes that exactly as eagerly as it runs yours. A snippet that claims to solve a maze can do a great deal more than solve a maze, and you would find out in that order. That's a remote code execution hole, and no maze score is worth one.

Sandboxing Wasn't the Answer

My first instinct was to cage it. Strip the dangerous modules, lock CPython behind an OS-level fence, or compile the whole thing to WebAssembly. They all share one flaw: they still run arbitrary code, just behind a wall, and walls have holes. They also drag a tax along for the ride. The build swells by the better part of half a gigabyte, every platform wants it notarized, antivirus gets twitchy about a game shipping a code-execution runtime, and every Python CVE from here to forever becomes mine to patch. Containment is a permanent maintenance bill on a risk you never fully clear. The only interpreter that can't run import os is one that has never heard of import.

What Gizmo Runs Now

So I stopped trying to contain the danger and removed the ability to express it. Gizmo runs on a custom interpreter I wrote from scratch in C#. It reads the same syntax you have always written, runs the same scripts you have always written, and from the player's seat nothing changed. Underneath, everything did. It only ever builds values it mints itself: numbers, strings, lists, and Gizmo's own command vocabulary, which comes to a grand total of sixteen functions and a robot. There is no eval, no exec, no import, and no path from anything your code can touch down to the system it runs on. It doesn't execute your code so much as interpret a fixed menu of things it already knows how to do. Ask it for the filesystem and it won't refuse you... it has no notion of a filesystem to refuse.

What I Can Honestly Call It

This is also why you'll see the game described as code that "looks and feels just like Python" rather than as real Python. The syntax is real. The structure and the nomenclature are real. What you learn writing it carries straight over to Python anywhere else. The runtime is the one piece that's bespoke, on purpose, and it's the reason I can hand you someone else's script and tell you to run it without thinking twice.

If this rings a bell, it's the same reflex as the MCP audit: look hard at what the game exposes and assume nothing should be reachable unless it earns the right to be. That post tightened the API. This one went a layer down and tightened the runtime. The code you write didn't change. The thing underneath it did, and it's a trade I would make every single time.

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.

More from Droning On Demo

Other announcements

All news
Community5 Sep 2026Devlog: Skip AheadBootcamp is twenty levels long, and it's the front door to everything else in Droning On. Puzzle Mode is behind it. Endurance Mode is behind it. So are the feature unlocks — collections, interactables, hazard detection, functions, classes — which the game hands you one chapter at a time as you earn them. That's the right structure for someone learning to code. It is a wall for someone who alrea…Community22 Aug 2026Devlog: Bring Your Own EditorDroning On ships with a code editor. It has syntax highlighting, error underlines, a console, a run/stop button, and it is a perfectly good place to write a solution. It is also, if you are the kind of person who has opinions about editors like me, somebody else's editor. We developers, are fickle. So the scripts aren't locked inside it. They're plain .py files sitting in a folder on your disk,…Community8 Aug 2026Devlog: Puzzle ModeBootcamp teaches you the language one idea at a time. Endurance Mode drops you on a virtual treadmill and speeds it up until you fall off. Puzzle Mode is the thing in the middle, and it's the part of Droning On I've spent the most time actually designing levels. Each level is built around a single idea, each one waiting to see what you do with it. Thirteen Hand-Built Problems Every one of the t…