Junior Arithmancer postmortem

I hadn’t really planned to write a game for IFComp this year. My game last year took a lot out of me, and I had a major non-IF project on my plate for this year. But when the spring term ended and I had some free mental space, the core mechanic for Junior Arithmancer popped into my head, and I ran with it.

I can’t pinpoint (or maybe I just can’t remember) exactly what it was that generated the idea. The in-game credits for JA mention my own game A Beauty Cold and Austere, Arthur DiBianca’s The Wand, and David Fisher’s Suveh Nux. These were part of the stew of things bubbling in my head at the time, but they’re not all of it. (In fact, the source code for JA has a comment under this text that says, “FIX THIS!!,” by which I meant to remind myself to flesh out the credits. Which I didn’t do.) There’s not really a nice, linear narrative that explains how JA came to be. It’s probably more accurate to say that it’s the result of me pondering puzzle design for a lot of the past year. So that’s what I’m going to talk about.

Some Random Thoughts on Puzzle Design

I enjoy a good story, but it’s the intellectual challenge of solving puzzles that keeps me coming back to IF, as well as what interests me most as an author. Writing A Beauty Cold and Austere helped push me down this path, I suppose, as I continually had to think “Here’s a math concept. How do I present it in an engaging, interactive way where the player’s experience with that concept must be mediated through text?” The puzzles in ABCA aren’t obstacles in some narrative (at least in my mind), they’re the core of the gaming experience that I was aiming for. Or, to put it another way, in some sense the puzzles ARE the narrative of ABCA.

So, what do I like in puzzles? I like choices. I like a single mechanic used in multiple, creative ways. I like reasonable “failed” attempts at solving the puzzle to give interesting responses. I like puzzles that have some kind of underlying logic that is fairly easy to understand yet feature a combinatorial explosion in the space of potential solutions. So, thinking through to a solution involves not so much trying to guess the author’s mind as it does using the logical rules that you know the system obeys - but in creative and possibly out-of-the-box ways. (In other words, I like math. Not surprising it’s my profession.)

Some games I’ve been thinking about in the past year in terms of puzzle design and why:

The board game Ticket to Ride. It’s got easy-to-understand game logic and that combinatorial explosion in the size of the solution space. Finding the best solution - even if you weren’t competing against other players - involves solving a problem that is known to be computationally intractable. (For those who know what this means, you’re solving an instance of the Steiner tree problem, which is NP-hard.)

Domestic Elementalism. You play as a witch who can transform any object into its earth, air, fire, or water form. This quadruples the number of possible ways to interact with the items in the game without tossing a huge, complicated mechanic at the player. (We all have mental associations with earth, air, fire, and water, for instance.)

The Wand. The titular wand has three sections, each of which can be set to ten different colors. This very simple mechanic has 1000 possibilities for potential spells. Admittedly, most of the combinations don’t do anything (what a nightmare to write that would be!), but the game’s still a lot of fun. On the other hand, could you attach some kind of meaning to each of the colors on the wand, so that combining them would produce effects that the player could predict if they thought through them? The Wand is already probably my favorite IF puzzle game, but that sounded like an even more fun game. (There is a little bit of that in The Wand, actually, now that I think of it.)

The Witness (Jonathan Blow’s game from 2016, not the Infocom game from the early 1980s). This game blew me away. The puzzle mechanic is just constructing routes through grids (kind of like Ticket to Ride, actually). It’s easy to visualize each grid, so it’s easy to see what kinds of solutions are allowed and how to try different strategies. Also, the game does a fantastic job of starting off simple and then throwing more and more complicated variations on the same basic idea at you. (Really, I can’t think of another game that does this so well. If you like puzzle games, you should go play The Witness. Seriously.) But The Witness is so visual. How could you create something like that in text?

My own game from last year. Those number spaces were underutilized. I should figure out how to use them in some way that makes sense. But how could you travel from one space to the next? Arithmetic operations, of course. But why would you want to do that? And how could it be made fun for the player?

Suveh Nux. Those spells in Infocom’s Enchanter series were really cool, but in Suveh Nux you can use spells as modifiers to other spells. This greatly increases the number of things the player can try.

