Iron ChIF: Pilot Episode (Pacian vs. Draconis, using Dialog)

8 Likes

I was not paying attention when that rule was announced. My jaw actually dropped when I read this. I mean, I guess that’s why you’re an Iron ChIF and all, but my brain just stutters on “no testers.” That feels inhumane.

You know how when you hear/read something that seems so bad that it’s impossible and your mind just skips over it?

Good title! Secret spiders are like my nightmare. I actually have a nightmare where I’m moving house and the room is filled with boxes and there are spiders in the boxes. It’s a terrible horrible no good very bad nightmare.

7 Likes

With one day remaining, I think it’s obvious that those of us in the judging box don’t perceive either competitor to be an obvious frontrunner. In the abstract, we can barely even generate personal biases towards one game or the other. @AmandaB even hates secret spiders but still loves Pacian’s title.

Both competitors’ shared posts have been promising, so I expect a tough (but delicious!) tasting period, and finding comparisons between dishes which may be surprisingly different from each other in all of style, content, attitude and tech delivery, in spite of the specificity of the challenge seed.

You might be thinking, ‘Well, we do all that comparing all the time around here, in IFComp and in every other comp,’ – but it’s rare to be doing it in detail in a head-to-head battle in which direct comparisons can be more clearly made, or perhaps even feel inescapable. We judges will be marking primarily to the rubric we put together (see the first post for the full rubric) to seek to make sure we consider many possible dimensions for each dish.

-Wade

6 Likes

Something very interesting came up in the audience thread a while ago, rather closer to the start of this whole event actually.

Both our ChIFs jumped immediately from the “non-human” in the original phrasing of the challenge ingredient to “alien”, “fantasy”, “constructed”, or “English-nonsense”. Neither seems to have considered the Terranean animal kingdom.

Someone even especially mentioned octopodes (yes, “octopodes”, and I’ll stick to my guns on this one…) as an example of an intelligent species with complex communication skills. This caught my attention because only a few days before this whole Iron ChIF event began, I started reading Children of Ruin by Adrian Tchaikovsky. A big element in the story is the communication gap between the protagonists (an alliance of Humans and Spiders) and a species of genetically manipulated Octopodes dropped on a water-planet that was being terraformed at the time, lost their humans to various mishaps, and have been evolving by themselves for millennia.

Spiders and translation puzzles and alien worlds… It seems that Tchaikovsky’s Children of Time series runs parallel with the themes of our programmers’ imaginations…

Speaking of octopodes… I could really go for a big plate of battered and fried calamari right now. Salted, with a squeeze of lemon, some fresh parsley sprinkled on top… And then a generous ladle of tzatziki and a small basket of freshly baked bread…
All while seated in a cozy booth in a traditional Greek restaurant, with perhaps some laouto folk tunes playing in the background.

And speaking of restaurants, this reminds me of the time I visited this French 5-star place called Savoir-Faire, home of world-renowned chef Emily Short. Well, it’s not really a restaurant, more a House of Curiosities where one can walk around and admire the many weird items collected there, and even amuse oneself trying to figure out some of the brainbreakers set up in the many rooms of the establishment.
But there’s also the opportunity to grab a bite on the premises. The kitchen showcases a breakthrough in culinary technology, a machine that can make dishes to your liking, so long as you provide it with a recipe scroll and the necessary ingredients, which one can find by exploring the cabinet of wonders this place is. My personal favourite was the andouillette…

Yes, I confess to what many of you have already noticed:
At times, I get carried away by the culinary frame of this event, it being based on a Japanese cooking show. My fondness of fine cuisine, and the aromas and tastes that go with it, overshadow my awareness of this being an IF-writing contest.

