Amazing Quest Q&A

Amazing Quest should be completely open to the interpretation of players, to their appreciation of it, and, if they choose, to their rejection of it.

I refrained from discussing anything about the game during the IF Comp. Now that it’s over, I am glad to answer some questions that have arisen—with the earnest hope that my answers don’t preclude people from coming up with their own interpretations and responses.

These aren’t really frequently asked questions, but they are all actually questions that have been asked at least once. When I quote directly, the quotations are from anonymous feedback from IF Comp players. Whether quoted or in paraphrase, all of these are real questions or responses that I’ve gotten.

Q: Are you trolling? Making a joke? Playing a prank?

A: No.

Q: Why did you enter this thing, which isn’t very much like IF as we understand it, in the IF Comp?

A: Because I hoped some people would enjoy it and be provoked by it (in a positive way) when they encountered this game in the context of the Comp. That may have only happened twelve times, based on the ratings that were greater than 5, but perhaps I provided some interest and joy to these twelve players that outweighed the other players’ confusion and disappointment.

Q: As a computer program, what exactly is Amazing Quest?

A: A quasi-spoiler here, but: it is a 12-line Commodore 64 BASIC program, with each line being of the maximum length that can be typed in: 80 characters, using all keyword abbreviations and other shortcuts. That makes it the maximal Commodore 64 BASIC program that will fit on one screen. On the second half of the last logical line (line 11), which is the last physical line of the screen, I included a sort of informal all-permissive free software license.

Q: Is this an experiment?

A: I don’t find it interesting to produce any IF, other digital games, other digital literature, or other digital art, unless what I’m doing is an experiment. So, of course.

Q: Is this a parody?

A: I don’t consider it to be, since you’re asking me. If you have thoughtfully considered the game and that’s what you take away from it, I respect your view.

Q: What am I supposed to do when playing this?

A: Since you’ve asked me, I’ve tried to explain this quite explicitly in the introduction: “If you allow your imagination to help you elaborate each stop on your journey, and if you truly get into the mindset of the returning wanderer, Amazing Quest will offer you rewards as you play it again and again.” You can read that, and the game, however you want, but I’d say that Amazing Quest prompts you to imagine, from the standpoint of the main character. So, imagine.

Q: “Oh hey, it’s A Space Odyssey!”

A: For me at least, I did consider Amazing Quest to be a serious engagement with Homer’s Odyssey, and that was one of the things that motivated my work on the project. I’m glad that some people saw this aspect of the project. I hope that enriched some people’s experience of it.

Q: “I found the intro and strategy guide more compelling than the game itself.”

A: Personally I would have preferred that all elements of Amazing Quest (the introduction, the strategy guide, the BASIC game itself) had worked together to good effect for you, but I’m glad that you liked something about the project. My development of the short framing texts was meant to relate to the way that early games had similar supporting materials that were essential to the experience. In any case, I am glad someone liked these texts, because it took me a long time to type them up on my Smith Corona Classic 12 without making any mistakes.

Q: “I don’t suspect that you’re in it for the ratings.”

Only one of more than 100 games was going to win the Comp. (Well, this year it happens to be two, because of a tie—but you get my point.) I made this game for the IF Comp so that players would encounter Amazing Quest and play it in that context, in case they found it compelling in that context.

Q: “I guess the point was go ‘behind the scenes’ and read the program in BASIC? That isn’t a particularly interesting goal…”

A: It wasn’t interesting to you, but there are many people in the world. One player ported the game to BBC Micro BASIC, so it seems like the nature of this game as a BASIC program was somehow interesting to that person. Even apparently simple projects like this may have many complex aspects to them which aren’t evident at first. And perhaps only a very few people will be interested in particular aspects. So in this case, perhaps this “behind the scenes” aspect is important to the person who ported it to the BBC Micro, and maybe it will be interesting to people who know Commodore 64 BASIC very well. I’m frankly surprised that someone engaged with the BASIC program so thoroughly during the Comp. It easily could have taken a few decades for anyone to really become interested in the game’s code, if that was ever going to happen.