Threediopolis. In that game, you’re recreating strings of symbols using a set of rules small enough to be manageable but large enough to be interesting. (That’s the core mechanic of JA, actually.)

Also, Mathbrush keeps telling me that most of the responses you get when you’re playing a parser game are error messages. How to write a game that doesn’t explicitly constrain the verb set while nudging the player toward a style of play that cuts down on this problem?

Somehow all of this tumbled around in my head, and with that flash of inspiration that you can’t always explain JA was born.

Writing the Game

Originally the goal was just to complete the number sequences. And then I kept thinking “What about this? And that would be interesting.” Thus the task page came to be.

I always knew I wanted something of a story in the game, even if the player is mostly a passive observer. It was pretty easy to write. Most of my adult life I’ve been a student or a professor, and so I have plenty of fodder for a caricature of higher education. (There’s a reference to Michael Coyne’s two games in there, too. Illuminismo Iniziato, which I had beta tested and loved, had just won Spring Thing and so was also on my mind.)

While running my own tests on the game I ran into a problem I hadn’t anticipated. Glulx has a maximum integer capacity of just over 2 billion, and you can combine the spells in ways that will generate numbers larger than that. This was going to ruin the player’s sense of immersion in the game! I was really frustrated and disappointed for about ten minutes, until I remembered the improv motto of “Yes, and…” O.K., let’s just make the integer overflow a feature of the game and write a puzzle where you have to contend with it. (Andrew Schultz later called this a “fun evil” puzzle during testing. I’m good with that.)

JA still felt a little too number-focused. Was there some other dimension to the number spaces I could add that would increase interest and provide additional challenges? The idea actually hit me during a run one morning - colors! The Witness uses this to great effect, after all. So then it was just a matter of mapping colors to numbers in a way that made sense with the arithmetic theme. (Some folks who have figured out the color scheme will understand precisely what I mean when I say that the mapping is actually quite fundamental, from an arithmetic standpoint.)


My very first beta tester was my ten-year-old son. After five minutes he pronounced it “boring.” (There’s nobody like your kids to be honest with you about this kind of thing.) I completely revamped the intro so that the player was thrown into the puzzle-solving more quickly, and I front-loaded positive feedback to help draw players in.

Mathbrush recommended the side window. I had thought of that but didn’t want to implement it because it sounded too hard. But I knew he was right. So I made the effort to work it in.

When I sent the game to Arthur DiBianca one of the tasks was to complete a specific number with four spells. He and Andrew Schultz kept pushing me to optimize the numbers further, and between the three of us we found two more ways to complete a number with four spells plus a way to complete a number in three spells. So the two of them definitely helped improve the challenges on the task page.

A Few Final Thoughts

All in all, I was happy with JA when I finished it. I thought I had written a game that I would enjoy, which was my goal. I wasn’t sure how many other people would, though. For instance, I know that mathematics is an automatic turn-off for some people. But I was pleasantly surprised (O.K., let’s be honest: I was shocked) at how well the IF community received my very math-heavy game A Beauty Cold and Austere last year. So maybe, I thought, there’s a sizable chunk of the community who would enjoy JA as well, which is really all I could ask for as an author. (And then JA got 7th place, just like ABCA! Wow! And 2nd place in Miss Congeniality - double wow!! It’s far better than I expected when I was writing the game.)

Of course, Junior Arithmancer isn’t really mathematics - if by “mathematics” you mean what mathematicians like me actually do. Arithmetic is to mathematics as spelling is to writing. It forms the building blocks of much of what you do, but as a mathematician or as a writer, it’s not what you actually do.

JA is probably better thought of as a collection of number puzzles. It might not even be too much of a stretch to call it a wordplay game - just one with an unusual alphabet, together with an intricate but well-known mechanism for manipulating the symbols that make up that alphabet. Threediopolis, say, but with different “letters.”

