Lessons Learned, part II: Rules

Continuing my over-analysis of TWIFcomp, which is now several times longer than all of the code in the competition combined, I thought I’d take a look back on the rules and see how they panned out. I thought that a comp about short works should have a short list of rules, that they should be posted quickly, and that they should not drift during the competition. I did get the rules up in 24 hours, and for the most part they didn’t change over the course of the competition, except by additions where clarifications were necessary. Obviously, I didn’t plug every loop hole.

Rule 1: Dates

For such a small comp, I didn’t require any declaraction of entry. It wouldn’t have really helped me anyhow. If no one entered, I was up a roll of duct tape and a package of noodles. Conversely, if it was wildly popular, I have a closet full of duct tape and noodles, so no big loss (actually, they are kept in separate closets, but still). Times: GMT confused some people, but in the same way that you don’t deserve to rule the world if you can’t stick the megabucks stickers on the poker chips, a little technical darwinism never hurt anyone. The announcement of results excluseively by tweet was a gimmick specific to the TWIFcomp, but for future comps, it couldn’t hurt to push out the results by various feeds. Actually, this is probably something that would happen anyhow, with or without the involvement of the organizer.

Rule 2: Games

Any programming language, any human language, white space doesn’t count, has to be interactive.  I had anticipated that the definition of interactivity would have been debated, but it was the white space rule that got the most discussion. I really appreciate that some of the participants were purists and held to an absolute 140 byte limit. However, with different encoding schemes, operating systems, etc., length is a slippery concept. Also, you can’t tweet a tab or carriage return. I believe that the most tweetable entry, as submitted, would be Doug Orlean’s Manifest Destiny, written in PLT Scheme. Even with spaces, it fit the length limit, and it had no white space other than single spaces. So, bravo, Doug.

Now, regarding the white space. Here, I realized that I was giving authors a loophole, but it was a non-trivial one. I figured that if someone really could make clever use of white space, that in itself would be a worthy goal. I’m only one vote, though, so if other people didn’t agree, that would have been reflected in the voting. It is obvious from the results of the competition, that people appreciated Adam Thornton’s ingenuity in turning a game of less than 140 characters into a half-gigabyte monstrosity (and I say that affectionately). In the first comment on TWIFcomp, someone had joked about writing a game in white space, and I countered with a dare to write a z-machine. Adam went one step further, squishing the entire inform development system into the invisible world between printable characters.

Conclusion: Some rules are made to be cleverly interpreted.

Rule 3: Submission

