Mystery Hunt 2021 [Part 1/2]Jan 28, 2021
This post is about the 2021 MIT Mystery Hunt. You can see the hunt website with most of the puzzles and solutions at perpendicular.institute.
Two weeks ago, the 41st annual MIT Mystery Hunt—a project that I’d been working on for the past year—came to a thrilling close. Huge congratulations to Palindrome for being the first team to find the coin. I intend to write two posts about my experience on the writing team. The first (this one) will focus on some of the major events leading up to hunt itself, from theme selection, to dealing with the COVID-19 pandemic, to last-minute fire-fighting. In the second, I’ll talk about specific puzzles and rounds that I have things to say about.
I’m sure most people who end up reading this are familiar with the details of how our hunt worked, but I figure it can’t hurt to start out with some context:
The theme of the hunt was about the discovery of an alternate universe which contained the Perpendicular Institute of the World (⊥IW), a university that was remarkably similar to MIT. Teams needed to fix problems with the buildings on campus (The Green Building was covered with plants! The Infinite Corridor became actually infinitely long!) and rescue Professor Yew, the researcher who opened the original portal between the two universes and was now stuck in ⊥IW.
Teams could explore ⊥IW via a projection device, basically an MMO that we built that replicated
MIT's ⊥IW’s campus in a video-game world. All puzzles needed to first be found in the projection device before teams could actually work on them. Usually this meant that teams had to solve some fun navigation puzzle in the MMO in order to find the NPC that would give them the puzzle. Most puzzles themselves didn’t use the MMO, but some did in creative ways; more on these puzzles in the next post.
One of the weird things about writing a Mystery Hunt is that rather than getting a chance to relax and settle in with your teammates you first need to make a big decision with huge consequences that will affect just about every other thing you work on for the next year. Namely, you have to choose the theme of your hunt. I’m not sure there exists a way to make the theme selection process feel like a friendly, low-stakes affair, but I know that it was a rather fraught experience for us.
The MMO theme, which we eventually picked, was clearly the leading proposal throughout the process, but as Nathan mentions in his retrospective, it didn’t have universal support:
The MMO theme won the vote. Though I’m not sure it would have won if only experienced writers voted. I haven’t seen specific votes, so I can’t say this for sure, but from our discussions it seemed that most of the people who were strongly against the theme were puzzle veterans, and many people who were the most excited about the theme were people who had never contributed to GPH.
I was one of the voices in opposition to the MMO theme. My main concerns were:
- The MMO itself was a huge risk from a technical perspective, and I didn’t believe that we could deliver the complete, bug-free experience the theme proposal was promising.
- The MMO would be off-putting to hunters who don’t have as much experience with video games.
- Implementing the MMO would require an absurd number of person-hours that could instead be used for actually writing puzzles.
It’s interesting to look back on these concerns now that hunt has actually happened. Even though we did manage to deliver both a largely glitch-free MMO and a complete set of compelling puzzles and metas, I think I stand by all my concerns, and would still recommend future writing teams to not take the risks we did. It worked out for us, but it was not clear to me that it would work up until the very night before hunt (more about this below).
It also helped that the MMO proposal team added additional detail to their theme document that addressed my and others issues. In particular, the final proposal included the following statements:
Metapuzzles would not use the MMO in any way. This was super important to me, because it meant that if the MMO was never finished or crashed in the middle of hunt we’d still have essentially a “normal” Mystery Hunt that teams could enjoy.
Player capability would be limited to just moving around and emotes. I’m very glad we stuck with this, and I think it went a long way towards making the MMO friendly even to non-gamers.
Puzzles that use the MMO will be clearly marked as such. We did end up doing this, and I think this was useful in helping us avoid red herrings in the MMO itself. (There may still have been a few though. For example, some teams told us that they spent a lot of time exploring ⊥IW.giga to determine if they needed to do something in the MMO to make progress in the round, and I do wonder if the round might have gone a little smoother without the MMO (although to be clear, I think the vast majority of the issue stemmed from the puzzle presentation itself)).
Once the MMO theme was officially selected we held elections for a few exec roles, and Jon and I jointly ran for and won the Editor-in-Chief position. The first major piece of business was then vetting and help flesh out proposals for each of the rounds. I’ll save commentary on some of the individual metas and round structures for a later post, but the one thing I’ll say is that we had a lot of people on our team who wanted to try their hand at writing a metapuzzle and as such we had a lot of round proposals. It was difficult enough whittling these down to the eight we ended up choosing, and cutting them down to six—as some seem to have wanted us to do—would have meant saying no to a lot of great ideas, which we just weren’t willing to do.
Around late March, about ten days after we all started locking down and social distancing and bending the curve or whatever, Lewis wrote what would be a very prescient document that speculated on how the ongoing pandemic would affect our hunt. It essentially laid out the two options that we as a team would need to choose between: hold the first ever remote Mystery Hunt or postpone Mystery Hunt for the first time.
Given the uncertainty, we basically avoided thinking about the future up until MIT clarified their plans. When MIT announced that they were essentially canceling IAP 2021, we started gearing ourselves up to make the decision. We sent out a survey to past participants to get a sense of what they valued about Mystery Hunt and what they thought we should do, we formed a committee to flesh out the two basic options (remote hunt or delayed hunt), and we held a binding vote.
I was on the COVID committee, and I think the work we did was some of the most valuable contributions I made to this hunt. In particular, I think that we helped the team get a realistic sense of what the two options would look like in practice, and that in turned allowed members to cast an informed vote.
I lobbied fairly strongly for the remote option throughout the process and I was relieved when it ended up winning.
Again, I’ll save comments on specific puzzles for a later post, but I did not want to gloss over what I spent the vast majority of my time on, namely writing, editing, testsolving, revising, post-prodding, fact-checking, copy-editing, and ordering so many puzzles.
As you can see from the graph, a lot of the work happened in the last month or even the last week before hunt. I think this is somewhat inevitable, but I do regret the franticness at the end.
Speaking of a last-minute crunch, let’s talk about:
The Night Before Hunt
Aside from the three big testsolving events we held, the primary way we tested the MMO was via “MMO Races” which would function like full hunt testsolves, except we’d set the answer to every puzzle to ANSWER to allow people to focus on testing the MMO itself. These were very chaotic and we’d end up with a long list of bugs after each one. I think these were great at surfacing obvious issues like NPCs giving the wrong puzzles or movement being broken entirely in the Tunnels, but I was worried that we were missing more subtle errors related to puzzles unlocking in sync with the MMO.
So, the night before hunt a group of us did a much more careful run-through of the entire hunt from end to end. It was kind of a grueling experience, but it was super valuable. For one, it convinced me that we’d actually be able to pull this whole thing off: I went into it thinking we were going to find way more issues than we could possibly have time to debug and fix, but we ended up identifying only a handful of critical bugs, all of which we were pretty sure we fixed by the morning.
One of these was related to the Infinite Corridor navigation puzzle. Unlike the other nav puzzles, which were for the most part either entirely locked or unlocked based on a team’s current JUICE value, the Infinite Corridor navigation puzzle is this complicated system in which the NPC’s in each room, the portals in each room, the mapping function for each portal, the NPC at the start of the corridor, and the portal leading to the metapuzzle all need to show up and mutate at the appropriate times in response to both progress in the round and whenever any person on the team finds the current target room.
When doing the run-through we discovered an issue involving the portal to the round’s metapuzzle showing up at the wrong time. I don’t remember the exact bug, although I do remember needing to repeatedly feed Jon the solution to the final Infinite nav puzzle over and over again as we repeatedly tested the round. In parallel we were also trying to finish an instance of Cafe Five to verify that completing it would correctly give us a token that we could spend to get an answer. I distinctly remember racing Anderson to see if I could look up the solution to some of the logic puzzles faster then he could solve them legitimately.
We found a couple of other issues related to the Violet Coins In Space field goal and the unlock times for the Yew Labs round, but like I said, for the most part things were working correctly. We started the run-through at around 10pm and let up at 3:30am—five and half hours before kickoff. Huge thanks to everyone who stayed up with us including Steven, Herman, and Ben who did most of the actual debugging and fixing.
The Bugs We Lived With
Of course, during hunt itself we learned of a number of bugs that we missed during the run-through, but luckily none of these ended up being terribly severe. Specifically:
- There was a rare edge case we missed in which a team solved an Infinite Corridor Simulator puzzle prior to even finding the metapuzzle, which would prevent the metapuzzle portal from ever showing up.
- We discovered an annoying bug with Cafe Five token spending in which teams could exploit a race condition and spend one Cafe Five token on two different puzzle instances. We tried in vain to fix this during hunt, but ended up bringing down the puzzle repeatedly as we fought with Django atomic transactions. Eventually, we declared defeat and just asked teams to be extra careful when spending a token.
- The Button Press field goal was supposed to unlock as soon as the puzzle Twins (which unlocks ⊥IW.kilo) was solved. Instead, it unlocked as soon as Twins was found. This meant that several teams unlocked the puzzle but were unable to start working on it. It also somewhat spoiled the existence of ⊥IW.kilo to teams still stuck on ⊥IW.giga, but given how much trouble teams had with giga, we decided this was for the best.
- We had wanted the four dorm metas (Random Hall, Simmons Hall, EAsT camPUS, and Dorm Row) to unlock both after some proportion of their feeder puzzles were solved and after every student puzzle was unlocked. We forgot to add the latter condition which meant that Random Hall—which had its feeders unlock disproportionally early in the ordering—often unlocked for skilled teams far earlier than we wanted it to. A lot of these teams solved Random Hall without even unlocking Blind Calculation, and some of them then tried to backsolve by submitting PRODUCT TEST or PRODUCT TESTING to every new student puzzle they unlocked.
- The Random Hall bug had another effect. We had wanted to unlock the MMO in three phases. The first phase, which was available as soon as the projection device opened, was all of east campus including the Green Building, Building 14, and the Sailing Pavilion. The second phase included the main group, Killian Court, and the Stata Center, and the third phase included everything west of
MassachusettsPerpendicular Avenue. Each phase would unlock for a team as soon as any asset located in that phase was needed by the team. Since Random Hall was in phase three, that meant that this phase unlocked earlier than we would have liked for many teams.
- All the teamwork-time puzzles in the Basketball round experienced bugs related to both load and concurrency issues, which made them a more frustrating experience than they were intended to be. I think these five puzzles are some of the best ones in our hunt, so I do encourage you to check them out if you didn’t get a chance to do so during hunt itself.
It was good to have an activity I could plow time into that could be done entirely remotely. Yes, there were some plans for in-person writing and testsolving retreats that we had to scrap, but hunt-writing was always going to take place mostly over the Internet, and this ended up being a good year to spend a lot of time with people on the other side of the country who I normally couldn’t hang out with face-to-face anyways.
I joined the writing team because a lot of friends I’d made via the Galactic Puzzle Hunt were on it, and I thought it would be a fun experience. It absolutely was. I know a lot of team members were at times stressed or sad or angry about various things, and I don’t want to minimize the angst caused by the decision to switch to a remote hunt, but I had a fantastic time helping build this beautiful thing we created and I don’t regret a second of it.
I’m excited to participate in Palindrome’s 2022 Mystery Hunt, and here’s hoping that it can take place in person at MIT once again!