Update: Karateka is now available in the App Store and for Sony Playstation Network, Xbox Live Arcade, and Steam.
The modern remake of Karateka (out today on Steam) has given me a great reason to dig into my archives and revisit the long-ago era when I developed the original Karateka on a 48K Apple II.
If you’re interested in making games, you may enjoy this series of short videos about the creative and technical process of making Karateka, then (1982) and now (2012). Each episode focuses on a different aspect of production: Inspiration, Animation, Sound and Music, and Gameplay. They’re posted below.
The game industry has changed a lot in thirty years. And yet the more things change, the more they stay the same. For readers interested in delving deeper into the old days, check out the rest of this post below the videos.
Episode 1: Inspiration
Episode 2: Animation
Episode 3: Sound and Music
Episode 4: Gameplay
From My Old Journals
When I started the first Karateka, in 1982, I was a 17-year-old Yale freshman and avid gamer, trying to balance a college courseload with my aspiration to become a published game author. Karateka made that dream a reality. It launched my career and paved the way for my next game, Prince of Persia.
That same year (1982), I started keeping a private journal — a habit I’d keep up for the next decade, as readers of The Making of Prince of Persia (1985-1993) will know. More surprisingly, I never got around to destroying it. And now it’s in the distant-enough past that, rereading it, I’m able to laugh rather than cringe (OK, so maybe it’s a bit of both).
As a time-capsule record of that early Apple II era, and a window into the maniacal brain of a teenager obsessed with “breaking in” to making games and/or movies, it may be of interest to others. So here it is (as DRM-free pdf, epub, and Amazon Kindle ebook, with print edition to follow): Volume One of my old journals, The Making of Karateka.
And, of course, I hope readers will check out the new Karateka.
My Apple II-unaware friend Jamie walked into my office this morning, surveyed the detritus of yesterday’s marathon source-code extraction, and asked “Good Lord, what happened here?!”I explained that the original Prince of Persia source code had just turned up after being lost for 22 years, and that two stalwart companions and I had dedicated most of the previous day and night to extracting it and posting it on github.
Jamie — who knows the term “source code” primarily as the title of the movie Jake Gyllenhaal did after Prince of Persia — digested my explanation; then, looking as confused as before, asked “Why?!?”
It was such a simple question, it stumped me for a moment. Why would I spend a whole day trying to recover data from some ancient floppy disks?
I said: “Because if we didn’t, it might have disappeared forever.”
Why source code?Non-programming analogy: Video game source code is a bit like the sheet music to a piano sonata that’s already been performed and recorded. One might reasonably ask: If you have the recording, what do you need the sheet music for?
You don’t, if all you want is to listen and enjoy the music. But to a pianist performing the piece, or a composer who wants to study it or arrange it for different instruments, the original score is valuable.
It’s possible, up to a point, to reverse-engineer new source code from a published video game, much as a capable musician can transcribe a musical score from listening to a performance. But in both cases, there’s no substitute for the original document as a direct line to the creator’s intentions and work process. As such, it has both practical and historical value, to the small subset of the game-playing/music-listening community that cares.
This is why I was so sorry to have lost the Prince of Persia source code, and happy to find it again.
Lost and found (Geek quotient = 9)
If you’ve read my 1980s game dev journals, you know that by the time Prince of Persia shipped in 1989, I was burned out on coding and seriously eager for the next chapter of my life to start. So I did what most programmers would do: I backed up my Apple II source code onto 3.5″ floppies, stuck it in a box, and promptly forgot about it.
Thirteen years later, when I looked for that box of source code again, I couldn’t find it. I was in Montreal with an amazing team making Prince of Persia: The Sands of Time. Lead programmers Dominic Couture and Claude Langlais had volunteered to port the original POP to the PlayStation 2, and slip it into our new game as an easter egg. (This was their idea of a fun respite from crunch time.) All they needed was the source code. But as much as we searched — from my garage to Broderbund’s archives to Doug Carlston’s basement — it was nowhere to be found.
Finally we tracked down Scott Shumway, who’d done the 1992 Mac port of POP. He didn’t have the Apple II source code either, but he did have the Mac source code. Dom and Claude made short work of porting it to the PS2, and Sands of Time got its easter egg. Everyone was happy.
On my return to LA, I dug deeper, and turned up a whole shoebox full of Apple II floppies, some dating back to high school. The source code to all my early games was in there: Deathbounce, Karateka. But no POP.
I didn’t need the source code for anything; and it wasn’t as if POP had been lost to history — vintage Apple II POP copies (and their disk images) were widely available — but still, it bothered me to think that something I’d spent years working on was just gone. I felt dumb for not having kept a copy.
This was eight years ago. I gave up the search and forgot about it.
Until two weeks ago, when my Dad shipped me a carton of my stuff he’d found cleaning out the closets of his New York apartment. Inside was the source code archive I’d mislaid in 1990.
Paper is forever
Try popping your old 1980s VHS and Hi-8 home movies into a player (if you can find one). Odds are at least some of them will be visibly degraded or downwright unplayable. Digital photos I burned onto DVD or backed up onto Zip disks or external hard drives just ten years ago are hit and miss — assuming I still have the hardware to read them.
Whereas my parents’ Super 8 home movies from the 1960s, and my grandparents’ photos from the 1930s, are still completely usable and will probably remain so fifty years from now.
Pretty much anything on paper or film, if you pop it in a cardboard box and forget about for a few decades, the people of the future will still be able to figure out what it is, or was. Not so with digital media. Operating systems and data formats change every few years, along with the size and shape of the thingy and the thing you need to plug it into. Skip a few updates in a row, and you’re quickly in the territory where special equipment and expertise are needed to recover your data. Add to that the fact that magnetic media degrade with time, a single hard knock or scratch can render a hard drive or floppy disk unreadable, and suddenly the analog media of the past start to look remarkably durable.
This is why, when I posted about finding the POP source code, digital archivist Jason Scott, Apple II collector Tony Diaz, Derek Moore, and the technical teams behind the DiscFerret and Kryoflux disk readers volunteered their time and effort to give us the best possible shot at a successful extraction.
Let me begin to count the ways I’ve been lucky with this: The box was found. The disks were intact. Prince of Persia and I happened to have a high enough public profile that people of Jason and Tony’s caliber (and dozens of others who contributed their expertise via IRC, skype and twitter from around the world) cared.
In the bigger picture, our timing was lucky. The 1980s and the Apple II are long enough ago to be of historical interest, yet recent enough that the people who put the data on the disks are still with us, and young enough to kind of remember how we did it. Roland Gustafsson, author of the special 18-sector RWTS routines that had made our disks super-efficient in 1988 (and unreadable to anyone but us), was able to get on IRC in 2012 and explain what he’d done to Discferret kids who weren’t born then.
For all these lucky reasons, our archaeological expedition was crowned with success.
From a preservationist point of view, the POP source code slipped through a window that is rapidly closing. Anyone who turns up a 1980s disk archive 20 or 30 years from now may be out of luck. Even if it’s something valuable that the world really cares about and is willing to invest time and money into extracting, it will probably be too late.
This is why it’s awesome that there are people out there working on digital preservation. Because now is the time.
Back up your backups
Jason suggests the following rule of thumb: If you have data you want to keep for posterity, follow the Russian doll approach. Back up your old 20GB hard drives into a folder on your new 200GB hard drive. Next year, back up your 200GB hard drive into a folder on your new 1TB hard drive. And so on into the future.
As for me, the past 48 hours have been a fun walk down memory lane. And have given me a renewed appreciation for paper, celluloid, and stone tablets.
(Postscript: For 6502 assembly-language aficionados, the Prince of Persia source code is now up on github, along with a README file that answers some frequently asked questions. I’ve been amazed and moved by the outpouring of interest in the #popsource saga — it literally crashed this website for several hours today.)
Now, I really need to get back to my day job of making up new stuff. I can only hope to have the same lucky, glorious headache of trying to recover some of it 20 years from now.
Now that the movie is out on DVD/Blu-Ray, I figure the easy way to satisfy curiosity is to simply post my screenplay from June 2005.
Quick history: This was the last draft I wrote, starting from the story John August and I pitched to Disney/Bruckheimer in 2004. A series of other writers took it from there: Jeff Nachmanoff, Boaz Yakin, Doug Miro & Carlo Bernard, in that order, resulting in the shooting script that went into production in summer 2008.
Update: If you’re curious about the game-into-movie adaptation process, I’ve also posted the original game script of Ubisoft’s Prince of Persia: The Sands of Time, which I wrote in 2002-03, and an accompanying article about how that game story was developed. As these materials illustrate, writing for games and movies are two very different crafts.
Thanks to Jeremie Biron for finding and posting these “Tips for Game Designers” I gave in 2004, on the release of Prince of Persia: The Sands of Time.
- Prototype and test key game elements as early as possible.
- Build the game in incremental steps – Don’t make big design documents.
- As you go, continue to strengthen what’s strong, and cut what’s weak.
- Be open to the unexpected – Make the most of emergent properties.
- Be prepared to sell your project at every stage along the way.
- It’s harder to sell an original idea than a sequel.
- Bigger teams and budgets mean bigger pressure to stay on schedule.
- Don’t invest in an overly grandiose development system.
- Make sure the player always has a goal (and knows what it is).
- Give the player clear and constant feedback as to whether he is getting closer to his goal or further away from it.
- The story should support the game play, not overwhelm it.
- The moment when the game first becomes playable is the moment of truth. Don’t be surprised if isn’t as much fun as you expected.
- Sometimes a cheap trick is better than an expensive one.
- Listen to the voice of criticism – It’s always right (you just have to figure out in what way).
- Your original vision is not sacred. It’s just a rough draft.
- Don’t be afraid to consider BIG changes.
- When you discover what the heart of the game is, protect it to the death.
- However much you cut, it still won’t be enough.
- Put your ego aside.
- Nobody knows what will succeed.