Nothing special here. Everyone sent their game in, and I didn’t get a lot of requests to update games during the comp (which is good, since the submission by email system was a little unwieldy). I guess not many people felt much urge to update a 140 character game (although I notice that Alexandre Muniz came out with a revised “Make All Sad” that manages to shave off enough characters to allow addition of new features.

Rule 4: Behavior during the comp.

The rules explicitly allowed discussion of anything during the competition, and I didn’t even care if people posted the games on their own sites as long as they pointed people towards the version on the TWIFcomp site as the canonical version for judging. I did not have time to set up an Author’s Club, as had been done for the last two years for IFcomp — it seemed like overkill for such a short competition. Even so, some author-to-author discussion took place in blog space.

I was happy to find that during the entire comp, I didn’t see any flame wars, insulting posts, etc., on any forum. It was downright civil.

Rule 5: Voting.

I had hoped for a stronger showing in terms of votes, mostly because I was afraid that some games would not get enough votes to make the average reliable, and that one outlier could strongly skew the results. The game with the least number of votes received five, and the game with the most received 15. The votes were relatively consistent, particularly for the top-placing games.  Everyone recused themselves appropriately, and I did not detect any kind of cheating or favoritism in the voting. So, quantitatively poor, but qualitatively good.  I had considered setting a threshold number of votes below which a game would not be evaluated, but given the low numbers and consistency of voting, I went with a simple average.

Rule 6: Prizes.

From duct tape to pokemon. I was very pleased to see enthusiasm for a comp that did not offer cash prizes. I’m sure part of this is that the games were so short, and so little time was invested in writing. On the other hand, in the bigger comps, the amount of the cash prize cannot possibly compensate people for the time they sink into those projects. It is clear from TWIFcomp that peer recognition can be a substantial motivator for online competitions.

Rule 7: Intellectual property.

This was mainly a “I don’t want to get sued rule.” The more the comp went along and people asked if me if their code could be considered as infringing on someone else’s IP, the more I realized that it would be very hard to do so in 140 characters. Even if someone lifted text verbatim out of some other work, it would be a very short quote and probably fair use. Most instances also would have been considered a parody of the original work.  Since there was no way of making any kind of profit in TWIFcomp, I would assume that the waters are not sufficiently chummed to attract lawyers.

The mega-supplemental rule about libraries. This arose as a FAQ, and was tweaked a couple times. This rules was a distant second to the whitespace rule in terms of abuse. The prime offender (and most entertaining example) was Adventiture which took the entire original adventure game as a library. The library had been published before the comp, was online, and freely available, so I have to say that this was entirely within the rules. I am a little surprised that this was not abused by more authors, actually.  If I were to run something like TWIFcomp again, I would probably not allow external libraries in the same way, but restrict the entry to “core” tools for each language (either defining them explicitly or requiring that entrants run their proposed tools by me for approval).

OK, I will now stop obsessing about TWIFcomp. No, really.

TWIFcomp: Lessons Learned, part I

I have never run an IF comp before, and in the aftermath of TWIFcomp, I thought it would be a good idea to write down what worked and what didn’t in case the urge to run another comp ever returns.  I’ve divided this into what I would do differently, and what I would do the same.


  • Lead time. TWIFcomp was organized at the drop of a hat. Spontaneity is nice, but people had little notice that it was coming. Despite that, turn out was good in terms of the number of game submitted and even in the number of authors submitting games. The small size of the games and the limited effort required to write a game likely mitigated the short deadline, but this would not be expected in other comps requiring greater effort on the part of the participants.
  • Website. Luckily, I had a dormant website sitting around, waiting to be reconfigured and populated by data from the comp. On day one of the comp, when I wrote the rules, I wasn’t sure how functional the website would be two weeks later, so I asked everyone to mail in their submissions and later their votes. Never again. It all worked out fine, but it would have been a thousand times better to let game submitters and voters create an account on the website, complete with username and password. While this is kind of a pain for the end user, it would have meant that some of the data entry could have been divided among the participants, and that voting could have been performed online rather than by submitting a spreadsheet. I only received votes from about fifteen people, and I assume this was the result of a short voting period, but also the awkwardness of needing to fill out and email a spreadsheet. Commenting would also have been easier with user accounts, and would have obviated the need for a captcha aside from at the time of account creation. I think such a system would have yielded a more vibrant discussion, although I was generally happy with the way commenting went. Since everyone is drowning in usernames and passwords, one thing to consider in the future would be to implement OpenID, or at least allow people to use credentials that they have created for other comps (assuming that we could all agree on a common system).
  • Links. Must check the links on the website before going live. I think the first ten comments were, “Hey — this link doesn’t work.”  Doh.
  • Links to Text. A link was provided to download each game, but because some games were distributed as text files (i.e., to be run through an interpreter or run as a command line script), the default behavior of left clicking on the link opened the text in a new browser window, exposing the source, and potentially spoiling the experience of playing the game. My assumption was that users would know which files were and were not text files, and would right click the link to download. This was not a good decision, and after a couple days, I replaced the plain text files with zipped versions of the files, so that it would be difficult to accidentally reveal their contents.
  • Binaries. On the other hand, I was reluctant to post binaries, particularly windows *.EXE files. Had I been able to compile the games myself in a sandboxed Windows VM, I would have posted binaries for all the URQ and QSP games, and if there were any problem with the EXEs, I would hopefully have seen it myself. In the worst case, if I generated bad *.EXEs, I would be at blame rather than the game authors. Unfortunately, when I attempted to install the software, I ran up against installation screens full of uninterpretable characters.  I’m sure these characters mapped to cyrillic letters, probably on the Windows 1251 code page, but I didn’t see an easy way to get my installation of windows to make them legible. I believe that it’s not a matter of changing region/language settings, but of having a Russian install of Windows, which I don’t. With more time, I might have had more options, but I didn’t see any alternative here.
  • Timing. Since this was such a short competition (three weeks from announcement to awards), I thought I could slip it into the yearly comp rotation without really interfering with the regularly scheduled games. If I were to do this again, I might move it just a bit earlier to put more time between it and IntroComp.


  • Getting the word out. I posted announcements to both RAIF and Intfiction.org, and noted that while I saw a lot of page views on the forum, I actually got more feedback (and not all of it flames) from the newsgroup. The old girl still has some kick left in her. I also experimented with posting on Russian and French forums, figuring that language couldn’t matter too much in a 140 character game. Both forums took up the idea, and these communities contributed games in both Inform and other systems. Just as the one-room competition is based in Italy but run globally, in any future comps, I would definitely market internationally. While language is somewhat an issue, some authors can write in more than one language, and non-English speaking IF communities are large enough to provide ratings on games in their native languages.
  • Programming Language. The comp threw the gates open in terms of writing system, and this is something I would do again. Some of the CYOA systems in this competition were quite elaborate, and gave the authors some interesting options in terms of story telling. While I agree that the world would not be a better place if everyone wrote a custom parser, I think the option for experimentation should be open.
  • Show all work. TWIFcomp was more about source code than most IF comps will be, but I like the principle of requiring submission and public display of source code. The game is not the only thing to be admired in a comp — the way it is written is just as important to me. I learned a lot of interesting tricks in reviewing the code in TWIFcomp.
  • Online games. I wasn’t sure that I’d be able to get Parchment working smoothly within the drupal CMS  framework, but it came together in the days before the site went live — many thanks to Andrew Plotkin and the People’s Republic of IF website from which I sucked the majority of the code and layout. It sounds like the new version of Inform will make it even easier to generate web-ready content. Additionally, the JACL and ChoiceScript games could be played directly online. All of this instant gratification made the comp itself more interactive and engaging.

TWIFcomp: Some analysis

TWIFcomp, with its first prize of duct tape, was never meant to be a very serious competition, and I am pleased to say that most people took it at face value. Nonetheless, a number of very clever and even thought-provoking works were submitted. This is a post about the entries. In a couple days I’ll post another one about lessons learned in running a comp. Note: The final scores just went up on the main TWIFcomp page.

I’ve noted a few comments in blogs that the games are not much fun as games, and I don’t think that is much of a surprise given the constraint (with the obvious exception of one game which gleefully found a way around the size limitations). However, I would say that almost all the games are playable in some sense. When I wrote the rules, I had thought that the one that would draw the most debate would be: “The game must be interactive.” I guess everyone is at least intuitively onboard with Crawford at this point, and we all recognize interactivity when we see it. In looking over the voting, I have the sense that there is a strong correlation between interactivity (as I understand it) and score.

For me, what set one game apart from the next in TWIFcomp was wizardry. Every game in the comp accomplished the unlikely feat of coding a game in 140 characters. However, some games went a step further, continuing past “unlikely”, and moving into “improbable”, “impossible”, and “ZOMG, how the hell did they do that?” categories. It wasn’t enough to write a game in TWIFcomp, but to write a game with style. It’s not just a game, it’s an aesthetic. As the games began to drift in during the first week in increasingly exotic and densely written code, I was put in mind of the realm of obscure and obfuscated coding described in a paper by Nick Montfort. A lot of the TWIFcomp games have a similar mixture of playfulness and technical virtuosity.

The game METEOR could have been coded in any language, but it was written in BASIC — in all capital letters. Aside from the nostalgic appeal of BASIC, the capital lettering shouts at you. METEOR! The world is facing fiery annihilation, so this only seems natural. The player’s only option is the one that is required to start every BASIC program. Expression is so limited in 140 characters that the choice of language itself becomes a statement. The medium, or in the case its encoding, is the message.

A number of the games take advantage of the player’s expectation of IF. They print a “>” prompt and await input. However, these games are not backed up by the full weight an IF development language like TADS or Inform, they just look the part. The prompt is a facade, and the game either ignores the input, twists it programmatically, or parses out a narrow set of keywords. My favorite example is Travel, which the author describes a comprehensive travel simulator, allowing travel anywhere. It doesn’t really have much of a sense of what you enter, but it does manage to convey an impression of understanding. A-small-casual-game… also does a good job in keeping the player busy, and includes a termination condition. Neither of these is a sophisticated ELIZA-like conversation simulator, and the Turing Test has nothing to fear from these games, but considering the severe restriction in program length, they do an amazing job. The game I have hands and I’m ready to LOOT! satisfies the typical player’s natural urge to take everything in sight — and it gets super-extra points for implementing the game as a series of MS-DOS batch files.

Early in the comp, Andrew Plotkin had posted that he suspected there would be a limited number of types of story that could be told in 140 characters, and this seems to more or less be the case. I’ve tried to bin the games into categories. Some do not fit these categories, or at least not comforably, while others fit into more than one category. This system is not as classy as Jungian archetypes, nor as comprehensive as TV tropes, but here you go:

1) Life’s a bitch – You do something and then you die. It’s interactive in a fatal kind of way. This game can be written in almost any game system or general language, where there is provision for input and for termination of the program. It may convey meaning, but it’s unlikely to be a fan favorite or have much replayability. The games in this category includes those where you invariably die (predestination, nihilism: Short-Lived, Roulette, Untitled, Raison d’être, raison de ne pas être), those where you have some agency to decide your fate but lack information to make a rationale choice (absurdity: Burning, DecisionsDecisions, The Mourning Do in Pinellas Park, Buttons), and those where you can choose to live or die (free will: 43 and the closely related To be or not to be). I’d venture that the last category isn’t really free will in the sense that players, being curious, will inevitable kill themselves to either see what happens or end the game.