But I ask you, indulge me for a moment more. The art of fine cuisine and the art of interactive fiction have a lot of overlap. Since I began digging into the treasure-room of IF games, I’ve encountered many works where the author shows a particular affinity with the culinary pleasures of life…

  • A Day for Soft Food introduces us to a non-human protagonist, a cat, who has decided that this day, she is having none of those dry and crunchy bits of kibble. No, today, she has a craving for a tin of juicy and jellified soft meat bits. Too bad her human’s still asleep and she can’t get the food herself…
  • How To Make Eggplant Lasagna (With Cats!) also has a cat. More than one actually. But here, instead of the felines being the ones who want to eat, they get in the way (in various amusing ways) of their human who’s trying to make their own food.
  • The Bones of Rosalinda has an NPC who is cooking the most delicious-smelling stew. So long as you don’t mind a non-human chef to cook your hot-and-spicy stew for you, you’re going to love this one.
  • Oh! And while we’re on the subject of stew:
    Perhaps more of an acquired taste for the real culinary connoisseur, but Chef Bogeyman’s “Stew With Blue Bits In It” is a surprising challenge for the tastebuds of those who like their food unrecognisable and their ingredients unmentionable.


11 Likes

Well, the cats in How to Make Eggplant Lasagna also want to eat (the lasagna), but in most endings they don’t get to…

10 Likes

Okay, I have lost my mind.

I just can’t release a parser game with no hints. Bare-bones hints that may not be useful to anyone: sure. None at all? How would I sleep at night!

Aside from their utility, the next stumbling block is that this requires everyone’s favourite fairy to pray to the Goddess, which…

:grimacing:

15 Likes

The final day! The final (maybe?) update! What can I share that won’t be a spoiler at this point?

Last night I finished my regression test. For every Dialog project I make, I have a file called regress.in full of commands:

x me
i
ship
junk
exits
in
shiny

And then I have this line in my Makefile:

regress: $(FILES)
	$(DGDEBUG) -s 1234 -w 59 debugger.dg $(FILES) <regress.in >regress.out
	meld regress.out regress.gold

Which basically runs dgdebug, feeds it the commands from regress.in one at a time, saves the results to regress.out, and then compares it against regress.gold. Every time I make a new build, the Makefile runs this command, and I can be sure that I didn’t break anything—or at least, I didn’t break anything on the critical path from start to end. (If I screwed up a random item description somewhere, it won’t catch that.)

This morning I fired up the web version, typed in all of those commands one at a time, and made sure I could get to the end in that version, too. (I don’t have any way to automate the web testing at this point, but if I were doing a Z-machine version, I can test it like in the debugger.) At the end of it:

Peak dynamic memory usage: 546 heap words, 90 aux words, and 209 long-term words.

Phew! Nowhere close to the limits. By default, the heap is 1000 words, the aux heap is 500 words, and the long-term heap is 500 words. But just to be safe, I’m doubling all of them (2000, 1000, 1000). With no testers, I want to make absolutely sure the game doesn’t crash from running out of memory!

And that means I can spend today polishing, tweaking, adding little conveniences like a THINK command that nudges you toward the next puzzle (the IF-y puzzles in this game are extremely linear so something like in Familiar Problems would be massive overkill), and going through the Standard Library to change inappropriate verb responses. You can’t lick anything if you’re wearing a spacesuit!

Is any of this very exciting? Probably not. But once I have a build I’m confident in, I can do a long, discursive ramble about something. Everyone loves long, discursive rambles.

14 Likes

Dr Bashir from Star Trek looks up at the post above, puzzled.

7 Likes

This is true for me. If judging had to happen right now it would be 50/50, which is exactly what I hoped would happen before final cakes were displayed and cut.

That whole series is sooooo good. It may even have decreased my arachnophobia by a nanonotch (which is a very scientificalized way of measuring phobia).

I stopped eating them some years ago. I don’t have a whole lot of eating rules and I’m a long way from vegan, but one of those few rules is that if you can make a tool, I won’t eat you. I certainly hope we won’t be having any calamari cake.

Squee! This is a FANTASTIC way to do a hint system. The contest just edged to 49/51.

Except…

is a command in the Iron Chef’s game. That makes me feel shiny all over. Back to 50/50.

