Cube in the Cavern postmortem

The technical stuff:

I’m happy with it. I always am, regardless of where something places. I wanted to do something I hadn’t seen before, and I think I did. My testers helped me a lot on a short schedule in many different ways, and in-comp hints from a judge and a co-competitor helped, too. I like being able to write something genuinely unusual, sort of for its own sake, but not too unrealistic. And here it’s obviously unrealistic with bad science, but I’ve always wondered how to reconcile fantasy science and my enjoyment of books/stories that feature it with the real thing. And it’s fun to take potshots at astrology while I can.

I try to throw in cheap jokes with actual abstract learning and reasoning, because that’s the sort of thing that keeps me interrested, and I think CiC did this well enough. So I’m happy to have done it, and I’m happy IFComp is the motivation it is, to push projects like this across.

[spoiler]So where did it start? I’d meant to write a game on a cube for a while. I think Ed Blair suggested the idea at a Chicago IF meetup, back when we had six regular attendees, because a cube has six faces. But it never went anywhere. It seemed too good to die, but all the same, a slapdash effort would either be too contrived, too complex, or both.

But then my original idea for a comp game officially fell through September 1st. Then my backup didn’t feel right for IFComp. Maybe it’ll be another Spring Thing back garden entry.

I still wanted to write something, though! Fortunately I had notes of things to try. And I saw the cube game.

Originally it was called The Rube on the Cube. It was going to be a joke, a fool’s errand, and I guess the game wound up that way anyway. But it was a bit too implausible as it was. I’ll spare the details.

It took a while to get going, though. I wanted to have something resembling a story before moving on, because story is not my relative strength, when really, if I’d coded the cube and the locations, I probably would’ve stumbled on a story. There’d have been enough to tinker with. I could’ve gotten rid of certain bugs a lot earlier in the testing cycle, or freed up time to test other things. With more experience I’ve come to believe that if you can’t come up with creative ideas, just build something technically and set out your fishing lines for the creative ideas. It’s worked well for me before.

CiC lent itself to a lot of odd automated tests and commands that work better than Inform’s “TEST”. Now, test works well, but it eats up a lot of memory if you’re trying to keep a game at z8-level. The sort of test I wanted to run was, say, moving around the cube in one rotation, either way. So, LOOP WEST. The arithmetic here is not too hard. But in a time crunch, it felt that way. And as I looked at the cube game I figured if I were more with-it, I’d sit down and nail it, and what strikes me is how often I’d go waste time on the internet or play a mindless game that took about as much energy as organizing these tests.

It’s a lesson I learned before, but it was particularly obvious here. My testers helped me with various bugs in a short time frame, and this spurred a few features which had their own bugs, which we would’ve had enough time for if I’d started earlier. But I’ve been through a few of these, and I felt a lot calmer fixing bugs or adding silly features, or planning them for post-release.

And by the way, two people who have written some mathy stuff I enjoyed may’ve pushed this game unknowingly when they tested things, too. Mathbrush wrote Ether and Spike wrote A Beauty Cold and Austere, and these both convinced me there had to be some sort of abstract 3-d puzzle out there.

I think I discussed the possibility of making a regular tetrahedron with Mathbrush–with points at (1,1,1) (3,9,3) (9,3,3) (3,3,9)–but this never made its way anywhere. Still, I had a regular tetrahedron that appeared in this game–the four beacons form one. Ideas do get recycled and refined and pop up when you least expected. And for the other testers, I said, “OK, play devil’s advocate and try to break things with just traveling around even if you don’t know how to solve things.” Their input prompted many of the sort of bug fixes that are very hard for a programmer to do on their own. I also got a lot of tips for user friendliness.

Three out of my four testers were fellow competitors with games I enjoyed, and it’s great the competition is not cutthroat. The other tester left me a PM on the forum I overlooked for a whole day. I’m glad it was just a day, but their pinch hitting helped a lot to make sure the docs were correct. The one other cool thing about testers is, if you have someone overseas, they can get stuff done while you’re sleeping, which is very cool. This happened here. I recommend having such a tester and being such a tester, and I was (for 1958). Plus it’s just cool to know the Internet lets you work with someone from another country. I mean, it has for a long while. But it doesn’t get old!

My testers gave me enough to work with and fix, and they verified enough, that I was able to spend the last day writing tests for all 48 possible game configurations, to make sure they worked and you could open up the very center. I felt cool being able to check off on this. I did miss something–it was a unit test I should’ve done. And if you look at the original source, you’ll see something very, very suspicious in the table of beaconzaps.

southupeast southupwest west
southupeast southupwest west

I cut and pasted and failed to edit here, so–if you had one of the southdowneast and southdownwest beacons, it wouldn’t negate the other, and worse, there was debug text flowing all over the place if you managed to do things, due to an every move check. So…ouch.