2) Existence – Closely related, there are a number of games, where there is no central choice of living or not. The player’s state is alive, but without meaning. I was a little surprised that no one reworked “Waiting for Godot” in this category. Both Void and the TWIFplus game Space are very much in this vein, though. Dementia an epilogue also fits this category and suggests that meaningless existence leads to madness.

3) The Surreal – IF worlds may be creative, but they usually follow enough of the rules of the real world to allow the player to interact with the story and appreciate causal relationships. Andrew Plotkin throws a monkey wrench in the guts of Inform to produce You see chaos here. Other games used surreal imagery and unusual goals to convey a distorted world view including Dementia: An epilogue, Burning, and COD.

4) Exploration – Location and movement are central concepts in IF. The simplest game in Inform requires that the player be in a room object. A natural extension of location is movement, and a number of games trigger some terminating condition on either the attempt (as in LP0 and Ocn bttm) or the completion of specific movements (SWEDUN, Manifest Destiny). Navigator takes this further, giving the player an infinitely large canvas to explore, although there is understandably little detail in the world model beyond location (in that regard, this game reminded me of my first fifteen minutes playing GATOR-ON, Friend to Wetlands! from the 2009 IFcomp). Tumbleweed Hero is even more free form in its exploration of the world, but provides no feedback about where you are. Considering that the main activity of a tumbleweed is tumbling around, that it has no sensory apparatus to distinguish one location from the next, and that tubmleweeds are not particularly goal-directed, this seems like an uncannily accurate simulation. It also straddles the line between this category and Existence, as it can be argued that the tumbleweed’s life is not particularly meaningful (although perhaps a tumbleweed would argue otherwise).