8 Likes

Hints done! I said they’d be bare bones…

I also (cough) (cough)… Behind all this smoke coming up from the cooking (cough)… You can’t see that I’m using my competitor’s snippet to find a couple of typoed objects in my code… (cough)

And now, I don’t have any of that fancy testing stuff I see the Iron Chef using up there, just a few transcripts I can load to get to different parts of the game, and some good old fashioned poking at it to see what breaks!

11 Likes

Love that diegetic hint system in the challenger’s dish! I’ve always said you should never overlook any text in your game as an opportunity to further characterize your PC, and Pacian certainly seems to feel similarly. I’m charmed that our fairy PC can’t quite stand to invoke the help of the goddess without being a little backhanded about it.

9 Likes

I’ve spent most of today polishing and refining, tweaking the text in various interface things and making it adapt to the current circumstances. Which is not, sadly, very camera-friendly. And I don’t want my last few updates to be laconic “I debugged some predicates”. But I also don’t want to give away the puzzles this close to the end!

So I’m going to let myself be pretentious for a moment and talk about my inspirations for this dish. [1]

I’ve said before that I envy my esteemed opponent’s writing skills, but in truth, I don’t think I’m a bad writer by any means. My problem is with being concise. Pascal once said “I made this letter so long because I didn’t have time to write a short one”, and that definitely describes my process: I tend to fix problems by adding rather than removing, and I struggle to ever keep things concise. In particular, I don’t have Pacian’s gift for conveying a lot of world and character in a few well-chosen sentences. I’ve read back through his process posts, and I am honestly in awe of how much comes through in a single paragraph about each character.

But if I give in to the urge to add too much, to explain everything, to elaborate on every secret, there’s no way I’ll get this done in a week! [2] So I’ve tried as hard as I can to keep things short, to imply instead of explaining, and to establish a narrative voice that justifies that. This thread is where I’ll put all those flowery paragraphs that would get in the way of the actual message.

I started this week’s lectures in Language, Technology, and Society with a picture of the Tower of Babel. One of the most prominent myths about language in our culture frames it as a literal curse, a punishment from God to keep us weak and divided and away from true divinity. It’s not surprising that a lot of people, from Hildegard von Bingen to L L Zamenhof, have tried to improve the world by abolishing it! Language is an obstacle, in this view, keeping us from perfect, true communication, trapping thoughts in the confines of words. One of my favorite historical examples is Charles Bliss, who wanted to shift human communication to a language-free system of pictographs called “Semantography”. After seeing the horrors of WWII, he was convinced that language was nothing but a source of conflict, and direct, unfiltered communication of ideas would bring about world peace.

But I fundamentally disagree. If you look at any other system of communication, from animal speech to mathematical notation to Bliss’s Semantography, not one of them[3] is as expressive as human language. People argue about what the defining characteristic of humanity is, whether it’s tool use or recursive thinking or opposable thumbs; personally, I think it’s our ability to communicate. It’s practically impossible to stop humans from communicating, given the slightest chance! [4] Look at ISN, a sign language that came about when a bunch of deaf children were brought together in a school meant to teach them to speak Spanish. They didn’t learn to speak; instead, the children got together and created an entire sign language from the ground up, without their (hearing) teachers’ involvement. They taught it to the next cohort to arrive, who taught it to the next, and within twenty years(!) it was a thriving language with thousands of speakers.

So that was the inspiration for my entry. It’s not much of a spoiler to say it’s a game about managing, against all odds, to communicate. The player character starts out in dire straits, where it’ll take a miracle for them to survive. Maybe the human gift for language will provide it.


  1. Beyond Chants of Sennaar and its ilk, I mean. I’ve already talked about those. ↩︎

  2. You’d be horrified by how many footnotes I had to cut from The Wise-Woman’s Dog to keep it from getting overwhelming… ↩︎

  3. That we know of! ↩︎

  4. The only well-attested case of someone growing to adulthood without ever developing language skills, which I will not link here, involves truly nauseating levels of abuse. ↩︎

