Constrained Creativity
ML, game development, and generative systems
A traffic light usually runs on a rule written by hand. I built a small traffic simulator and learned a controller instead: one shared policy runs every intersection and beats a hand-tuned timing plan on road networks from one signal to twenty-five. It also shows where a light needs to see its neighbors and where that buys nothing. The figures run live in your browser.
Parlance re-checks the whole narrative project on every save. At 500k–2M words that was ~1.3 s of frozen editor. Incremental re-checks, a worker thread, and a proof that the fast path equals the slow one dropped it to milliseconds off to the side. Five figures run live in your browser.
Front-wheel drive or rear? Is 50:50 weight distribution real engineering or a marketing number? Built from a measured tire file and a minimum-time solver, the famous answers come out smaller than the arguments about them, until the driver can be surprised. Runs live in your browser, on the same tire the results use.
A new account has no results, so ranked matchmaking guesses. Train a ladder of bots instead, learn the mapping from how someone plays to how good they are, and you get a rank from their first game. On Tetris that beat three hundred labeled human games, and four separate measurements gave the wrong answer about whether it had worked.
A player who throws matches to keep their rating low is invisible to any test that reads wins and losses, provably so at any sample size. What they wager gives them away in a median of 14 matches, with the evasion priced so that hiding costs more than cheating pays.
A 1993 Usenet thread explained neural network training by parachuting a kangaroo over Asia to find Everest. This renders it. Six search methods hopping across real elevation data, up to the whole planet, where the blind ones fare worst.
A framework for making RL environments up to 92× faster without giving up the version you can read. Write it twice from one spec, and let a validation battery prove the two are bit-for-bit the same environment.
I bet a Wikipedia link graph would beat word embeddings at writing Codenames clues. Three approaches benchmarked on 50 real games. The graph is fast, auditable, and free, but a structural yield gap I couldn’t close means the plain LLM is the one I’d ship. Three figures run live in your browser.
A git-native narrative design tool for story-driven games. Every character, dialogue, and quest is a human-readable JSON file the visual editor reads and writes directly, so the story gets branches, diffs, reviews, and CI, and your engine reads the same files with no export step in between.
A two-player ring-out fight. Push beats dodge, dodge beats block, block beats push. The opponents are reinforcement-learning agents trained to read your commits.
An elevator RL control sandbox. Train a dispatcher against heuristic baselines and watch the two compete on a live dashboard.
A Rush Hour puzzle generator and solver, extended into a hex-grid variant, with graph metrics that reveal what makes a sliding-block puzzle hard.
A two-player hex tile game where the arcs chain into loops that belong to the board, and closing one scores the area it encloses. Playable in the browser against a pure-search opponent with no machine learning in it.
orbitope.com — orbitopegames@gmail.com