I’ve delayed postmortems before. Here’s my excuse this time: I thought I’d poke at cleaning up the introduction before writing anything, in case I had a last few ideas.
Well, I did. I rearranged the intro a lot. I changed the first puzzle. (It works a lot better! It crunches a lot of the auxiliary intro items from release one together. The object you make/find makes more sense, and it doesn’t feel like a retread of Why Pout’s first puzzle!) I implemented a container/side room in the mine which will allow you to drop off ingredients, until you need them. I’m pleased with these and other changes, which would’ve been nice to have in IFComp.
Another reason I delayed the postmortem? I think I said the main thing I wanted to in the awards ceremony. I was pretty surprised I got the notification. I figured I’d be one of the first to speak, and I was right. I just made it! So thanks to all who worked through the intro. My testers who helped make it less unmanageable in a time crunch, and the people who looked at Us Too favorably despite the wobbly intro. I rationalized it as “better too much info than too little.” But I knew it was unwieldy.
Also, I was worried with my self-imposed time crunch, I wouldn’t have many postmortem notes. From the length of this, I see I was wrong. I feel sad I probably missed a few fun details to share. But using Git, and particularly Git GUI, helped me track what I did, when, and distill the important things. I’ve banged the drum for Git before, but the GUI is a bit extra. It makes some things easy (like deleting debug code) I didn’t expect. I think it really helps me feel less helpless … when I look at the code changed I just make sure there’s no obvious bug, and I plan what else to test. I take a break after each commit. I had plenty of time even though I started late. I was able to use git -G(special_word) to see when I added special_word to the code, to reconstruct my history.
beginning
So where to begin? Well, six hours left before submitting Why Pout last year. That’s when I figured out the name of a hint item. My testers said it would help, and I agreed, but dang it, I saw no path forward until I sat back and relaxed and checked for very, very dumb errors. The name felt right, and it was simpler than my rhyming games. Unfortunately, I couldn’t add it in a comp update, both due to the general rules and because it’d have bugs that’d need testing, and everyone’d be busy with IFComp. So one takeaway from this is, there’s never a bad time to have a good idea. Six hours before deadline may be about the worst, but it motivated me to say “I want to get this into another comp game, if I have the inspiration.”
I figured the name Us Too on the week of September 2, according to my weekly writing files. Every change I made in Why Pout had an eye on Us Too. So I felt like I had a head start, as a lot of Why Pout code would work in Us Too! Especially since I had a Python stub that would take a regex and see what words matched it! For instance, wq.py (word quick) be$ would find all words ending in be of length 3 to 8. And there weren’t many, which actually helped me focus.
One big feature to span Why Pout/Us Too was suggested by @vivdunstan.
The THINK code
But first I wanted to re-release Why Pout. Doing so would also be writing core code that could just be dropped into Us Too. I used this as an excuse to procrastinate writing code specific to Us Too. It was good code, though. The hint item wasn’t the only code, either. @vivdunstan’s suggestion of tracking which half-word you got right seemed too tricky. I’d vaguely considered it. I went through a chain of “but I’d have to X and Y and Z and W” before realizing neither X nor Z nor Y nor W was anywhere close to impossible. I realized there was a potential for finished puzzles to conflict with unfinished puzzles with the same word. (This was another good reason for, you know, puzzle variety, which is a good thing in general.) Then I realized I only had to get it to work once. There would be a lot of combinations to test, but Zarf’s scripts are really useful for that. The main nuisance was creating five columns in my main big table labeled first-close, first-exact, second-close, second-exact and part-explain. The final bit would be, for example, “getting rid of the beast (wrong).” I apparently got this done in just three days, from November 9th to 12th, 2024. I’m glad to have had that push, and it’s proof a reviewer’s voice can make a positive difference, whether it’s a throwaway for a game you might not have liked or “hey, I like this, can it be done better?” It was very rewarding for me to go from “this is pie in the sky” to “hey, I see a path, and it’s actually pretty clear,” and I appreciated the push.
So my work on Why Pout post-comp releases gave a head start for Us Too. I did and tested the technically tricky stuff, leaving time to focus on puzzles.
Well, in theory. Alas, I did not maintain the momentum from my head start. The original intended comp was ParserComp. I got nowhere close despite this start. But ParserComp did push me to say, yeah, I want to write this, I better get going. I just had to, well, give up ParserComp judging to do so.
As I mentioned above, my testers were behind the eight-ball, and they all gave a lot of help to fix the major cracks in the intro on a short time frame (How short? I tracked it below,) but I 1) recognized it wasn’t “there” yet and 2) I also thought it was something I could live with. I knew I’d thrashed around a bit and had confidence I’d figure it out, and … not that I discount making a quality product, but I didn’t want to worry too much about a known fault, even if it was there largely due to my using time badly. I managed to put some duct tape on it, and the overall work was complete and received very useful testing from other humans. Introductions and player help are always tricky for me as I always seem to give out too little information or too much, and then I never really figure a way to give a happy medium. It’s not that I don’t prioritize it, but I’m obviously missing something. I take notes on intros I like.
Despite this, I felt like Us Too had a good enough chance of top-half, and I wouldn’t be upset if I missed it because of the introduction. I really did want to share some item and room names. Plus I’d run a good deal of Zarf’s regression tests, which go faster with WSL (Windows Server for Linux) than with a virtual machine. I was careful not to do anything silly. I’d gone through the process, even if I realized I could’ve run a few more tests.
the timeline, and puzzles that paved the way for better ones
Most of the early work on Us Too was in the Oronym Code.i7x file or was ported later when I started coding in earnest. My GitHub repo for Us Too shows a few main flurries of activity. (Remember my comments on git/gui above? Handy!) On October 5th, I created the repo, with two early puzzles, the beast and swarm. I built three or so passages from the central hub location–the northwest, northeast and east. All were dead ends to start. I worked hard for a week. I let it sit for a month and had three November commits. One added a coauthor (Ace Plitt joined Ike Whipp) but they were eventually replaced by Hugh Morris. Another commit implemented XYZZY. The third dropped the “scribe (red)” into the code, which … didn’t make it into the final game. There was already the Bore Dread, which overlapped, but I thought a scribe would work well. It did get repurposed.
So, three commits that either got undone or were trivial. Then, nothing until July 10 and 11: one, tweaking the CHECK SWEARING OBSCENELY rule, and the other, changing “summer bay” to “Beach Ill.” I am pretty sure I wrote code, but I didn’t commit it. I know I was planning.
The serious commits didn’t start until August 6th–coding probably started in earnest before then, because I had a bunch of commits I sent in short order. This is not the most professional way to use GIT, but I still was saying, okay, let’s look at this chunk of code for howlers before checking it in. I was finding more silly errors with Git GUI than command line Git–they’re ones my testers would’ve picked up, but they also would’ve distracted my testers from their valuable insights. With Git GUI I remember, despite the time crunch, feeling like I had 15-minute windows to sit back and say, okay, is there anything wrong with the code I wrote? I really recommend it. At first I felt a bit less hard-core for using a GUI for a text adventure game, but it gave me information I needed in a more digestible format. Just looking at the code to say “Hmm, I should try testing things” instead of wondering “what might go wrong” was big stress relief. I think it even helped me look at something I knew was wrong but I didn’t know how to change. In particular, Sir Frighteously was trimmed down quickly to Sir Freddie.
Staring at SCRIBE RED eventually paid off when, lo and behold, I implemented the Scribe Room on August 19th. Yeah, just over a week before the comp commit date. Like I said, the development cycle was delayed! I mean, you won’t be surprised if the southern area was the last bit I did, since it’s the last that gets unlocked, and it’s trickier to find everything there than in the west. And once I figured out two other puzzles that gave bread, I was ready to let go of the slight awkwardness of the scribe (red). But that is still really cutting it tight. I needed people to test chunks of the game before, and they did, especially those who concentrated on the intro and who knew and understood that I tended to throw too much in the intro and not know what to get rid of.
the last few weeks
The only real aces I had up my sleeve were 1) I knew how Us Too would end, 2) I’d been writing a lot of notes, and 3) I had a code generating script so, for instance, mrc.py were-done (to dispel a Weird 'Un, of course) would spit out a global variable, a table row, and the “can I do this yet” rule and “results of doing this” rule. (It has options, too, for fine-tuning the base code.) I wrote it for my rhyming games, I used it for Roads of Liches (spoonerism/Ectocomp) and for Why Pout. It even detects if I didn’t change the default code between the quotes. This is a huge time-saver. I suppose technically I could use a data structure, but the code might be less readable than the table I like. It occurs to me I used this shortcut as a way to procrastinate getting started.
I have a general rule when in serious development mode to figure out one puzzle a day, then to say “Hey, maybe I can do one more.” It feels lower pressure than saying “Okay, my game will have 60 points and I have 25 days left. That’s 2.4 puzzles per day, probably more, since I need to test.” And often I just start a rally where I stop worrying about numbers and say “You know, since I got this puzzle with X, Y would work” or I’d save Y for down the road. I gained a certain amount of confidence that stuff I got stuck on, I’d add later.
Plotting out how the puzzles fit together (and having too much fun with it) probably took time away from the intro. Backporting features to the core/Why Pout probably took time away as well. But I think it was really worth it. Re-reading my Why Pout notes, I noticed people would’ve liked more guidance with the War Pawn, and my current testers wanted more guidance with the eyes. All that went into the Oronym Core file. It was tough, balancing a core fix that might do double work with the time-sensitive fixes for Us Too. (Oh, also, some ideas that fell out sorely tempted me to start on an EctoComp game. I, using a bare minimum of prioiritizing/organizing skills, put them in a section marked “\ecto” for later. When I wound up procrastinating reviewing IFComp games for a bit.)
And though I didn’t actually commit any serious code before August 6th, I was putting stuff together. I had, circled in my notes, this would be good as a weird puzzle, or this is a good location, so that when I actually looked through them, I got a lot done at once. My notes file had “link X with Y” too and I’d identified that the early puzzles were topheavy/tricky as well. I also wanted a few puzzles that did something different than the core mechanic, and they fell out. The numbered nodes, I thought, let people do more than just say “here’s the phrase to figure.” As for the doodle, I tried to avoid individual puzzles, but given the game’s theme, it was just too good. I figured if it was off-line, my testers would help change that.
But I think one thing I tried in Us Too that I didn’t in Why Pout was … I had a bunch of ideas I liked that didn’t fit into puzzles, and I said, hey, wait, can I use them as items? After IFComp 2024 I spun off a lot of phrases I liked into the Why Pout random dialogue file post-comp to keep the player company, if they wanted. And I think that made me feel a bit better I wouldn’t be wasting the best ideas. Also, discovering two in quick succession – the hell pin and orb and/or band – made me say “OK, I want to put these in, and I don’t care if I have to force it a bit. Someone will giggle.” I also wanted to put them in THIS YEAR.
This also relieved me of a self-imposed duty to have people do something with every room (especially since a lot of the puzzles were food-related,) and I believe they were overall quite entertaining. And it was a good way to flag that, if a room had four words, the name was just there for entertainment. In some cases, it was even a clue. I think the first room I thought up was Fort Earns-Four-Turns, which also gave a path to a not-just-wordplay puzzle. But with each one like this (or that used a noun-verb title,) I realized I was dipping into slang a lot, which I think gives good results when it works, but there’s also that voice saying yeah, don’t go to the well too often.
I’m happy with the puzzle mechanics – they’re a bit more intuitive than my rhyming games, which I like for different reasons, and I think they’re more likely to help people stumble on their own oronyms to enjoy. I’d like people to have the same sense of laughter I did when I discovered Why Pout. At the same time there are fewer possibilities, and that may be a good thing. I was less worried I might be missing something. And also recognizing there weren’t that many possibilities told me … you know, if you move on, you don’t have to feel as though you abandoned something. You’ve done about what you can. (Or I will have, after EctoComp.) I feel able to tie things up and move on. I’ve realized I want to write That Game I Conceived In 2017 and don’t want to sacrifice it for diminishing returns to scale for oronyms or rhyming or whatever. I mean, I like what I wrote in the meantime, but I still want to do that.
Other people that helped out Us Too by their observations of Why Pout include @wolfbiter and @DemonApologist – wolfbiter pointed out EAT CAKE gave the default response (oops!) in Why Pout, and (unlike some naggy Inform default actions) I had lots of fun implementing that, and I couldn’t quite find a way to say “Hey, you know what? I’m glad to have that code in place for the sequel!” without spoiling or sounding too “look at me I’m mysterious.” Inform default verbs used to be such fun to implement, in the “wow I can just do this” spirit, but they can feel like a chore after a while when you’re trying to do other stuff with the parser. But I was really glad to have a head start spying out for potentially funny responses to EAT for both Why Pout and Us Too. Often just one if-statement kept momentum going when I wasn’t up to the technical stuff. I’m particularly pleased with this line of code I moved to the core:
if noun is sly size slice eyes, say "[this-game] is an IFComp entry, not an EctoComp entry." instead;
I hope you’ve had times where, if you were in a rut, you wrote something silly like this and it made you feel ready for the “real” stuff, whatever that is.
DemonApologist noted things in THINK that helped me with Us Too. Describing that will be less fun for all of us, and this has gone on long enough, but – the help went beyond Why Pout.
And there were some general requests for better hints, both for WP and UT. My testers had various suggestions like “make the war pawn/eyes instructions clearer” or even “I didn’t mean to use the war pawn. Also, can you use it more than once?” The second was one I enjoyed running with, giving it some personality. Other hint items have more, like the cats in Robin and Orchid or Oppositely Opal. But this was mine, and I was pleased to improve it from Why Pout and also restrict you using the pawn too often too early. So with these changes and others, I wound up tidying up a new release of Why Pout while waiting for IFComp to start, which was way more productive than usual.
I even squeezed in something in the THINK code that seems semantic, but I’m proud to have noticed it. It concerned the use of “now” vs “once.” Let’s say you need item B in room C to say D. Then Think would say “You can say D in room C once you have item B” if you have item B but were in room E. But once should be now. I reported it August 20 but I realized the fix was much easier and low-risk than I thought, so it made it into the very first update as Not New Content. I was pleased with the code – both the bugfix and how my code was simple enough, the bugfix required nothing esoteric – but I wish I would’ve started earlier to have this in for the comp!
Finally @DeusIrae noted something in the awards ceremony I’d forgotten.
that point and another minor new-for-me thing I tried
ing the (relatively) favorable characterization of lawyers at the awards ceremony reminded me of why I made that choice. I’ve seen a lot of what lawyers are doing, as they point out the holes in disingenous arguments for breaking laws and grabbing power. I still remember being shocked to learn what “First thing we do, we kill all the lawyers” meant. And given what my parents said about lawyers and how attention-hogging lawyers tend to give lawyers a bad name, I thought it’d be good to have people who just sort of help you say what you need to say. People need this, even smart people, whether they’re victims of slick fraudsters who try to bend or break good laws who cover their tracks well, or they need other legal protections/redress from cracks in the system. Despite the weird puzzles I write up I’m very concerned about Societal Issues, but I just don’t feel qualified to write about them. I’m glad others are and do. Maybe I’ll join them one day.
Another final somewhat-related point: I don’t know if I ever had a specifically female character in my games before. Quite bluntly I was worried about putting my foot in it if I misfired. I generally go with making all my characters AFGNCAAP and after drawing Why Pout I noticed I saw all the friendly NPCs as male. Us Too sort of forced my hand a bit – I was still trying to figure why or how you got your land, and I figured a relative, but Grandpa and Grandma and Uncle didn’t work, so I fell into a female character, even if you don’t see Aunt Rickie-Anne in the game proper. But she didn’t fit alone, and I wanted to have the lawyers hang around and be in the back of the player’s mind, because reasons. I realized I didn’t want to draw in a bunch of male lawyers, and I also didn’t want to draw, say, Elle Woods even if I had the ability and patience. I understand it’s not high art, but I was happy to place the lawyers in there, wearing sober suits and so forth. I got the cover art planned when I was stuck on game ideas, and it was nice to think of it as something to add to the game instead of something I better do or it’s going to get ignored.
This opens the door to wanting to do more. I recognize my protagonists don’t have huge personality. I’m looking for ways to change that.
I think back to not having the intro code straight and am disappointed I didn’t use my time better or get it up to the level of everything else. But I also realize there’s a flip side. I think a lot of times I worried I had to have things right across the board before moving forward, which is unrealistic. I can afford to let things lag behind, and if one slips, I don’t feel I betrayed myself. And every year I see IFComp entries I like and recognize their faults, and how the authors probably didn’t quite have the time or insight to figure things out fully, and manage not to focus on them. I mean, I already know this to some extent, but not nailing the intro reminded me to give other entries an extra mulligan and to, well, give them a shot if they started sluggishly. I’m glad people seemed to have done the same for me.
Oh. I think I may need to clue the secret command at the end menu better, too. I still need to check how many people got it. It has to do with the game of cards.