17 Likes

@Draconis in a footnote/nutshell:

You’d be horrified by how many footnotes I had to cut from The Wise-Woman’s Dog to keep it from getting overwhelming…



I for one would welcome an extended director’s cut.

9 Likes

Here’s something I do at the end of a Dialog project:

First I copy the source-code to a new file in Notepad++. Then I search/replace all the instances of escaped brackets with nothing. And then I use the following regular expressions to search/replace all the Dialog code with whitespace:

\([^)]+\)
^#.+$
%%.*$

That leaves me with just the text of the game (minus any substitutions and plus a lot of whitespace), which I paste into Word to run the spelling and grammar check. Because I’ve usually been working mostly without spellcheck until this point, often the results are rather embarrasing embarassing embarasing embarrassing!

Though Word doesn’t always acquit itself the best either…


Finally, I just sat down and played the whole thing, start to finish, trying to get up to mischief wherever I saw the possibility. As well as finding more mistakes in the text, missing synonyms and a misfiring flag, I also found a place where my rampage through the standard library had taken out a little too much:

Screenshot of the command: stranger, hello - with the game responding "You can't tell the stranger to greet."

Fortunately, this is why I use a local git repo. With a quick scroll through the commit where I deleted all that code from the library I could find the bit that I took out, and stuck it back in. Now we get the standard response to talking to the stranger, as we should.

13 Likes

I’m now going to do something really dangerous.

I’m going to try to add a color scheme.

Why is this dangerous? Because I’m partially colorblind, so I normally run all my color schemes past at least two people with normal color vision to make sure they work. But for this competition, I can’t do that!

Still, I feel like it’ll be enough of an improvement over the default black and white to be worth the risk. We’ll see if it pays off. For a Z-machine game, I have an interpreter customized to exactly the typography I want. For an Å-machine game, it’s entirely in the author’s hands—so I want to put some effort into that!

For dark mode, my favorite:

The main color palette is entirely monochromatic, since I want to give the whole thing a retro vibe. So the dark blue and light blue have the same hue and saturation, just different lightness. I like how that turned out. And cool colors feel more science-fiction to me than warm ones.

The links, though, need to stand out more. I think a nice green feels retro and sci-fi, standing out enough without being jarring. The whole thing holds together well.

Light mode…I struggled.

For these links, I tried so many different shades of green, yellow, orange, and red, trying to find something that would stand out against both the text and the background. But that’s one of the things I have the most trouble with: distinguishing between very dark colors on a light backdrop. So I have no real way of knowing what’s too much or too little for the average player!

Eventually I found a magenta that worked okay. It looks a little incongruous against the blue background, but hopefully it works for people.

Still, I’m going to rig things in my favor a little. Å-machine games by default always start in light mode. I’ve adjusted the web interpreter (in the past) so that it picks light or dark mode depending on the browser settings. This time, I’m going to make it always start in dark mode, which I think looks the best. People who prefer light mode can still switch to it in the options menu, but now, people who have no preference will end up with the one that looks better.

13 Likes

No project is ever finished. Barring silly little outside factors like mortality, the need to sleep, bills to pay, you could always work on anything forever.

So eventually you have to put it down anyway. Leave it unfinished, with all the flaws you can see - and, terrifyingly, the greater number of flaws that other people will see.

That’s the appeal of a deadline.

You’re forced to look at what you’ve done and go, “That will have to do.”

I’ve ticked off everything on my to-do list. Added more things and ticked those off too. Now it’s getting late in my time-zone, after a whole week of late nights.

That will have to do. It’s time for bed.

:fairy:

15 Likes

