Oh, why not! Okay, you probably guessed this was done in Twine for obvious reasons, like that you are playing it now in Twine.\n\nStill, I felt like I was thinking outside the box when I realized--I always wanted to write something in Twine, but I wanted it to be low-risk. And it's been fun so far. I haven't had to compile once.\n\nI'm not going to do anything fancy here. It's mostly just link-clicking for you. I have to admit, I really hate some Twine special effects. Like having the player wait 5 seconds to read something. This kind of takes the "Interactive" out of Interactive Fiction!\n\nOkay, that was a bit of a cheap shot. Especially so soon after Valentine's Day, when the cheap chocolate is still on the shelves, and nobody will be suckered into buying the less fun discount candy.\n\nI hope that's the only passive-aggressive thing I can do. There's so much in Twine that looks neat, if I find the time. Changing background images easily. Having graphical gauges that don't take up a ton of memory. Not forgetting a parser verb, or a perfectly sensible parser command I didn't have time to think of.\n\nThis story incorporates none of that--heck, it doesn't even use any variables, since I procrastinated it way too long. But, yes, Twine is handy. Maybe my next effort will be less route-one.\n\nI'm also through with any silly guilt over a programming language that lets me do certain things without getting nailed by technical stuff. Heck, this is what this is about. Someone helped me with I6 until I was able to swim around myself.\n\n[[Okay, on to the story.|Intro]]
Despite this oversight, he was still more than willing to test my idea for my IFComp 2012 game.\n\nIt was then that I got more than just a transcript. He saw I was having trouble changing pronouns, and I often needed to change them with the game mechanic. So he sent terribly helpful stuff like\n\nTo set the/-- pronoun it to (O - an object): (- LanguagePronouns-->3 = {O}; -).\nTo set the/-- pronoun him to (O - an object): (- LanguagePronouns-->6 = {O}; -).\nTo set the/-- pronoun her to (O - an object): (- LanguagePronouns-->9 = {O}; -).\nTo set the/-- pronoun them to (O - an object): (- LanguagePronouns-->12 = {O}; -).\n\nIt's code I use and pass on. I confess I was blown away at first. Inform 7's natural language seemed like wizardry, but figuring this out without a debugger--wow! This guy was a freakin' pro!\n\nThen there were the things you could sort of talk to...\n\nInclude (-\n\thas transparent animate\n-) when defining wolves.\n\nTwo years later (jumping ahead a bit,) I found something that worked even better, once I realized how Melvin had been able to look through the code (transparent talkable--documented nicely in the code. Thank you, Inform devs!)\n\nMelvin eventually spun out in Area M, and he wasn't the only one. I'd created an unwinnable situation that crept into the comp release. Even worse, he had to deal with other puzzles in their buggy states. His patience helped me a ton, to make them suitable for IFComp 2012 so I didn't get dinged too much by player frustration.\n\nHe also sent me some code about disambiguations I wasn't brave enough to put in. I wish I'd sat down to test it a bit better. I see how to, now.\n\nShuffling Around was a success, in my mind, and in fact someone post-release helped me with [[a serious mechanical problem]] I saw but couldn't address. It's abstruse enough, and it spoils the game mechanic, so I will make it optional.\n\nMelvin was even ready to help with the sequel, [[A Roiling Original]]. It entered Spring Thing 2013, and it had a lot of bugs, but it'd have had WAY more without him. He did great.
Misspelled. I'd found a few, and they were good for jokes, and some words like adjectives didn't really fit the mechanic.\n\nBut I didn't see how to track misspellings reliably, yet!\n\n[[Back|revelation]]
Valentine's Day SPAG comp.\n\nPerson to thank: check.\n\nBasic narrative and architecture: check.\n\nStupid whimsical ideas that eventually build up into something cohesive: check\n\nFree time to grind it out: um, I'll find it. I hope. I always do, yeah. Except when I don't.\n\nProgramming language: oh dear. This is odd. It's going to be about how I learned a bit of I6 & it helped me see possibilities. But using Inform 7 would seem regressive, and I don't know ENOUGH I6.\n\n[[Inform 7]], [[Inform 6]] or, hm.\n\nHey! I've never written anything in [[Twine]] yet!
Threediopolis felt like a straightforward idea, but adding all the bells and whistles took so long. Things would break and un-break.\n\nI also spent too long deciding whether to add a feature. At the beginning, Ed Dunn, who assigns you tasks, asks for a simple yes-no answer.\n\nI got annoyed with the default "if the player consents" and wanted Ed to get annoyed, too, if you couldn't answer a simple question.\n\nSo I asked on the I7 boards, got a good start, and got stuck.\n\nI went back to Melvin's I6 hacks. I saw why they made sense. I'd read the I6 help websites but I'd been spoiled by I7. Until then. Okay, there's where true/false happens.\n\nI wasn't brave enough to write a new function with three states, but between Melvin's code and help on the board, I had an acceptable solution. It involved hacking a global variable, which broke when I tested for re-release. I figured how I really should've done it later.\n\nThis did, however, open me up to an [[experiment]] I still use today. I can't use it all the time, but it lets you derive I7 code from I6.\n\nBut it was a [[revelation]] during IFComp 2013 that opened things for ARO and Threediopolis.
I knew better than to think I was a Real Computer Programmer. I had a job as one, but that was just because I was a math major in college. I couldn't do really cool stuff.\n\nI remember seeing something about ALAN and how it organized things so rooms were objects, and it sort of helped me understand object oriented programming for a bit. Then there was reading my company's product documentation which helped me understand a lot about products. I felt very smart helping with minor logic things and typos and even bold text--it gave me a boost when I didn't understand the actual content.\n\nI also wrote some maps for Apple RPGs I played when younger, and even for some I never got to play before Babbage's and Egghead Software went out of business.\n\nBut I wasn't going to get too big for my britches and write something useful and creative. Ha ha ha.\n\nA friend had other ideas, though. So I got sucked back in. This story isn't about him, but it's at least partially his fault I've written the games I did.\n\n[[Leadlight]]
Basically the way I defined things, you could anagram things you shouldn't, or cause disambiguations the game didn't want. To work around this, I considered several ways, and one was a hash table.\n\nI was going to do\n\na=1\nb=11\nc=121\nd=1331\n\netc., but I noticed aaaaaaaaaaa=b. So I said, no, things might not be unique, and there were probably too many false positives, and I left it there. Even though, well, Inform cuts off words of more than 9 letters unless you specify otherwise. So I talked myself out of it.\n\nCue David White showing me that hash tables did work, and showing me some links. It was a big boost to fix bugs!\n\nI didn't have the rigor to actually *try* his hash tables on all words to see what overlapped until 2014. It turns out that since glulx allows 2^32=4*10^9 values, and there are 200000 English words, you'd expect 5 overlaps (200000^2/2) / (4*10^9) and you got 16 or so with pretty much any hash table--including the one I used above!\n\nWriting and processing this took about an hour. It was an obvious missed chance, and two people teed it up for me before I went through with it. And that was for release 3 of [[A Roiling Original]].
Another contestant wanted to restart their game with an epilogue. One of their testers gave them Inform 6 code, but they weren't brave enough. Yet.\n\nThat tester was, of course, Melvin. He'd sent the correct fix for a small bug in I6 code. The I6 looked far less intimidating than his replacing the "TRACE" code.\n\nI didn't want to do anything drastic I didn't know about with Threediopolis during the comp (okay, actually, I did SOMETHING drastic--I added something in the header, which I tested a lot, but it still caused runtime errors in Mac interpreters because I overwrote a buffer & Macs are less forgiving) but I looked at what was done. Oh, it replaces THAT function in THAT file--and that's where the bug is!\n\nI slipped it into Roiling, and I tried the code, and what do you know, it worked? You now didn't have to restart and run the secret command to access the new area H!\n\nBut also, when I saw the code, my scenery-finding expansion for Threediopolis became realistic.\n\nI wanted to write up something where you find more obscure locations, including some that were [[3d spoiler]]. It was intended to be tough, and the game could give an option at the end. I had bugs to fix for Threediopolis proper, and well, I didn't have enough scenery yet to discover. Once the code "worked" in my experimental branch--I started writing. I started doing stuff like [[this|3d spoiler 2]].\n\nSo even when Melvin helped someone else, he helped me. And I want to pass that on!\n\n[[I hope this hasn't been too much about me|conclusion]].
Hm, yes, RangaSaMy. It really is a good idea to nail down basic stuff like that! Why, there are plenty of ways to look it up--his games, Calm, even--well, it'd be silly to make that mistake again.\n\nYou know what? I think I'll give him [[another transcript]], as thanks for his help. Plus, you know how it is? Twiddling CREDITS feels like doing something, but it doesn't attack the heart of the issues. Don't want to go feeling too proud about small stuff.
Of course I'm forgetting people! But there are lots whom I've traded transcripts and testing with. People I've traded transcripts once, or many times. It's been great fun. I like having a formula for testing, then being able to expand it, then realizing I have an actual creative idea to help people with. I like seeing different styles of testing, too, from the pick-everything-apart-at-the-start to the walkthrough basher to the tweener who just tries all sorts of stuff.\n\nWhile there are Inform extensions to test certain things, hearing stuff from people has tipped off so much. Maybe it's been stuff I can't do right now.\n\n[[Back to the start|Intro]]
Here's the trick.\n\n1) build your program.\n2) once you see source\sstory.ni, copy build\sauto.inf to build\sauto-bak.inf\n3) change a few things. Not too many.\n4) rebuild it.\n5) use WinMerge to compare auto-bak.inf and auto.inf, your before and after conversions from I7 to I6. You'll see what the I7 you wrote becomes!\n\nThis sort of measurable experiment can't be done all the time, but it's useful for the curious. It's helped demystify I6 for me--anything I'm curious about, I can look up.\n\nWell, back to [[Threediopolis]].
I'm not the only person who had an Apple, played InfoCom games, and thought "I bet I could do that! I'd love to do that! It can't be that hard! Well, it has to be easier than graphics. That must be really abstract!"\n\nMy first program was a tangle of GOTOs, and someone a year ahead of me laughed at the code and told me how awful it was. He handed me a copy of Scott Adams's Adventure demo, and it took me a bit to decipher, but it helped me do a few things.\n\n1. have 1 parser for all rooms, not 1 for each room.\n2. have DATA commands that specified which direction went from which room to which room. I made a 2-dimensional array and everything!\n\nNevertheless, the games weren't very good, and my magnum opus, Realm of Illogicality, wasn't as popular at a school fair as a silly game where you were a yellow dot chased by red dots. I spent two hours on that game. I spent 20 on Realm. I wish I still had Realm around. It was a combination of stupid in-jokes, but there was that neat bit where X BLACKBOARD caused a horde of disembodied hyperbolic logarithms to jump out of the blackboard and disprove you. This is still a cherished memory, even after reading Graham Nelson's Player's Bill of Rights.\n\nOh, there was another blackboard, too. I think a bunch of postulated cosecants got you, there. Well, it sounded important.\n\nBut my Apple got ancient, and Computer Science AP was about shell sorts and other crazy stuff, instead of discovering tricks and rifling others' code for ideas to implement my own way (THAT'S CHEATING!)\n\nI convinced myself I Didn't Have It. Of course, part of the problem was, someone brought in a pirated version of Blockout, aka 3D Tetris. I was good at that, though!\n\nAnyway, let's skip ahead to my [[adult life]].
A Twine Thingamabob About an Inform Programmer
Hm! Yeah, there are some ideas here. Yeah, this'll work.\n\nThat was fun. Much worse ways to waste my time!\n\nOh. What else did I need to do?\n\nLook at Melvin Rangamasy's transcripts, of course. And don't forget to credit him!\n\n[[Fortunately]], he was a good sport about it.
Melvin was big with testing and technical suggestions. Around the fifth snippet of I6 code, it began to hit me--those I6 reserved files aren't, like, holy writ. They're meant to be readable, and I see how to modify them, and...\n\n...the big thing was reading code where he disabled the TRACE command. It was an unwieldy bit, and I put it in out of desperation because my own band-aid was silly. It worked! And I think of that code whenever I use a band-aid. Whatever I'm bandaging won't nearly be that horrible, and it won't take that long.\n\nARO had a lot of bugs and wonky puzzles. I think I've fixed a ton of them for release 3. Looking back at all my testers, especially Melvin, I think of how tough it was for them.\n\nHe also helped with my IFComp 2013 game, [[Threediopolis]]. And it turns out that his I6 code he sent to someone ELSE tipped off a few other things.
When I realized U could be OO, or C could be S, or S could be Z, or E could even be Y, I saw the right command. Twenty locations fell out.\n\ntype words.txt | grep '^(n|s|e|w|u|d|oo|y|z|c)*$'\n\nThis is a basic regular expression. There are complex ones, but basic ones give so much mileage. The Regex (as the cool kids say) for Threediopolis proper was\n\ngrep -i "^[nsewud]+$"\n\nOr, start, only nsewud's (+ = 1+ occurrences, * = 0+), then end.\n\nOf course, there were lucky moments like seeing John Sununu on CNN, too. And Geoff Moore's alias contributed to one joke you may only get on replaying.\n\nBut don't all rush over at once! This game's almost over.\n\n[[Back|revelation]]
Hm. That'd be nice. But I don't want to fiddle with the parser.\n\nI've got other WIPs that depend on that. I don't have time for anyone to test this.\n\nSo, no. I'll do this sucka in Twine. But you already knew that, since you're playing this game. [[Yeah, yeah. Move along|Intro]].
No way! I don't know nearly enough. It's enough to know how to fiddle with a few functions or crib from David Welbourn's //69105 Keys//. Which I recommend, as a programming or general thinking exercise. But I don't have time to learn. It's enough to be proficient, to know I don't have to take Inform 7's conveniences and just shut-up-be-happy.\n\nThough they do generally make me very happy.\n\nAnd yeah, Hannes Schueller trusting me with the source code for two of his games, for translation details, was big. I6 made sense! I saw the basic units, and when something happened in his game, a text seach of the code showed when and where it happened, and even how. Not bad!\n\nNo. I'll do this sucka in Twine. But you already knew that, since you're playing this game. [[Yeah, yeah. Move along|Intro]].
That friend was (and still is) Wade Clarke. This game isn't about him, but without him, this game wouldn't be. I wouldn't have written anything.\n\nTurns out Wade had a crazy dream of writing a text adventure on an Apple emulator. Using Eamon, something I wish I'd have heard of when younger.\n\nWade came to me asking for help in May 2010. He needed a PERL script to detect bad GOTOs and GOSUBs in his BASIC code. My knee-jerk rection was to say no, but I thought about it.\n\n1) Run through, $a =~ s/ .*/ /g; $line{$a} = 1;\n2) run through again, @b = split(/:/, $a); for (@b) { if ($_ =~ /goto|gosub/) { $_ =~ s/goto / /g; if (!$line{$_}) { print "Bad GOTO/GOSUB $line.\sn"; } } }\n\nUgh. This is bad pseudocode. And I missed a few cases. But it was just--I had that push, and that confidence, like when my computer crashed at work and I had to do SOMETHING with my time, and I locked myself in a computer lab and learned PERL. I'd used it for weird tasks before, but this was the first that led up to a game!\n\nI got sucked into testing. It was fun. Then I wound up judging. I submitted a few scores at the last minute, without really looking at a few games. But the bug had gotten me. Inform 7 looked easy! I could do at least as well as the bottom third! Next year, I would do it.\n\nAnd for the purposes of this story, I wouldn't know about the person this story will eventually be about until [[IFComp 2011]] and I didn't get to know him til the [[Apollo 18]] game jam. That said, this story is about having a sort-of dream and someone who helped me achieve it.\n\nI'm "letting" you skip IFComp 2011 because I didn't do so hot. I sort of blame my downstairs neighbor, who liked playing guitar til 11 PM or later. Okay, I could blame myself for not telling him to get lost earlier, or for not buying Aaron Reed's wonderful Inform 7 book (which I found about after IFComp) until October 3rd of 2011, basically a year late. Or just my general disorganization or lack of belief in myself, or of giving up on silly bugs after implementing some technically cool stuff.\n\nBut that's no fun!
Oh, good. Someone else had signed up. Melvin Rangasamy? Rangamasy? Oh, dear. I'd better get that right. I know how much I "like" having my last name misspelled. He coauthored Calm...which was a game I had fun with.\n\nI forget how tasks were assigned, but he wound up sending me a transcript out of the blue. It had a lot of good ideas! I decided to look at some of his stuff.\n\nA few of his Fingertips games (1-movers) were logic puzzles I'd seen before, but they were still fun to poke at and Try Wrong Stuff. Perhaps the most impressive of all the 1-move games in the collection was his logic puzzle, Who's Knockin' on the Wall?\n\nDo you remember those logic grids where people lived in red, blue and green houses? They helped me a lot when I was a kid. I felt smart solving them, but I remember being disappointed when I got to the end of a book.\n\nThis game randomly generated the puzzles and clues. Whoah! I felt too intimidated to ask for the source code. I wish I had. But I've thought about how it'd be done, and it's been an awesome exercise for me.\n\nSo I wanted to repay him for helping me more than once with one of my games (I feel kind of embarrassed-proud of them. I got a lot better writing them, but they feel shoehorned.)\n\nAnd he noticed I had spelled his name wrong!\n\nSo I decided to double check that other game he'd helped me with.\n\n[[Rangasamy|distracted]]\n\n[[Rangamasy|WRONG]]\n\n[[Actually, you know, look it up|distracted]]
I remember being utterly confused by this album, but I wanted to give the idea a try. I needed something fun and noncompetitive, and so I thought I had some ideas to shoehorn the songs into prospective games.\n\nIn fact, I picked two. I felt brave.\n\nBut some were still unfilled. I felt bad asking for more, because what I was going to do felt like exercises.\n\nI [[wasn't the only one|the other guy]].
Oh, Andrew! You guessed wrong!\n\n[[Fortunately]], he was nice and diplomatic about it.
Hi! My name is Andrew Schultz, and I've written a bunch of logic- and wordplay parser games. I've had a lot of help along the way. The [[usual suspects]] everyone knows have been helpful, of course. But there are [[people on the side]] who've helped me here and there. For instance, I totally cribbed the Twine source from Geoff Moore aka Mostly Useless, who entrusted me with the source for Surface.\n\nTesting a game, encouragement, even trying something odd and new and clever of their own. But there's one person who's helped me particularly, and they aren't a big name. In fact, they haven't been around for a while. But I'd like to acknowledge them.\n\nI've noticed they haven't logged in to intfiction.org since September of 2013. Which is kind of sad. But they've still influenced me tremendously!\n\nWhich is a perfect segue to a bit about me. Let's go back to the [[80s]].\n\nOops! It ran over. A bit about me segued into a lot about me. So you can just skip to where I meet [[the guy this deal is about|the other guy]]. I won't track you with a variable and give you the bad ending, or anything. This isn't nearly as tough as my usual games. In fact, there is no bad ending! (In fact, it'd kind of be a bummer if a valentine's game had one, amirite?)
Well, yeah. Pretty much anyone who's been there from the beginning. Or who've answered questions for me. Or written reviews and (especially) shown patience with my efforts' flaws. They're far from anonymous. So, if you're reading this and wondering if you fall in this category, you do. Thanks!\n\n[[Back to the start|Intro]]
My IFComp 2011 entry was not a critical success. But I enjoyed being behind the wall, talking with other authors, and realizing there was no magic bullet. I enjoyed exchanging ideas and critiques, and even debugging help, and I had a feeling I'd actually be talking to some of them after this whole deal was over.\n\nIFComp 2011 was also wonderful because my office was in the process of a move. Everyone else around me wanted to move right away--and I had sat by some heavy duty moaners, after I'd asked to be moved away from the Foozball room. No, that's not fair. They didn't always moan. Sometimes Mr. Exciting came by and cracked obvious jokes about stupid people he didn't like.\n\nThe move started around October 1st. It was to be done at our leisure by October 31st. I had 3 weeks of peace and quiet, and I got a lot of work done, and I got through a lot of the games.\n\nDid you notice I didn't talk about my actual game? I'm pleased I got through with it, that I made the mechanics for a baseball game. I always wondered how Yahoo did that, with the play-by-play, and so this was useful for me. But I knew little about game design, and my discipline wasn't great.\n\nNevertheless, on November 16th, I wanted to write something to thank my testers. This got delayed because of My Friend Downstairs. For several days. (I had other things to do, like the library or working out, but I could be tired when I got home.) On the 20th or so, I finally got sick of it and said I had a letter to write. After a "can it wait?" I said "It already did."\n\nI also found out who the guy my downstairs neighbor was singing his lousy songs with. It was his next door neighbor! I remember feeling like a jerk thinking it might be him. No, Andrew, you're being silly. There's good paranoia comedy in here, but I'm not ready to write it, yet.\n\nThey still pulled stupid nonsense every so often but it was never that bad & I felt less powerless. Lots went wrong with IFComp 2011 but I knew I wanted to write something a lot better, and I could. Maybe even next year! Oh, hey, look. Early next year...a mini-comp...\n\n[[Apollo 18]]
Andrew Schultz
Other things Melvin did helped me on the way.\n\nI finally figured how to get his disambiguation code working. It did so, not just for the mechanics of Shuffling and ARO, but for the object-based hinting system I installed. If there were two rings, and both were deemed irrelevant, the game no longer asked to disambiguate then say "That's not relevant," which is kind of unintentionally mean.\n\nAgain, the code made total sense once I saw it. I've passed it on.\n\nI also remember removing or replacing some puzzles where he was generally confused and had a right to be...I hate when that happens and I can only tell testers "Yeah, but I trapped myself." This included an NPC who was privately named because I didn't use his disambiguation, then that NPC left another tester confused, then...oh. Hey! Melvin's stuff already fixed that.\n\nAnd I forgot to mention his custom "Announce Story File Version Rule" which you can probably find on intfiction.org.\n\nAnd just having Melvin's code there got me into the pattern--look for the i6 file, see what's different in the i6 code embedded in i7, work through it. I finally saw how he must've just grepped for what he needed, or maybe looked at the auto.inf file for the code in question that changed. And how he deduced it from there.\n\nSo he's been gone now, but I like to think I'm using his methods--and his code. I've even been able to pass along some I6 code to the next guy. Nothing as complex as he wrote(well, except for the stuff I copied/stole from his suggestions to me,) but still, good practical stuff.\n\nAnd it occurs to me that this is what computer science learning can and should be about--sharing cool secrets you found, and how you found them. Instead of showing what is cutting edge, or getting kids to write five different boring kinds of sorting. And though Melvin's not on the boards, I finally see how he did things, and I don't think any of the big old names could've helped me, individually, despite all they've done for the community in general.\n\nThat's probably largely because we started learning stuff about the same time. Melvin learned some things a lot faster than me. But it wasn't to get a higher grade, or get a better job, or whatever. (Though I hope it's helped him, if that's his goal.)\n\nBut he did a heck-ton of stuff for me, and it's still paying off, and my epiphanies of how I should've done things don't leave me kicking myself, because of all the good memories and cooperation along the way. It was different from many of my experiences in high school or college, and if the subject matter was technical, the getting stuff done wasn't. It was hard to be jealous, because the only thing he shoved in my face was the code he was pretty sure I'd have written, if I'd just known.\n\nIt's not like I'm the only one he's done stuff for, though. After all, he and Joey Jones collaborated for two original, entertaining games that IFComp 2011/2012 would've been far lesser without: Calm and Escape from Summerland. They are both creative successes.\n\nAnd even if he's gone, I bet I could learn a ton just reading his intfiction.org posts. I bet there are many things that'll make sense now. I wish more people would be able to look through I6 like he did--it's so hard to know if your discoveries mean anything to anyone else, or will wind up helping anyone, but looking back, his most certainly did. And that encourages me to pass stuff on, and not worry if people already know what I'm about to say or aren't prepared for it.\n\nSo, Melvin, thanks, man. For all the ways around creative and technical blocks. And for suffering through some pretty bad bugs. Including the typo on your name in the CREDITS section.\n\nEND