Canon
My eight year old daughter wants to make video games.
She’s obsessed with this idea. She likes playing video games<br>too, but it’s just not the same. Experiencing the world, even<br>defeating the world, is too passive. She wants to make the<br>world.
So I made her a game where she can make games. A multiplayer world<br>made of text and images and a tiny new scripting language, where she<br>can take anything and everything apart to see how it works. I first<br>learned to code in the days when View Source was a reliable<br>teacher, and I think she deserves the same.
The game has a lot of limitations. The language, Cant, is<br>not a very good language, and that’s on purpose.
But it also turned out to be a lot of fun. I call it:
Canon
Canon is a modern, web-based take on the classic<br>MUDs<br>of the Old Internet.
For the uninitiated: back before World of Warcraft made the MMORPG a<br>big studio genre, we had text-based MUDs (and<br>MUCKs<br>and<br>MUSHes) where players could adventure and socialize in vast realms made of<br>pure written words.
I spent countless hours exploring these imaginary places. I wanted to<br>make something in that spirit that would feel more familiar to a<br>modern audience.
Canon has strong opinions about what makes a good MU*, and what makes<br>a good learning environment. Every room, object, and interaction in<br>Canon is player-created, and it can all be inspected, copied, and<br>modified.
The kiddo loves it. If you’re the kind of grownup who’s into<br>roleplaying or text adventures, or has some nostalgia for the age of<br>telnet and the early web, you might like it too.
But first, recipe blog style, let me tell you how we got here.
Training wheels for the bicycle for the mind
Do you remember<br>HyperCard? If not, do you remember<br>Myst? (If not, congratulations on being young. Bear with me.)
Bill Atkinson dreamed up HyperCard in 1985 after an LSD trip. I first<br>encountered it in 1989, in my 4th grade computer lab, and also had my<br>mind expanded.
HyperCard works like this: there are cards.
I mean, that’s pretty much it. That’s the genius. There are cards, and<br>you can put computer things on them. Buttons and text and pictures and<br>video. Cards get stacked together. A HyperCard app is called<br>a “stack”. Get it?
And then all those buttons and pictures and things: you can make them<br>clickable. And you can tell them to move between cards in the stack.<br>It’s a choose your own adventure book as UX.
(If this sounds kind of like a web site, well, yes. HyperCard was one<br>of the first real usable instances of<br>HyperMedia<br>and influenced Tim Berners-Lee’s development of the World Wide Web.)
on mouseUp<br>go to card id 123<br>end mouseUp
That there is valid<br>HyperTalk, the programming language underlying HyperCard. But for the most<br>basic interactions like that – click a button, go to a card – you<br>don’t even need to know HyperTalk. You can wire things up using a<br>simple GUI editor.
If you can move a mouse pointer you can use HyperCard. And if you can<br>use HyperCard, you can program HyperCard.
I could write a whole series of posts about this. But the two things I<br>want to impart to you now are as follows:
HyperCard was magic .
HyperCard sucked .
It was magic and it sucked
In many ways HyperCard stacks were<br>not good apps. They were heavily constrained by the card metaphor. They used input<br>elements from the MacOS visual language, but they did not, and could<br>not, feel like normal native MacOS applications. HyperTalk made the<br>same mistake later repeated by<br>AppleScript: trying to make a programming language look more like natural<br>language, thus failing to be either thing well.
To any real programmer it was a frustrating underpowered environment.<br>But those same flaws and constraints made it magically accessible to<br>two hungry groups: non-programmers and<br>curious kids .
The first group produced a ton of stuff. The Internet Archive has a<br>playable<br>collection of thousands of stacks. If you remember the Early Web, just browsing the thumbnails should<br>give you a familiar feeling. Games! Zines! Fandoms! Manifestos!<br>Somehow porn! Before the web, people with a Mac and Something To Say<br>traded stacks on floppies.
I fell into the second camp. At nine years old I found HyperCard on my<br>elementary school’s<br>Macintosh SE<br>and quickly discovered that unlike most computer programs,<br>everything in HyperCard was editable. I started making the<br>first thing that popped into my mind, which was a<br>Street Fighter<br>style fighting game with two crudely drawn players.
Artist’s recreation. Alas, the original stack is lost to The<br>Ages.<br>Which is what I call the box of dead floppies in my<br>parents’ basement.
I didn’t know anything about programming, much less advanced gamedev<br>concepts like sprites. But I knew I could link buttons to<br>cards. So I did that. With the determination only a hyperfocused child<br>can muster, I set about<br>drawing individual cards for every possible combination of player<br>moves and positions, with buttons as “controls” to move between them. I’d found me a<br>hammer, and I...