Before I end this postmortem, a confession: When I replayed Junior Arithmancer all the way through last week for the first time since the Comp started, I did not remember how to solve all the puzzles. (Is that funny, or sad, or comforting - for a player, to know the author doesn’t remember how to solve all the puzzles?) I knew that would happen, though: It happened every time I tested the game after putting it down for a while. For instance, I totally forgot how to do zeta(2) in five spells, and I had to think for a while on sqrt(3) as well. Even though I remember the logic for producing the color scheme, I still had to reason through how to solve the pale azure, gray with a hint of violet, and rainbow tasks. Also, I cannot ever remember exactly how to get a number larger than two billion. I really had to think carefully through that one. I know the structure of JA makes this kind of thing more likely, but I wonder how many times an author has forgotten how to solve some of the puzzles in their own game.

Also, I just posted Release 2 of JA on the IFDB. It adds a little more hinting at the beginning, corrects an interesting bug, and increases the number of bonus points available.

Finally, to all of you who tried Junior Arithmancer: Thanks for playing my game.

Thanks! Coincidentally, Club Floyd just finished playing the comp version on ifMUD. We got 101/100, so I’m really wondering what other bonus points you added…

Re: bonus points… I don’t want to give too much away, but I will say this: There is more than one bonus point available just in the Comp release.

This is exactly right, and in fact, while I was playing, I was wondering to myself what it would take to create a game with the same concept, but where you had to form the numerical constants using mathematical rather than textual operations—a kind of Zachtronics-like game where you write small “programs” that must output the correct constant. So for \sqrt{2}, for instance, you could compute its continued fraction; and one of the common series for \pi…

Hm, this is a postmortem for your game, so I don’t want to reference mine too much. Especially since it was very nice of you to name me and one of my works! So I’ll tag my thoughts on Threediopolis, which echo yours on JA, later.

I’ll start with my own experience with JA. The first time through, I figured it was just the sort of game where I’d naturally do something differently the second time through, which could be useful to you. It’s why I may have waited between transcripts. Another transcript of doing things the same way would not have been helpful to you, so it was useful to “forget” my solutions and try again.

I think this doesn’t just apply to puzzle games. Often we need to take a step back after futzing with a lot of details. Sometimes the things we forget were overly restrictive rules. I suspect we’ve all had a piece of writing where we should be able to fill in that last idea, and maybe we’re pressing a bit, but we just quite can’t. Then we sleep on it, and there it is. “This detail HAS to be here.” Wait, no, it can be there. That frees up a place for that other detail I always wanted to fit in.

Programmers can and should outsource this detail work to testers, because it is new to us, and so we have a bit more fun than programmers do exploring something new.

But at the same time forgetting something can be a big help! I’ve hit a wall saying “This is how I did it at first–it has to be mostly right.” But I get a bit too fixated and waste a lot of energy. Or I’m right–my idea was mostly right, but I completely mis-guessed what was wrong about it. Also, if you forget something from your game, you can look at it like a tester would’ve.

And then there were operations I didn’t quite understand or use much, so the next time through, I tried to use them a bit more.

The 2 billion puzzle is a good example. I originally figured, well, that’s easy, you just throw digits at it and you get way over 2 billion. Oops! Ha ha ha! And yes, I think the puzzle’s better that way when it forces people to be exacting.

I wanted to find two ways through it, because I felt that it was tricky enough that if there was only one way, it might frustrate people. Looking back, I can’t remember which I found first and which second. But I remember I had to get rid of some preconceived notions to look for another way through, and it was a matter of sleeping on things. I don’t suspect a lot of judges figured this out, especially with other games to get to, and I hope it isn’t totally spoiling things to post the alternate solution here:

[spoiler]You can take the square root of 2 billion and 2^31, and then take an appropriate thousands digit and use 9* and TAC(or was it CAT?)

I also liked that I needed to work backwards to figure what roughly the number you should square should be. I’ve always been pretty good at mental math, but there’s a small shortcut if you note 20=4*5, so 45000 + a bit will sneak you in there.

But you can do it without the square function! You can also create the number 21 and use TAC/CAT to create a 10 digit number consisting roughly of 5 21’s.

21 TAC / 1 -> 2121
2121 (append previous) + 1 -> ~212121
212121 (append previous) - 1 -> 2121212121 (I am too lazy to do the precise arithmetic, but the upshot is: I considered digit numbers instead of actual digits.)

