rbitope

Constrained Creativity

ML, game development, and generative systems

Writing

Signal
RLTraffic

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.

Validation at a Million Words
NarrativePerformance

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.

Contact Patch
PhysicsOptimization

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.

Cold Open
RLClassifier

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.

Shark Hunt
PyMCAnti-cheat

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.

Kangaroos
Three.jsOptimization

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.

Simulacrum
PyTorchRL

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.

Projects

Parlance
NarrativeTooling

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.

Pushman
UnityRL

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.

RLevator
UnityML-Agents

An elevator RL control sandbox. Train a dispatcher against heuristic baselines and watch the two compete on a live dashboard.

Gridlocked
UnityPuzzle

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.

Hex Truchet
GodotSearch

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