Q: SPOILER, select the following text to read: The player’s input has no effect on the outcome, and that’s stupid.

A: Although this isn’t a question, I’ll mention: If you understand a little more about Commodore 64 BASIC, you’d find that the user’s input does have an effect on the outcome.

Q: SPOILER, select the following text to read: Okay, but whether you answer yes or no has no effect on the outcome.

A: This, while also not a question, is true. So, let’s begin with whether this is fair to players of the game. Does that contradict anything said on the main page (“I must decide as if it all depends on me, trust as if it all depends on the gods”), within the game itself (“The gods grant victory”), in the introduction, or in the strategy guide? And in terms of how this game relates to the Odyssey, in which a character is fated to return home, alone, from the beginning, and is then brought home by the will of the gods—is there any contradiction there? To continue along these lines, even understanding this aspect of the game, if you decided to go on raids at every opportunity, plundering away, would that be any different than if you always declined to raid? Is your intentional choice irrelevant, even if the outcome is “random”? With all of this in mind, consider something more concrete and immediate. Let’s consider people who live in the United States who voted in the 2020 election. Why would they do that? Realistically, an individual’s vote had no more effect than any one particular Y/N response in Amazing Quest. Let’s heap one more thing on here, purely related to what one might call gameplay. If you want to imagine what’s going on—a journey home—why would this particular property of the game in any way stifle your imagination?

Q: Was this project motivated by anything besides the Odyssey?

A: Yes. I’ll be discussing this and other matters related to Amazing Quest at the Seattle area IF meetup, which will take place online on December 13, 2020 at 2pm PST. If you want to join, you’ll need to email the organizers; see the intfiction.org forum for more information. I hope this group doesn’t regret their plan to host the author of the 98th place IF Comp 2020 game! I’m certainly still looking forward to discussing Amazing Quest.

Exquisite Corpses are Now on Display

"Some red pendulums will quickly consume the grim president ..."

In 1984, a type-in program appeared in the French Hebdogiciel—no surprise there, since this weekly publication was all about type-in BASIC programs! This one, however, was not entirely unlike the games and mathematical recreations that typically appeared; it did, however, have an explicit link to a French 20th Century avant-garde movement, Surrealism. The program, by Philippe Henri, was for the TRS-80 and called “Cadavres Exquis.”

Ariane Savoire and I have translated this program to English (as “Exquisite Corpses”) are very pleased that the Vassar Review has just published the edition we have prepared, which includes:

  • A working version of both French and English programs running in an in-browser TRS-80 emulator,
  • The BASIC code for both French and English programs, and
  • A high-quality scan of the program as it originally appeared in Hebdogiciel.

I spoke about our work on this program in my talk “Preserving Corpses with Emulation” at the Stanford Software Preservation Workshop, February 22, 2018.

Please visit the site and run this classic program for yourself. When you do, note that you must click on the black emulator area to give it focus and press a key each time you want a new sentence. That’s how the original program ran; we have not modified the way it functions. In some ways the program does seem a bit obsolete. It refers to Czechoslovakia, for instance. You can see from the included snapshots that almost 25 years later, however, “Exquisite Corpses” maintains some relevance!

Cadavre Exquis

Tiny Trope Tank Productions

Recently, at the suggestion of our writer in residence, Milton Läufer, we in the Trope Tankt have been producing digital files for discussion at meetings. These productions, almost always computer programs but not constrained to be such, must be at most 256 bytes.

It’s been extremely productive in terms of thinking about digital media, platforms and programming languages, and how we approach creative projects — and even other projects — generally. Postdoctoral researcher Sofian Audry prompted us to discuss this some at the last meeting.

So far we have three sets of 256b files which have landed in this directory, organized by date and with file names that indicate who wrote what:

http://nickm.com/trope_tank/256/