5) Central Riddle – There’s always been a balance in IF between story and puzzles. In 140 characters, there’s only so much you can say in terms of narrative unless you pull in additional resources. However, it is possible to implement one puzzle of the sort that might appear in a longer work. The puzzle may literally be a riddle, as in Why? or Ring, involve manipulation of an object (or text) as in Make All Sad and Escape, or consist of a classic logic puzzle as in Monty Hall.

Matt Weiner’s Sin seriescould be considered puzzle-oriented in that the reader probably brings the social context of “deadly sins” to the game, and can then try to elicit each one by guessing the corresponding action in each game. The goal of Matt’s game reminds me Jim Aikin’s Heavenly entry in the JiG CGDC#7 earlier this year, where the player is motivated to find a way to sin. I suppose that the player in both cases must be considered an anti-hero given his goal. Games with a central moral decision could be considered a subset of central riddle. The ChoiceScript games (Love, Money) by Dan Fabulich and the Sin series by Matt Weiner comprise this category.

6) Redux of a larger work (and testing the boundaries of the competition) – The most notable entry in this category was Mentula Macanus: Apocolocyntosis, which managed to pack not only a full game into characters, but also the entire Inform development system. The entry that was submitted was actually a perl script which decompressed white space characters in the perl script itself to yield scripts, folders, to install and execute the game. In my opinion, this was damn clever, and within the rules. Yes, it was something of a perversion, but I think the author would be proud of that designation. Adventwiture also plays with the rules a bit, effectively including the entire original adventure game as a library by the TWIFcomp game. It’s a bit of the tail wagging the dog, but again entirely legal by TWIFcomp rules.Duel in the Snow: Abridged Version vaguely fits into the category as a reworking of the earlier IFcomp game.  The game does capture some of the atmosphere of the original, but I’m more inclined to put this game into the Existence category. LP0 riffs on the the current Hollywood trend of making prequels, and is presumably the (very short) story leading up to Lost Pig! Finally, a number of works draw on either external works (Daigoro, Ramirez, Zed)  or real world events (The Mourning Do in Pinellas Park) for context.

7) Pure symbolism – Language itself is bulky and full of fat. Boiling interactive games all the way down yields a few lumps of blacked, charred and (hopefully) meaningful symbols. These games are like the engravings on the Voyager space probe — the author hopes that whoever finds them can figure out their meaning from first principles. Well, in the comp the player gets a little help from the title and the description on the website. My entry “😐” was a deliberate attempt at a purely symbolic game, but the clear winner in this category was “> by @” by Aaron Reed. While I think Aaron’s description was a little tongue-in-cheek, he does manage to tell a nuanced story in pure symbols. In OOP-speak, his game is full of very overloaded operators.