Again, I had more than enough time for it the final day but assumed it was the sort of thing I couldn’t possibly botch, and with limited time, I had to ignore things. In fact, one tester found a bug related to this, and I should’ve taken the time to write a test for all possible conflicting pairs. It would have taken 15 minutes. But I did not, until October 2nd or 3rd or so. I convinced myself I would only use it once, but at the same time…I took the time to convince myself, several times.

And I think this shows up fears we all have about testing. If it’s complex, it’s scary. If it’s simple, we’ll have wasted time testing if nothing shows up, and we’ll feel dumb if something slipped through. But–I wasted a lot of time in those last two weeks on other less rewarding activities that went nowhere. I should have invested some of that time in myself.

Fortunately, This was hard to find–my testers turned up one fault, and the reason I didn’t find this is because people probably don’t go down to the bottom face of the cube to start, too often.

Still, once I got in the flow, I also made a lot more modifications to the test module than I expected, and that felt good. I was poking around and having fun, and you should, with the world you created, and I could’ve done this in September, but it kept my mind off worrying what people thought of the game.

Another raft of bugs popped up over a command I implemented in the last day or two: CLEAR/CLEAN. You could do so from the center of the cube, trapping yourself. While people probably won’t try this, because it’s just not the right place, it’s still possible, and learning of it helped me tidy up some other code.

As for the game itself? I didn’t mean for it to be TOO hard. But I was pleased one trap occurred naturally. If you are not careful, you can get in a position where you’re close, but all four beacons are in the wrong place. For instance, if you have a top face of red, north of yellow, east of blue, then the white goes in the UNE. But if you start with the white in the USE, red in the UNW, blue in the DNE and yellow in the DSW, you have flipped the yellow and purple faces. I liked this natural false trail and was willing to accept that some smart people might be fooled by it, and hopefully they would see–oh, okay, this is what I did! If you make a puzzle with pitfalls, you can expect backlash. I don’t think I originally hinted well enough that you were close, and I think the player deserved that. Again, this is the sort of tweaking you should do, but it’s tough to do on a short schedule.

I also think I didn’t add enough clues about how to riff on the rainbow colors to get all four message pieces. Again, short schedlues leave stuff like this out, which is unfortunate. I don’t even think I really nailed down the story chunks at the beginning or end, either. I have a tendency not to deal with that until the bugs have been fixed, when really I should do so at first and tell my testers “OK, let me know what doesn’t make sense or what needs more filling out.”

So the story may also be thin, but I’ve always been interested in/amused by alternate sciences, or even how smart people have gotten things wrong over time. And the four elements are a particularly big example of wrong stuff we believed. So I kept researching stuff we didn’t understand or have misunderstood throughout history. Or, well, true scientific stuff I disbelieved as a kid.

In-comp, I added some abstract anti-scientific silliness if you visit more edge squares. I slowly remembered stuff I had questions about, or stuff I really believed had to be right or just didn’t understand. It seemed in the spirit of comp updates. Nothing drastic, just, oh, I missed that. And I have a few post-comp fixes planned, too.

I also was pleased this puzzle fell out: can you trace through all 54 squares without repeating? The proof went in the walkthrough, and the coding was not too bad. Again, I wish I would’ve had it pre-comp, to make the best impression! But being allowed to make changes helps me say “why not” vs. worrying if it stinks during a pre-comp crunch. I should know those fears don’t mean much by now. But I still get caught up.

Still, in-comp I felt relaxed enough I was planning ahead to my next project. I managed to do a bit a day, and a chunk of old notes will be very useful. So I may make it eight IFComps in a row.[/spoiler]

This is more general advice, because I know I’m in a tough position–I won’t please everyone, and the puzzles may make people say no, I don’t want to do this right now. But I don’t want to deliberately annoy people. I don’t know how many people read Richard Feynman’s book What Do You Care What Other People Think, but seeing the title in high school, I thought, geez, he sounds like a jerk! Then I read the book and his letters and remember him taking the time to explain “I’m flattered” doesn’t mean “stop flattering me” to a fan in India, and it helped me realize that plain worrying/caring what other people think is different and less productive than giving them something cool and new to think about and enjoy. Or even trying to. And I hope CiC did that for people, and whether or not they like odd things, they found CiC to be the right sort of odd thing.

In IFComp’s instance, I failed to care where I placed, but I did manage to say, okay, I can do this or that, and I really want to. And implementing this or that should help people understand or enjoy things, and when I focused on that, I was happiest and most productive. I think this is true in general. But participating for several years has helped me understand this not-really-a-zen-koan of the right way to care about other people and sort of not care too much about them at the same time.