One game is in the can, the other can’t be far behind, so there’s little left but anticipation – and wondering how that last-minute polishing and bug-fixing went! It’s true that these are often the least-visible pieces of an IF project, but in my experience they’re very high-impact. Of course, no one wants to deliver a buggy game that doesn’t work, but things like customized responses to plausible but incorrect puzzle solutions, tweaking the parser’s default narrative voice to match the vibe of the authored text, and filling each scene with just the right number of props to evoke a mood and keep puzzles from being too obvious, are absolutely critical to keeping a parser game from feeling too mechanical. It’s actually one of my favorite pieces of the process too, oddly enough – no individual bit of this is especially hard work, usually, so there’s a pleasant correlation between time spent and improvements made, even if none of this is as splashy as the big set-piece narrative beats or climactic puzzles.

As for the anticipation, it certainly looks as though both competitors will be turning in meaty, flavorful dishes executed according to their own styles, so I think they’ll be plenty of fun to play. I confess to a bit of trepidation about my judging, though – unlike many of my esteemed colleagues on the panel, I’ve never approached my reviews with even the faintest hint of a rubric (I have a rough explanation of what my star ratings on IFDB are supposed to mean, but reader, I barely ever remember that it exists, much less consult it). I think the rubric we’ve landed on is a helpful one that will provide scaffolding for our evaluations, but part of me fears that my critical judgment will stand revealed as arbitrary and capricious when forced to justify itself via rigorous and worked-out explanation!

That’s a problem for tomorrow, though – for now I’ll just offer plaudits to Pacian for finishing this mighty task (and a wish for restful sleep!) and good wishes for the last of Draconis’s efforts. You’ve both engaged in heroic labors to create something wonderful for us judges, though of course only one of you will claim the laurel!

8 Likes

Here’s a halfway through the last contest day round-up.

Reaching the end of his non-contest-day-aligned-real-day, Pacian has added a hint function to his dish, done a bunch of testing, then hit the sack. Bar him waking in the night screaming “PREDICATES!” we might not see him again this contest day. He’s signed off with an angel emoji. We wish him the best for the tasting.

Draconis has remained on deck, alert and pacing, testing Endymion, working on presentation (in light and dark mode, no less) and coming full circle in Keyboard Stadium by sharing the original impulse for this game.

The nature of Iron CHIF is live and head-to-head competition, and we can see that the odd glimpse cast by each chef towards their opponent during the battle has had the effect of heightening their consciousness of alternate ways to do things. This in turn played into their cooking in real time. You don’t get this kind of live cross-pollination in your other IF comps!

Draconis was moved to talk about their writing style and how they’ve fought some of their own expositional tendencies after being exposed to Pacian’s compact prose. And Pacian, while expressing an overall bamboozlement in the face of Draconis’s regression testing, took a practical course of action by grabbing a snippet of the Iron CHIF’s testing code.

We may or may not hear from the chefs again before tasting time, but I and other judges will be starting to muse on how some of the scoring could go with the rubric. We’ll also catch up on other talk points from the battle.

-Wade

9 Likes

One final update: I dig Pacian’s title, and am happy to report that it can be sung to the tune of the Teenage Mutant Ninja Turtles theme.

6 Likes

Oops, I slept through the 12-hours-remaining mark! I had a plan for a final update and everything!

I have a really old bit of Python code that takes files in a simple markup format and converts them to HTML InvisiClues. So I banged together some basic hints:

# Frozen Wastes
	# What do I do here?
		Examine the things around you (your ship, the space junk, the ice).
		The only one you can usefully interact with is REDACTED.
		REDACTED.
# Airlock

Then it turns them into basic HTML (a whole bunch of <ol> elements), with basic JavaScript and CSS to hide them until hovered, highlighted, or clicked.

Each <ol> is folded up until clicked, and the bottom-level elements (the leaves) have their text hidden too. It’s not very slick or modern, but hey, basic HTML is often better for accessibility! I can claim that’s the reason, rather than my lack of CSS proficiency!

This gives me a mess of an HTML file that I can embed into the download, for when someone types HINTS. And that should be it! I’m throwing a bunch of random commands into the game now to make sure it handles them properly, and then it’s off to the organizers!

12 Likes