They include work by RA Chris Kerich, who has produced rather demoscene-like visual effects using Python running in a terminal, and by postdoctoral researcher Angela Chang, who has provided short example programs for use in teaching. Angela’s examples show that you don’t have to have hypercompressed, confused code when you write short, interesting programs. You can value clarity and pedagogical usefulness if you like, or you can pack in as much as possible, for instance, in order to produce a visual effect.

Sofian has explored creative computing history by writing a 256b Commodore 64 BASIC program that implements, or at least strongly refers to, the classic Lemonade Stand BASIC program. Milton has generated various compelling visual displays. His and Chris’s most recent programs are less clearly mathematical and regular, instead imitating the natural world.

It was very apropos that Christian Bök pointed me to Dwitter, a framework for making tiny programs that can be easily shared on the Web, just recently. I’m sure we’ll all dig into that soon.

My pieces include one bash script, one Python 3 program, and an executable of 256b written in assembly for the Commodore 64. The Python 3 program is actually a very tiny text adventure, Wastes, and is listed on the Interactive Fiction Database. In fact, I’m pleased to see that at this point, it has one four-star (our of five) review!

Happy 50th to BASIC

Dartmouth is celebrating the 50th anniversary of BASIC tomorrow with several events, including the premiere of a documentary on BASIC that I hope to see soon. I teach two classes tomorrow; those and my other meetings will make it impossible for me to stop by, even though Dartmouth is not very far away.

There’s also a celebratory Time article about BASIC, one that is packed with nice photos, scans, and GIFs showing how programs were listed and how they ran. The GIFs include a sped-up one of 10 PRINT running in an emulator, and there’s a link to 10 PRINT CHR$ (205.5 + RND (1)); : GOTO 10, our book (by Nick Montfort, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas, Casey Reas, Mark Sample, and Noah Vawter).

I do genuinely appreciate the link and the article overall – there’s excellent discussion of popular programming, recollections of personally writing BASIC, BASIC in books and magazines, and even David Brin’s 2006 Salon article – but it’s too bad our book is (twice) referred to as “a book of essays” when it is actually a single book-length academic study of the title program; quite in distinction to a book of essays, it was written by the ten of us in a single voice. The book, which among other things provides the major academic study of BASIC this century, is also available for free online and anyone can download/open it in seconds to check it out. And if such a glance entices a reader, he or she may, like the popular BASIC programmer of the late 1970s and 1980s, dive further in and learn about formal, material, cultural, historical, and other aspects of the title program, the Commodore 64, BASIC, and more.

C64 BASIC Workshop at MIT, January 29, 2-5pm

I am moved by the holiday spirit of MIT’s Independent Activities Period (IAP) to announce a Commodore 64 BASIC programming workshop using original hardware.

[Update: The workshop is now fully subscribed, but I will try to arrange for spectators who would like to join us around 4:30pm to see the results of our work.]

C64 BASIC Code running in the Trope Tank

Beginning at 2pm on Wednesday January 29, we will spend about two and half hours working on short BASIC programs. Collaboration will be strongly encouraged; there will be one Commodore 64 provided for each pair of programmers. (If you negotiate with your partner, you may write something individually, however.) It is fine to proceed by modifying programs, and some will be provided for this exact purpose. Programs need not be interactive, but can be. Visual and textual effects will be our focus, but programmers are welcome to work with sound, to develop simple games, or even (gasp!) to write a program that does something useful.

No programming experience (in BASIC, on the Commodore 64, or otherwise) is required. Those who are new to programming can be paired with experienced programmers, if this is suitable to both people. Also, the essentials of BASIC on the Commodore 64 will be described during the workshop. Finally, new programmers can do very interesting work by modifying programs, changing data and parameters and then getting into changing and adding code.

At about 4:30pm we will have a presentation, screening, showcase, or compos of sorts for Commodore 64 BASIC programs in the following three categories:

– One-liner
– (max) 10-line program
– (max) 25-line program

After this workshop, the code developed will be presented and shared on the Web, where it can be run in emulation or by people who have Commodore 64s.

The workshop will take place in my lab at MIT, The Trope Tank, room 14N-233. The site for the lab includes directions for getting there.

