Treason
A large, strange, unfinished world that still works well enough to wander into and get yourself killed.
Treason began as an experiment in building a classic tile-based role-playing game entirely in JavaScript. It grew into a working game world with exploration, combat, towns, inventory, character development, ships, a skiff, and—because apparently restraint was never part of the plan—a pilotable submarine.
Treason is unfinished. The larger plot and quest structure were never completed, so do not expect a finished beginning-to-end RPG campaign. What is here is surprisingly substantial: a functioning world you can explore, fight through, trade in, sail around, develop a character in, and generally poke at to see what happens. Think of it as a playable game world whose story never reached the finish line.
It started as a tiny JavaScript experiment.
In 1980 I discovered computer-based adventure gaming through Richard Garriott’s Akalabeth. By modern standards it was simple, but it—and the games that followed it—helped define the adventure/RPG form I became obsessed with. I dove into the Ultima series and did not really surface until I had completed Ultima V. Years later, Treason started with a much smaller question: could I build the mechanics of that kind of 2D adventure world myself?
The first version was little more than a small figure moving around a 20 × 20 tile world. I built it as an experiment, and within a couple of days that much was working. Once I had proved to myself that JavaScript could do something decent, I showed it to a friend. He encouraged me to keep going, so I did—adding to it here and there, usually in short bursts on the ferry to and from work in downtown San Francisco. Eventually that tiny experiment became a surprisingly complete RPG engine running in ordinary browser JavaScript.
At the time I liked playing games on the iPhone but wasn't finding the kind of old-school 2D adventure game I wanted, so I decided to adapt Treason for it. I had looked at Apple's iPhone SDK, but I didn't have the time to make that my development environment. JavaScript let me build and test quickly, and the browser became the platform.
The target hardware mattered. I wanted it to run on an iPhone 3G, which meant there was very little processor time or memory to waste. The game therefore uses deliberately lean systems for line of sight, monster movement and population, dynamic controls, combat, map drawing and state management.
Then Treason created another problem: the world needed to get much bigger, and I did not want to draw a giant map by hand. I paused work on the game and wrote RhinoBuilder to generate a world for it instead. RhinoBuilder eventually became its own project, but it began as a tool Treason needed.
By January 2012 I had several other projects demanding attention, and development stopped before the larger plot and quest structure were finished. The underlying world survived, though—and a lot of it still works.


More than a demo. Less than a finished RPG.
The plot is incomplete, but Treason’s simulation and game systems are very real. You can spend quite a while simply exploring what was built.
Explore
Travel a large tile-based world with towns, wilderness, roads, forests, hills, mountains, shallow and deep water, interiors and other locations.
Fight
Use melee and ranged weapons against creatures moving in the same world view rather than being transported to a separate combat screen.
Develop
Strength, agility, intelligence and force of will improve through what the character actually does rather than by simply spending abstract level-up points.
Trade & Equip
Buy, sell, equip and use weapons, armor and items through the inventory and merchant interfaces.
Travel by Water
Ships can cross open water, skiffs are limited to the shallows, and there is now once again a working submarine moored off Tamalito.
Get Lost
The map reveals the world, while the sextant provides the information needed to know exactly where you are. Exploration is intentionally not omniscient.
Enough to get you moving.
Treason was designed around a compact screen and context-sensitive controls. The labels on the action buttons change depending on what is happening around you.
Controls
On a phone or tablet, use the on-screen controls. On a computer, you can use the mouse or the original keyboard shortcuts.
- Q W E R
- The four dynamic action buttons.
- Numpad
- Eight-direction movement on an extended keyboard.
- U I O
- Northwest, north, northeast.
- J / L
- West / east.
- M , .
- Southwest, south, southeast.
- Do…
- The pull-down menu contains additional and utility actions.
The screen
The character remains centered while the world moves beneath the view. The text display reports movement, encounters and the results of your actions, so it is worth watching. The four large action buttons are dynamic: their labels and functions change as circumstances change.
Combat and survival
- Most creatures you meet in the wilderness are dangerous. Arm yourself when necessary.
- Weapons behave differently, and ranged weapons attack directly across the main game world.
- Hit points represent immediate endurance. Reaching zero means death.
- Food matters. Running out eventually costs hit points.
- Walking around while disarmed slowly restores health; healing potions work much faster.
Character growth
Treason does not use a conventional “gain a level and distribute points” system. Attributes improve through relevant behavior: heavy weapons favor strength, smaller weapons favor agility, high-damage attacks can improve intelligence, and succeeding while badly hurt can build force of will.
Because the overarching plot was never completed, the best way to approach this version is as an explorable old-school RPG sandbox. Wander. Fight things. Visit towns. Buy equipment. Find the boats. See how far the systems go.
Go play the unfinished thing.
The next page is the actual game. On browsers that block automatic audio, clicking through here also gives Treason the best chance of being allowed to play its intro sound.
Play Treason →