Of course, if you want to be a sneaky showoff, you can create 63 with 9*7 to get an overflow without a square. Or so I’ve heard.

But the fact is I don’t remember how to do this precisely, either. It’s just, okay, there’s squaring a number, or there’s adding on digits. The details will fall out if I ever want to play again, and I’ll save before solving the 2 billion puzzles to check it both ways, and it’ll be fun.[/spoiler]

Now on to my thoughts for Threediopolis.

[spoiler]I was frustrated that I couldn’t make different ways through the game, just to test as many paths as possible. I’d often put it aside because I’d do things in a specific order, so I wasn’t testing anything special. Although I do think that the order you found addresses in didn’t matter much until I put in initial clues (“This is the address! Why isn’t anything here?”) and a header for the post-release (which I could’ve/should’ve done beforehand) so I could see if the lists/letters wrapped properly.

Any time I programmed in a new feature, I’d inevitably forget what one location was during game testing. And it was useful to me to say, ok, other people probably overlook this too. In fact, the extended version of Threediopolis, with the more speculative addresses, as well as Fourdiopolis, gave me all sorts of trouble remembering things, and it actually made testing more interesting. I could track what I did, what I continually missed, etc.

This gets back to one problem I had with learning. You had to remember stuff for a lot of quizzes and tests. No teacher ever explained that recall was more efficient and more useful to you and others you had to work with. It was just 90 for an A, etc. Quite bluntly it was a bit boring and I was convinced I was a bit lazy. Fortunately, I went to a high school where the tougher courses forced you to know recall over remembering, and the challenge worked better for me.

So my opinion is, if you’re remembering too much of something you did in the past, and it’s not constructive to do so, you’re not keeping your mind open for new ideas. So that seems just fine. There’s some guilt over forgetting what you should know, but if the information isn’t helping you move forward, or if you don’t enjoy remembering it, I wouldn’t worry about it. I mean, you don’t need to answer to someone giving an exam. (That’s the player’s job. See what I did there?)

I feel the same with my anagram games. While I can’t/don’t want to remember the whole narrative, I see it unfold as I go through the game, and that’s fun. And it’s fun to be able to derive the way through or even say, oops, I could’ve put this hint in here.

Eventually I figured a way to randomize which way someone visits the right places, to possibly poke out bugs. (Zarf’s python scripts helped.) But it couldn’t duplicate how a person would react.[/spoiler]

None of this is a substitute for actually figuring out concepts and methods. But I hope it echoes your forgetting the right solution. You had so much else to do with the game, the precise solution(s) should not have been front and center. And if you got to see your own game with new eyes and work through one of your own puzzles and enjoy it, you earned the right to.

[spoiler]THAT IS BRILLIANT. It is now my favorite method for completing the 2 billion task.

And it also underscores my claim earlier that Junior Arithmancer can be thought of as a wordplay game.[/spoiler]

That’s funny that you mention this, as continued fractions crossed my mind at some point while I was writing Junior Arithmancer.

Also, an early version of the game’s cover art featured infinite series representations for all ten constants. The MATH command gave those infinite series representations as well, to match with the cover. Then I decided a cover like that would not only be too off-putting for the vast majority of players but also wouldn’t represent the game well (as you don’t use those representations in the game). My work at finding infinite series representations for all ten constants survived only with respect to a few of those being given with the MATH command, as well as a blog post.

The wide variety of player interpretations of JA is a testament to its design. Player experiences and solutions add to the continuing story of the game…an infinite playground with a small set of toys :slight_smile:.

I have seen math and logic and wordplay mentioned as three game puzzle interpretations, and I will add a fourth to that list: computer science.

One example, without giving spoilers, is the collection of color puzzles.

Also, the puzzles and spells remind me of working with high order functions in functional programming.

For example, I found the problem of keeping the next number in a sequence the same as the current number to be a concrete way of understanding identity functions; how these seemingly “do nothing” functions are quite useful when used in the context of high order functions.

The spell prefixes have a high order function feel as well.