The time for the workshop, again, is:

January 29 (Wednesday)
2pm-5pm

I can accommodate 8-10 people, programming in pairs. Reserve a place by sending me an email. Because space is limited, please promise to come to the workshop if you write to reserve a space.

It’s a Good Word. Maine.

Just back from several travels, I’ve found that there’s a video record online of me, Patsy Baudoin, and John Bell presenting 10 PRINT at the University of Maine way back in April of this year. In our presentation, we answer questions and discuss the origin of the 10 PRINT project and the nature of our collaboration. And I do some livecoding. Pretty often, actually.

Please note that 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 is available as a beautiful MIT Press book, designed by our co-author Casey Reas, ans also as a free PDF.

Here’s the video of our University of Maine presentation on the “10 PRINT” program and book.

10 PRINT Reading / Release Party

10 PRINT cover

Our first event for 10 PRINT is scheduled for:

Monday
November 12, 2012
7pm

at the

Harvard Book Store
1256 Massachusetts Ave.
Cambridge, MA.

This means, of course, that the book will be printed and available for sale by then, which is less than a month from now.

The Harvard Book Store is an independent book store in Harvard Square, founded in 1932.

Of the ten authors of 10 PRINT, we’re planning to have at least me (Nick Montfort), Patsy Baudoin, and Noah Vawter there for some reading from the book, comments on the titular program and the writing of the book, and discussion. The reading is free and takes place at the bookstore itself, as the page on the event explains.

Computational Literacy: Get with the Program

Mark Sample has posted five basic statements, ahem, I mean 5 BASIC statements, on computational literacy.

I must point out that while they are all programs, the third and fifth ones actually include multiple statements. And, the program that number 4 is referring to is:

10 PRINT "GOODBYE CRUEL WORLD"
20 NEW

Very much worth a read – from the standpoint of understanding programming and its cultural intersections generally, not *only* because Mark is promoting the book that he, I, and eight others wrote, which will be published in November.

One-Line C64 BASIC Music

Local sound artist/electronic musician Keith Fullerton Whitman released an extraordinary piece on the b-side of his November 2009 cassette hallicrafters, inc. The piece is called 10 poke 54272+int(rnd(1) *25),int(rnd(1) *256) : goto 10 and is 18 minutes of sound produced by a Commodore 64 emulator running the BASIC program that is the title of the piece.

The memory locations beginning at 54272 are mapped on the Commodore 64 to the registers of the SID (Sound Interface Device). By POKEing random values into them, the SID, although it is a musical chip, is stimulated to produce sounds in what probably seems like a non-musical way: based on the effect of register settings and the sequence produced by the system’s random number generator, a polynomial counter.

I’m listening to the piece running on a hardware C64 now, which is soothing, although it seems like it shouldn’t be. Looking at the code, I note that the program

10 poke 54272+rnd(1) *25,rnd(1) *256 : goto 10

will put the same values into the same memory locations (and therefore SID registers) in the same order. The INT function is unnecessary because all arithmetic in C64 BASIC is done in floating point and then cast to integer whenever necessary. It’s possible that removing these functions will cause the piece to speed up, however, and I suspect it will, even though a BASIC interpreter could skip the unnecessary INT calls to begin with. There would be various ways of determining this, but the one I’d like to try involves getting two C64s, each with one version of the program, and seeing if they go out of phase.

By the way, I say that these two programs will put the same values in the same order because RND(1) returns a deterministic sequence. Any time either of these programs is invoked before other calls to RND are made, they will produce the same sequence. Using RND(0) would seed the random number generator on the jiffy clock, so would do different things depending upon how long the computer had been on before startup.

Thanks to sound artist and digital media scholar Kevin Driscoll, a.k.a. Lone Wolf, for letting me know about this.

Update: Hilariously, I overlooked that Whitman is not the author of this program – he credits Noah Vawter, a.k.a. Shifty, who is currently collaborating with me on a project about a one-line Commodore 64 BASIC program. I guess I was too distracted by that picture of an iPhone running a C64 emulator.