Shroud of the Avatar Challenge: Port Richard Garriott’s First Game to Unity (or Web)
I saw this story first on Polygon yesterday morning, but it has subsequently been given a page on the Shroud of the Avatar website as well.
Most of you are probably aware that Akalabeth, Garriott’s first released game, was actually the 28th dungeon-crawling game he had written, and in fact was an Apple ][-based re-working of the actual 28th game. Until now, the first 27 games have largely been a thing of mystery…but as of yesterday, we have a little more information about the first game he ever wrote. It looked like this:
The game was inspired by a bet between Richard and his father Owen.
Richard had already written many smaller programs and simple games on the teletype he had access to since 1974. His early programs included calculating radio wave propagation in the ionosphere. Variations of this early “ray tracing” code he wrote won him numerous science fair competitions up through international competition. Still games were his obvious early passion.
Richard’s father told Richard, that if he could create a whole working role playing game, that he would split the cost of an Apple ][ computer with him. The result was D&D #1!
D&D #1 was created on a teletype at Clear Creek High School in Houston Texas, connected via an acoustic modem to a PDP 11 type mini-computer. Richard typed the game on a separate terminal onto paper tape spools, then read the tape strips into the terminal connected to the offsite computer, and ran the resulting program. The resulting program would play a simple Dungeons and Dragons like role-playing game. The player had a character that would explore a dungeon in search of treasure while fighting monsters along the way.
So that’s the history of the game. Here’s the challenge Richard Garriott has posed to the Shroud of the Avatar fandom:
D&D #1 represents one of the earliest known computer role playing games. Originally created and refined between the years 1975 – 1977, this game is one of the few true founding efforts of the entire computer gaming genre. Interestingly the ascii based “tile graphics” are a clear forerunner of what followed in Ultima and many other computer role playing games, and thus remains relevant to the genre’s history.
Richard has been eager to see this simple BASIC program, resurrected in a modern usable form, but remaining true to the original in as many ways as possible.
To achieve this end, Richard is offering a bounty of Shroud of the Avatar pledge rewards for the best reincarnations of D&D #1!
Starting April 15th 2014, just past one year into the development of Shroud of the Avatar, and running for 1 month through May 15th, Richard via Portalarium will be accepting submissions of D&D1 Resurrections in each of two versions. Submissions may be a Unity Version, and or a no-plug-in Browser Version. Winners will be announced shortly after the submission deadline. All submissions become property of Richard Garriott.
Best Unity Version & Best no-plug in Browser Versions will receive a Citizen Level Pledge Reward worth approximately $550.
2 runners up in both categories will receive $165 Collector level pledge each.
Additional eligibility requirements can be found on the Shroud of the Avatar website. The deadline for submissions is May 15th, and a scanned print-out of the source code is available, in PDF format, via the link above. Have at, Dragons and Dragonettes!
I’d like to point out something that’s caused a little confusion in other places. This is a contest to make a direct port of the original, not a work inspired by. In the industry, when porting software (e.g. Chuckle’s Commodore 64 port of Ultima IV), the rights stay with the creator/owner while the converter/porter receives credit. This is why Richard retains the rights to the port.
Damn skippy. 🙂 Has anyone transcribed that blasted PDF yet? I thought about OCR but I’m thinking the PDF’s quality might be an issue.
Also, in the event that posts in response to TFA take an unusually long period of time to be moderated before becoming public due to a protocol-prefix-truncated URL, here’s my post verbatim:
—
Anyone know which version of BASIC this uses? I found the manual for PDP-11 BASIC here:
bitsavers.trailing-edge.com/pdf/dec/pdp11/basic/DEC-11-AJPB-D_PDP-11_BASIC_Programming_Manual_Dec70.pdf
Once we identify the language and find the correct reference manual, the next step would be to either OCR or manually transcribe the code from the PDF. OCR may be difficult due to the low resolution and lack of contrast in the PDF.
Next up would be finding an emulator to a) run the code and b) begin debugging it. I noticed on line 2417, for example, that the word “PRIT” is used instead of “PRINT”. Not good unless PRIT is an actual BASIC statement I’m not aware of, of course. More insidious will be any logic errors that don’t halt execution but only affect functionality.
After it’s running and debugged in an emulator the code will be at a point where it can be ported. I’m guessing a good next step after that would be identifying and renaming variables for clarity and chopping everything up into procedures based on the occurrence of GOTO’s and GOSUB’s.
While difficult, I think the task is possible, but without starting from a solid foundation there will be much weeping and gnashing of teeth.
—
I guess that’s what I get for trying to post at SotA proper, instead of here as I normally do. Fuck.
It’s quite easy to debug as it is. The PRIT part is a bug. It’s supposed to show when the cleric uses a weapon he can’t use.
The code it’s just PDP11 Basic. The only thing weird I found was an instruction that called for a random number using a clk function which I assume must be a “clock” function. The oddity there is that in PDP11 basic, RND(X) always creates a random number between 0 and 1 without taking into account what X is, so putting the CLK(X) function doesn’t seem to do anything.
The code is quite easy to translate into C\C++. Maybe I’ll try doing that or doing the browser version if I got the time.
Interesting. The BASICs I’ve used allowed the specification of an upper and lower bound and you’d use something like RANDOMIZE(TIMER) to set the random number seed to the system clock.
I think Garriott’s like me with respect to programming in that he uses it simply as a means to an end. He wants to create a game, and is forced to learn and use programming to do so. The problem with that, without formal study, is that you never really master the art of programming and end up with some crazy code at times.
I’ve noticed a huge difference between code written by professional programmers and that written by someone just trying to get things done using home-grown knowledge. What’s ironic is that the end products of the latter are often superior in function, if lacking in implementation. I guess dreaming big with rocks and sticks wins over dreaming small at Home Depot.