Writing MIT Mystery Hunt 2026

(最後更新於:

I helped with running MIT Mystery Hunt 2026. It was very cool.

Disclaimer

  • This blog contains spoilers for the hunt.
  • I am not a spokesperson for Cardinality. All opinions are mine and mine only.
  • I have less puzzle hunt experience than many other team members. They are also more experienced in writing puzzles than I am.

Introduction

I used to wonder why people aren’t excited about writing next year’s mystery hunt. Isn’t it fun to write 150+ puzzles in one year, in addition to doing all the art, web dev and logistics work required for the biggest annual puzzle hunt event? Well, the answer is both yes and no. I very much enjoyed writing and hosting the hunt, but I think we all need a break after this.

Writing the hunt

Prior work

In 2024, we set up a server for discussing puzzle ideas that we could use in case we decided to organise another Huntinality, or won the mystery hunt. In theory, if we hadn’t won last year’s hunt, all these ideas would likely go to Huntinality 4.

Team members brainstormed some wacky round ideas, such as a round based on gacha games and a “time loop” round. These round ideas were developed to be flexible and independent of the story. These ideas were further developed when we won the hunt, and we integrated them into the hunt with cutscenes and MonArch entries for each of the keepers.

We also have a couple of puzzle ideas drafted before winning the hunt. A majority of the activities were people discussing ideas for various puzzles or building small prototypes. Overall, there wasn’t much stuff happening before 2025.

Writing the hunt

Cardinality was the first team to break into the vault in MH25. Per the tradition of MITMH, we needed to write next year’s hunt.

After winning the hunt, the activities on the server increased significantly. Updates were made through regular announcements and newsletters, for which I am eternally grateful. We also discussed some goals and expectations for the hunt. Here are two questions from the conversations I found interesting:

  • The majority of puzzle hunters are non-MIT students. How can we make this hunt feel more MIT?
  • The number of puzzles in MITMH has increased to 150+ in recent years. How can we convince new puzzle hunters or MIT students to join an event that would be almost impossible for them to finish?

We didn’t have an answer, but we all agreed to make the hunt fun and exciting for both new and experienced puzzle hunters. I think the questions above were somewhat answered through the final hunt structure:

  • Task-centric unlock system and MIT-related tasks to increase MIT involvement and let small teams have fun
  • Having the Kingdom of the Puzzmon as a more straightforward round with a capstone to make the hunt more approachable.

I set a small goal for myself: write five puzzles. I ended up writing six puzzles (counting the Layers series as a single puzzle). Hear Me Out / Goku were the earliest pair of puzzles I wrote, which is why these two puzzles weren’t as polished as other puzzles in my opinion. Even though I have written some puzzles in the past, I didn’t receive much feedback, since my friend was the only testsolver I had.

We had our theme proposal and voting in early February. The “Monster Investigation Team” proposal won by a landslide. We also settled on the hunt structure and consolidated some of the terminologies used in this hunt. There was a vote in May for the name of the monsters, and “Puzzmon” (the name in the original proposal) won. A few of them would change further into the year, including the legendary monsters. (“Keepers” used to be “Lords”, which used to be “Lemons”.)

The pun “MonArch” survived, but “Lemons” didn’t.

There wasn’t too much coursework at the beginning of the year, so I could spend more time on the hunt. I probably spent around one-third of my spare time working on the hunt.

In mid-March, I set up my WSL environment and made my first pull request. The setup involved Docker, which turned out to be very resource-intensive and not great for my little laptop, where I was running everything. Package downloads would also fail randomly, but everything else worked out fine.

At some point, the time required to build the container increased to around 30 minutes, and the rebuilding time increased to 5 minutes. Furthermore, the size of the repository had grown so large that, combined with my poor internet connectivity, I would have to set up a shrine and pray for the internet connection to be stable enough to allow me to run git pull or pnpm install without failing. Later, Sushi told me to ditch Docker and set up my own local environment, which was much better than using Docker.

I actually didn’t do too much development work besides post-prodding puzzles and squashing a few bugs. I wanted to do more dev work, but turns out “Dev + Art + Writing puzzles + School + Submitting applications” was too much stuff on my plate, so I did significantly less dev work than expected. Thank you Ryan for understanding the situation.

Teammate hunt happened at the end of March. The timeline mechanics and sequences were fun, and the conlang portion was awesome. Unknowingly to most people, the people working on the “Time Loop” round were dying inside as they got sniped by teammate (exaggerated for comedic purposes). The entire round was rebranded from time loops to multiverses, which became Terminus. The base idea of exploring different versions of a puzzle remained the same, but the meta had to be rewritten, and at least one regular puzzle was affected by this change.

Fortunately, Galactic didn’t snipe us with their jigsaw islands. Fate’s Thread Casino has elements that can be found in their Stargazing hunt and Terraforming hunt, but they were distinct enough that a rewriting would not be necessary.

Fate’s Thread Casino

Round Structure

Disclaimer: I’m not the owner of the round. I’m only speaking from my experience.

The design of Fate’s Thread Casino was pretty much led by Sushi. In 2024, Sushi proposed a round based on pulling clues and unentangling them, inspired by Genshin Impact. The original idea was much more convoluted:

  • Incremental game: solvers can play the game to earn more chips. It was scrapped after a testsolve in April revealed that solvers were more inclined to wait for clues than work on the puzzle with partial information. It was replaced by quests which encouraged working with partial information.
  • Rigging shells: the solver has access to only one of the shells. Certain hidden information tells the player how to gain access to the second shell. This was removed as we found a better way to use this information.
  • Random pulls: synchronisation and randomness didn’t go well together, and there wasn’t one good randomisation algorithm that worked well for all banners, so all pulls are rigged.

Personally, I think removing the incremental games is a good choice, since the game acted as an artificial time wall independent of puzzle progress. I also prefer the current way of using the hidden information to rigging shells. Randomisation was the only thing I hoped to keep. But from a development standpoint, I can also understand why it wasn’t implemented.

We built various prototypes to simulate the pulling mechanics in testsolves. Dan created a website that gradually revealed more clues over time, to simulate the experience of playing the incremental game. After the testsolve, we decided to replace the incremental game with quests, so I built a website with a pulling interface, an algorithm for random pulls and code-based unlocks.

This version of the question mark would have made it to the hunt if I got lazy.

The code-based unlock system required testsolvers to enter codes to redeem more pulls, which were given manually at fixed time interval (hourlies), and also when they reach a milestone that would allow them to complete more quests (knowledge checks).

The code-based unlocks system should have been coupled with a spreadsheet that simulated the quest system, inspired by Dan’s magical spreadsheet for Hyperbolic Space testsolve. Solvers could submit their guesses to quests by entering codes in the sheet. After solving the quests, the solvers would get a code that could be redeemed to get more pulls.

Unfortunately, the spreadsheet was never used in any testsolve. Furthermore, I couldn’t reuse most of the knowledge checks in the spreadsheet, since they either had too many possible answers or were based on progressive unlocks, which weren’t available in the hunt website. There are still a couple of clues I could reuse, though, so not everything was lost.

Besides the unlock system, we also did some maths for the pulling part and the scrapped incremental game part. Some of the problems involve calculating EV and variance of the number of times needed to pull all clues under certain conditions, which can be regarded as variants of the Coupon collector’s problem.

Target: Calculate the EV and variance for the number of pulls needed such that p% of the overall pool is pulled (situation 1), or p% of each side is pulled (situation 2 / 3).

Situation 1: There are 62 clues.

Situation 2: There are 25 clues for puzzle A and 37 clues for puzzle B.

Situation 3: There are 25 clues for puzzle A and 37 clues for puzzle B. If there are 4 consecutive repeated pulls, then the next pull is guaranteed to be a new clue.

Sushi tried to use AI to solve the problems. The code AI generated gave the wrong results for some of the problems and failed to solve the more complex ones, so I wrote some code manually. The problems were good programming exercises and very fun to solve.

However, all of these efforts were in vain after we decided to seed every pull.

We ran a couple testsolves to balance the mechanics in this round, including puzzle unlocks (at first, only two banners were available at the start) and the number of chips given per quest (testsolvers were flooded with chips in previous testsolves). I was worried that the Characters banner would be too easy, but Benji assured me that a low-difficulty puzzle near the end might not be a bad thing. I’m very glad that I didn’t buff the puzzles, since the round was already very difficult.

The questions in the hourlies were crowdsourced from a bunch of people on the server. We had a spreadsheet filled with many good questions that could be used for hourlies. Here are some questions that didn’t make it to the hunt:

  • Favourite Mystery Hunt? {2026, MMXXVI,二〇二六}
  • Favourite character in this hunt? {(name of keeper), (name of keeper, but lowercase)}
  • What is more important, the plot or the characters? {Plot, Characters}
  • Which one is better, stick figure drawing, or anime-style drawing? {Stick figure, Anime-style}
  • You have 10 pulls. Would you spend them on a banner with 1% legendary character, or a banner with 5% rare character? {1% legendary, 5% rare}
  • Best waifu/husbando? {Furina}
  • blob {blob,🙏,🛐}

Art Design

We had a rough idea of what the round may look like, thanks to Jeff’s concept art. However, the details were still largely undecided, such as the design of the keeper, the layout of the banner arts, or how clues would be displayed.

To brainstorm ideas, we shared designs from various gacha games, including the user interface, pull animations, and waifu/husbando designs. Eventually, we converged on some ideas, and the round slowly took shape into its current form.

An old draft. Sushi is awesome.

The arts of this round were mainly done by Jeff, Chris, and me. The work distribution looked something like this:

  • Jeff: Round presentation, keeper design, keeper art
  • Chris: Pull animation, puzzle background
  • Me: Banner art

You might notice there are two versions of the pull animation: pull 1 and pull 10. The 3-blob version was born due to a shitpost: we were looking for royalty-free icons for the slot machine. Cindy said the following:

So I drew a Nice free red 7:

I don’t actually speak French. I also didn’t know that France would appear in a different puzzle.

And then I made even more icons:

And then Chris added the blob to the slot machine. Team effort!

However, my main art contribution to the casino is the banner art. Jeff and I worked on the banner art in the casino. Jeff was mainly responsible for the keeper art, and I was mainly responsible for the background art. However, we also passed drafts around and helped each other out.

Sushi suggested a more oppressive, dystopian mood. Following that theme, Jeff drafted a grayscale casino background. This might have made everyone think that all the background art would be in grayscale, so Jeff later clarified that the background art would be coloured eventually. The banner art was switched from grayscale to coloured.

Later, I proposed including both the grayscale and coloured banner arts. Unsolved banners would be in grayscale, and solved banners would be coloured. I also suggested making part of the banner clickable and linked to puzzles, since many puzzle hunts had clickable icons for individual puzzles. We didn’t have that in the Kingdom, so I thought we should put some art in this round. It also sounded cool (and it is cool).

Similar to PuzzMons, banner arts in this round were lineless. I have done lineless object art and lined background art in the past, but not lineless background art, so that was a challenge for me. I started working on the backgrounds in March. I drafted the art for Charts (and passed it to Jeff) and finished the art for Characters relatively early. I worked on the other three banners simultaneously. I also polished all banners in late December.

There were two full-round testsolves for the casino. Naturally, tentative deadlines for lineworking and rendering were set to be a few days before each testsolve. Due to various reasons, I could not finish the linework for Cells and rendering for Art before the deadline, so placeholders were used for the banner arts during the two testsolves. The last banner art was finalised in early January 2026.

One of the placeholders. It was replaced with the linework before the testsolve.

Here are some design notes or comments for the banner arts. Generally, I tried to integrate elements from the puzzles into the banner art. The keeper used to be a human, so you may see a human in some of the drafts. The aspect ratio of some of the art was also different since it was not standardised until late July.

Art

Melissa gave me some initial ideas for this banner. I couldn’t figure out what to draw for this banner, so I just experimented with various ideas. My sketchbook was really handy for brainstorming ideas or doing quick drafting, even though my drafts were very messy, and drawings from the opposite page kept leaving stains on my drawings. Ultimately, the idea “Draw keeper puppeteering a stick figure with other stick figures sitting around like dolls” from Melissa caught my attention.

Others really liked the staircase guy. I think that’s an accurate representation of us at that time.

Due to assignments, I only had two weeks to render the Art, Words, and Cells banner, so I couldn’t fully render the Art banner before the second full-round testsolve. I made a lined, roughly coloured version of the banner for the testsolve.

I’m glad I didn’t try to render the banner before the testsolve though. I wasn’t very happy with the art, so I fixed the desk’s perspective issues, decorated the background, and improved the lighting. If I finished rendering before the testsolve, I probably won’t have the patience to redraw everything.

Easter egg (Spoilers for Common Scenes and Meme Scenes)

There are two sheets of paper in the bottom right corner. The top sheet references Mesmerizer (Meme scenes), and the bottom sheet references Christ of Saint John of the Cross (Common Scene). The top sheet used to be YMCA & Rickroll, but I changed it after realising “Never Gonna Give You Up” appeared in the original puzzle.

Words (Spoilers for As the Fly Crows and charfactor)

Quoting from Sam, this pair of puzzles was about the “audio” vs “visual” cryptic clue dichotomy.

Jeff and I testsolved the puzzle and came up with some ideas. I tried to incorporate words into the banner art, so I drew a magician who can rearrange word fragments at will. However, Jeff suggested a simpler detective (cryptic) theme and audio-visual equipment for the two puzzles, which was better than my idea.

Old draft (I can’t draw)
Old draft 2 (I still can’t draw)
New Draft

The gramophone was replaced with a set of PA system after Sam’s feedback. Melissa also suggested placing some weird objects in the middle, which led to the useless teapot and gyroscopic device, based on things I found in museums.

The draft also had a human reading a newspaper to emphasise the “words” element. It was later replaced with Jeff’s cute detective keeper, who aligned better with the vibe.

Linework
Initial render

The initial render was shipped for the second full-round testsolve. Melissa suggested that the banner needs more contrast. After the testsolve, I decided to add some light coming from the windows.

I actually didn’t know how to draw light coming from a window, so I had to study that. The outcome was much better than I thought, and it was probably the best change I made across all banner arts.

As a side note, I also updated the text on the TV screen to align with the font used in the puzzle. “Reconnecting” also hints at breaking down the letters and reconnecting the components.

Cells

I played with many ideas before settling on the current layout. Besides the drafts I have sketched, there is also a “shipwreck + floating cargo crates” idea that interested me. The current design is a mix of previous designs.

My very first idea of a scene that incorporates logic puzzles.
I really liked this idea, but it felt out of place. This draft was used as a placeholder for the first full-round testsolve as I couldn’t finish the linework before the testsolve.
I also experimented with scenes like dumpsters or factories.
The design I eventually settled on.
Linework
Crates with only a single colour
Final version
Spoilers for Building Blocks and Easy As 1-22-333

I wanted the four crates on the right to represent Easy As 1-22-333 since there were 4 grids in the puzzle. However, after polishing the banner art, each of the four crates became a 2x2x2 cube, and they were assembled into a bigger cube, which is exactly what solvers need to do in Building Blocks. So the puzzle assignment was swapped, and the bars of the yellow crate were updated to match the 8x8 grids in Easy As 1-22-333.

Charts

I was only responsible for the layout of this banner art. Everything else was done by Jeff.

This was the earliest banner to be worked on. Before we decided to do background + character art, I was brainstorming ways to incorporate charts into the art. One of the ideas was to show a researcher with stacks of paper printed with charts.

While we were brainstorming ideas for the gacha round, someone sent a compilation of pull animations. I watched all of them, and the stack of TVs in ZZZ stood out to me. It looked great and perfect for displaying charts. It also reminded me of an episode of “Super Brain China” that featured stacks of TVs.

I simply have a thing for stacks of screens.

First draft

Melissa gave some suggestions for refinement. Then, the draft was sent to Jeff for rendering, and the result was an amazing banner art.

Draft
Final version, rendered by Jeff

Many people recognised the reference to ZZZ, to the point where I was worried about plagiarism. I think art is a process of combining things and adding your unique twist. I hope miHoYo won’t be angry at me for borrowing the TV stack idea.

Sorry to people who were trying to find more references to other gacha games.

Characters

I was really happy to be able to create the banner art for my own puzzles. For this banner, I tried to incorporate the “anime” and “character card” theme by putting the keeper in an anime studio.

Rough draft (the previous version had a horrible proportion error)
Linework, after incorporating suggestions from Sushi
Rendering WIP, with an unblurred version of “Las Fate-gas”
First draft rendering. It gives an odd Celeste vibe due to the colours.
Before polishing
Final version, background-only
Final version

The computer screens were very versatile. It was easy to add something and make it related to the puzzles.

Others call the placeholder person in all of the banner arts drafts by different names: protag-chan, placeholder-chan, the character, the keeper1. In my head, I have always referred to her as Sora-chan2, which means “Sky” in Japanese. You can find her design on the wall. I didn’t put too much effort into designing her as she was a placeholder3, but I still like her.

I also included drafts of all previous banner arts in the background. This banner art is meant to be a “big reveal”: turns out the keeper drew all the banner arts in this round.

The keeper’s working environment was based on my real-life environment (minus the graphics tablet): my working desk is right next to the window, with a blue curtain, and the books in the banner arts are books I own. In fact, I used myself as a pose reference for the draft.

One of the books

Maybe this is where I see myself in ten years.


Working with the art team was a wonderful experience. Other teammates provided valuable feedback to improve the banner arts, and I enjoyed all the back and forth between members. Big thanks to Melissa for coordinating and supervising everything within the art team, and thank you to everyone in the art team.

Testsolving and Factchecking

Most puzzles followed the “two-clean solve” principle. As most people in Cardinality were from the US, many testsolves happened while I was asleep. I still testsolved some puzzles, and a lot of them were very fun. I also got to see their creative ideas.

Spoilers for Spilled!

I testsolved this puzzle with Pichu and Joshua. After realising that the trigrams were quotes from “Hamlet” without “T”, we removed “T” from everything in our sheet, including the title. Despite this, it took some time before any one of us realised that “Hamle” is relevant. I almost died when Joshua told us Hamle was a genre of logic puzzle.

We also had full-round testsolves. All rounds were cleanly solved at least once. Out of all rounds, I believe that Fate’s Thread Casino required the most out of all rounds, being 3 testsolves (2 real-time + 1 async), to fine-tune the amount of chips, unlocking, and improve the flavourtext in the meta.

There were also multiple async testsolves. There was an async testsolving and factchecking session of the entire Kingdom. It was very fun, and I got to familiarise myself with how the hunt worked. There were also two back-to-back async testsolves for Fate’s Thread Casino and Terminus in December, mostly to test the metapuzzle (both were solved cleanly). Level 51 was roped into both testsolves and had to suffer for a week.

Speaking of Level 51…

Level 51

Disclaimer: Level 51 gave me consent to post these quotes.

I have a lot to say about Level. He is very cool, and he is excellent at shitposting. He single-handedly made the team 10x more insane. He made Dan say UwU, and I think every team needs someone like a source of joy like him.

Context: one of the codenames of Level’s puzzles is “picturesque-feet”.

This was only the tip of the iceberg.

Jokes aside, Level is genuinely a good puzzler, and he made really solid puzzles. I testsolved Shapes, Central Precinct & Lockup (co-authored with David), and The Puzzle That Cannot Be Named. All of them were wonderful. I also met him in person, which was great.

Running the hunt

Week before hunt

I had a presentation for my final-year project, which was scheduled for the week of the hunt, so it was uncertain whether I could attend the hunt in person until the admins announced the exact date. Fortunately, the presentation was set for the 12th, which gave me plenty of time to pack my stuff and fly over to the US. Unfortunately, having a presentation meant I couldn’t do any work the week leading up to the presentation.

Before flying over to the US, we had training sessions for using the ops site to answer hints and grade submissions. This led to some really funny hint requests and submissions.

I blame Level 51.

I arrived in Boston two days before the hunt, since there was a mandatory staff training session on the 15th. International flights weren’t pleasant. I tried very hard not to fall asleep on the plane to fix my jet lag, so I couldn’t get much work done.

Thankfully, the in-flight entertainment system was a thing. Last time I flew internationally, I flew with Turkish Airlines, and their in-flight entertainment system was horrible. I managed to brick my system and couldn’t do anything on my flight to Istanbul. This time, I flew with Cathay Pacific, and it was much better. I beat Angry Birds, watched a movie, and listened to a couple of albums. I also solved a couple of Sudoku puzzles in a book I brought with me.

This was my first trip to the US, and by extension, my first time participating as an onsite. Boston was cold, but not freezing cold. I appreciated heating inside buses and trains, but the metro was very old.

My strategy for fixing jet lag worked. I woke up feeling refreshed. I shared a room with Professor Burnham (played by Max), so I was able to play with The Child before the actual hunt.

I love the blob.

I walked over to MIT and met the team in person for the first time. No one could recognise me for obvious reasons, so I talked to Max to prove that I am not a random MIT student. Then I sat next to a person who I immediately recognised as David. We chattered a bit, and gradually things became less awkward as more people started talking to me. Also, big props to Ali for remembering the names of probably more than half of all team members (including me) throughout the entire event.

During the training, we watched the kickoff video and reviewed the hunt structure and terminologies. We had a “Dan-stimate” for our hunt progress, which suggested that the winning team would finish between Saturday night and early Sunday morning. Oh, and someone made a 6-7 joke. Twice.

We also did some event playtesting to gain familiarity with them. Puzzmon Spelling Bee and Prompt Engineering were fun. I was also surprised by how well I handled most integration problems. During the training, I was forced to socialise and talk to a lot of cool people from the team, which actually wasn’t that bad. I enjoyed working with others during the Prompt Engineering event.

After failing to find food at Student Center and meeting Level in person, I had some Chipotle with David and Pichu. American servings were huge. I almost couldn’t finish my meal.

I planned to return to Student Center at 9 to help with setting up the HQ, but I was too tired and fell asleep at 7. Oh well.

Friday

Kickoff went well. I was in the close HQ during the kickoff, but according to others, everyone loved the egg-cellent puns.

Before the hunt actually began, the dev team prayed to Redis god. Redis god responded by protecting our website from crashing. The peak was about 250 QPS, but the server was tested on 700+ QPS (from what I’ve heard). Unfortunately, the dev team must have forgotten to pray to the event god. We ran into an unexpected issue with the scheduling system, and we had to do them manually.

As the hunt began, we were immediately flooded with a huge volume of submissions. Our ops website had a claim feature for hint requests, but not submission tasks, since we didn’t expect so many team members to be handling task submissions.

We kept track of submissions using an auto-populated spreadsheet, so it was natural to reuse it for claiming submission tasks. We wrote down names to indicate a task was being reviewed. People at the closed HQ were very fast claimers. Most tasks would be claimed within 30 seconds. I kept hearing woes like “someone claimed it already” and “why is everyone so fast”. However, we often ran into edit conflicts. After claiming a task, someone else could overwrite your cell and claim the task. Alternatively, someone may grade the task without even looking at the spreadsheet. Very often, the task you spent 5 minutes on grading had already been done by someone else, since the submission grading page didn’t auto-update whenever someone graded a task.

Amidst the submission grading chaos, the dev team added the claim feature to the ops site. Thank you to the dev team for saving us from Google Sheets hell.

We had an internal rulebook to determine whether a submission should be accepted or rejected. I tried to follow the rulebook, but many edge cases weren’t included in the rulebook. A surprising number of teams submitted an animal in costume for the PuzzMon mascot, and we need to decide whether “dog in a hat” is a high-effort submission. The rulebook was also too strict in some cases. Create your own Smoot used to require an error term that starts with the letter “E”, but this wasn’t clear from the task submission page. We also had instances where a submission was accepted because it was too funny. There were some AI submissions, but teams that were reminded not to use generative tools would stop using them, which was greatly appreciated.

We had a big board for keeping track of hunt progress. Sometimes when I got tired from grading all the submissions, I would check the big board and “hey look (team name) got walled by two metas holy hell please solve our puzzles”. I also enjoyed checking the solve stats of my puzzles.

I also really liked the vibe inside the closed HQ. We celebrated whenever a team made big progress. We also shared submissions with one another. Talking to others was also very nice. I met Colin Lu, who kept saying that I was a great solver??? I think many solvers in Cardinality are better than I am, but I appreciate that.

By Friday night, it was evident that our “Dan-stimate” was off: the Kingdom puzzles were harder than expected, and the leading team was a few hours slower than “Dan-stimate”. This was not necessarily a bad thing, but at some point in 2025, I was convinced that this hunt would be much shorter than recent hunts.

I also ran some sessions of Prompt Engineering with Sam. Prompt Engineering had problems with groups getting stuck at one remaining category, usually semantic, which could be frustrating. In that case, I would usually give small nudges or allow more guesses per turn. Matt, another person running the same event in a different room, was doing a much better job at playing with HARVARD. I hope that participants had fun at the event (at least, for the sessions I hosted).

Saturday

I went to MIT as usual, did some closed HQ submission grading before moving to open HQ and classroom visits.

There weren’t many activities in the open HQ. Solvers come to pick up some items and go. However, I still enjoyed talking to the solvers. I was also pleasantly surprised to see a couple of minors visiting our open HQ. I didn’t expect young people to be hunting as well, and it was great to see them enjoying their time with the hunt.

I also did classroom visits with Victor and Andy, even though I spoke fewer than 10 sentences across all visits. We visited a couple of teams, including teammate and EC. (I am a big fan of your hunts!) It’s a pretty nice way to not only gather feedback from the teams but to build a closer relationship. I enjoyed seeing teams working on puzzles on the blackboard and hearing their peak moments in the hunt.

We also shared various classroom setups through the Cardinality Discord server. My favourite one is from latergater, which had all the answers written on papers and stuck to the blackboards.

At some point, we opened up hints for more rounds and increased the width. There was a decision to not hint the top teams, but it was reversed after receiving a request from one of the top teams. We received a lot of hint requests, and everyone in the closed HQ was doing their best to answer all of them. Most of the hint requests I answered were puzzles that I had been spoiled on, or puzzles that didn’t require very specialised knowledge. I had almost no experience in hinting, and I could tell that everyone else was much better at hinting than I was. I think I eventually got a bit better at hinting, but sometimes I think I still over- or under-hint. I also tend to give a stronger hint if I spent too much time on the hint request, which might not be very fair. Hinting is really difficult.

Sunday

It’s snowing!

Providence were leading ahead as the only team that solved the Glitch meta. At this point, Providence had completed all rounds except Atlas of Mosaic, and we were waiting for them to finish the meta and start the runaround. In the meantime, we continued to answer hint requests from other teams as we unlocked hinting for even more puzzles.

After receiving the news that Providence had unlocked the final runaround, we dispatched some people to organise the runaround. We also unlocked hints to all rounds (including metas), and we were swamped with hint requests as a result. I saw a couple of hint requests from teammate and I really wanted them to solve the puzzles in Fate’s Thread Casino, so I just kept answering their hints and pushing them forward.

I worked non-stop till 9 before leaving to run another “Prompt Engineering” event. Even though hinting officially closed at 10PM (as we need to clean the HQ rooms and move our stuff elsewhere), a couple of us were still answering them. I fell asleep at around 12, but some people were still answering hints overnight. Big props to them.

By the way, the snow made the journey back to the hotel really painful. I accidentally stepped into a puddle of water and that wet my shoes. I no longer like snow.

Monday

It’s still snowing. The street looked amazing, but I still didn’t like snow.

We lost access to the open and closed HQ, so we moved to the Bush room. I arrived at around 8 and wasn’t aware that the Mathemagicians were having their final runaround in the bush room. After realising what was going on, I helped fix the Gacha machines, which had jammed as there were too many capsules inside.

After the runaround, other people prepared the wrap-up slides and post-hunt merch. I didn’t have much to do, so I kinda just did my own thing, looking at the stats and answering hints. The volume of hints has decreased significantly after the initial boom on Sunday, but there were still some hint requests rolling in.

There was a team with a particularly interesting name. Due to the team’s name, we really wanted them to solve the meta for Land of No Name. We received a couple of hint requests from them and answered promptly. We were very happy when they managed to solve the meta before noon. A different team requested 90000 chips to pull everything in Fate’s Thread Casino. We granted their request.

We went to the wrap-up venue. A consequence of not attending the kickoff and sitting in an isolated room for the entire weekend is underestimating the number of participants in this event. There were way more puzzle solvers than I thought. The exec team did the wrap-up, and I enjoyed all the reactions from the solvers, especially for Atlas of Mosaic and Fate’s Thread Casino. When the solvers started doing the standing ovation, I finally felt the fruit of my labour, the deep satisfaction you get when you see the happy faces of the solvers. The couple of hundred hours of work on the Mystery Hunt were all worth it.

After the wrap-up, we took a group photo in the wrap-up venue and snapped some photos of the mural. I also grabbed a copy of The Tech, and I was very surprised by the ridiculous size of the KenKen. After that, we just chilled in the Bush room to distribute all the goods we purchased. I finally got to see the really cool postcards.

Members from ECs also visited us and bought some card games! I like talking to teams.

We went to Time Out Market and had some food there. I mostly talked to Pichu and David, but then others joined and I couldn’t keep up with the English. Sorry.

I wanted to stay later, but I had to leave early as I had a flight at 1. I also accidentally fell asleep in the airport while waiting for my flight. Someone in front of me was watching an Atlas of Mosaic timelapse, but I didn’t talk to him due to >m< and just did my own thing. I must have messed up my sleep cycle on the flight, since it’s been two weeks and I still haven’t fixed my jet lag. This could also be due to withdrawal syndrome. I still check Discord and blog posts weeks after the hunt. Crap.

My puzzles

I wrote a couple of puzzles for the hunt. You can find some notes on the puzzles here. I excluded these from the “Author’s Notes” section as I don’t want to put the yappings on the hunt site. I also like to go into details (perhaps too many details) in the blog because it’s my blog. If I can’t put these in my blog, then there’s nowhere else I can put them.

Jumping to Conclusions

I like cheesing puzzle. This puzzle was made with that in mind.

There were two major inspirations for this puzzle:

  • 翻译官 in CCBC13. A lot of teams (including Cardinality) cheesed the puzzle with the power of Nutrimatic. “Bilingual” was based on this puzzle.
  • A puzzle that belonged to Fate’s Thread Casino, but got scrapped as it was cheesed multiple times in testsolves. “Dots and Dashes” was based on this puzzle.

The initial idea was “vandalised puzzles that have to be cheesed”. It evolved into the current idea, which is thematically more interesting.

Writing cheesable metapuzzles was harder said than done. The puzzle needs to incorporate the feeder answers, yet has just enough clues to be cheesed. A shell with too many clues would undermine the importance of the feeders, but a shell with not enough clues can easily turn into a “guess what I’m thinking” game. I also don’t want to make every puzzle about Nutrimatic or Qat. “Chimera” and “Goosebumps” were written with that in mind.

“Skyscrapers” incorporates the feeder answers using alphabetically-ordered numbering. This was inspired by the puzzle How To Find a Component in MITMH2022. In the authors’ notes, they mentioned hoping to see more usage of this method of enumeration in puzzle hunts, which inspired me to use this method of numbering in the mini-meta.

As there were too many Morse code puzzles in this hunt, Benji asked me to replace “Dots and Dashes” with something else. I couldn’t come up with a replacement puzzle, so I wrote “A Pure Metapuzzle”, thinking that it would be funny to have an unsolvable pure mini-meta. Later, the answer was changed from “WIDGET” to “OMITTED” (a more thematic answer), so I still need to write another puzzle. Thankfully, Dan (Dan Simon, not Dan Katz) saved me with his “Dates” puzzle. I have no idea how he managed to find a somewhat thematic answer that uses every month once. The old version of “Dates” was not very gettable, so the presentation was changed to its current form. The example won’t be included if this were a regular mini-meta, but given the context of this puzzle, it was necessary to provide enough clues for cheesing.

To justify the lack of a feeder bank, I also wrote a little story for this puzzle. The info box was meant to represent a conversation in Discord, hence the use of emoticons and slang.

Post-prodding was the most painful part of this puzzle. To complete the fiction of the puzzle, I included a feeder bank, which was written in parallel with the mini-metas. I also wrote the non-cheesing solutions for all the mini-metas, including “A Pure Metapuzzle”, which was actually longer than the cheesing solution. I also created SVGs for “Web” despite having no prior experience in Inkscape.

I hope that people who really like cheesing puzzles find this fun.

Jam Session

This puzzle was inspired by its answer. My first thought was to write a puzzle about guitar solos from various songs, and include the answer as the puzzle title. However, I didn’t know enough about music, so it got ditched.

One thing I enjoy doing is transcribing instrument parts from a song. Naturally, this prompted me to write a puzzle about transcribing music. The idea was to require the solvers transcribe a music into five tracks (Guitar, Bass, Drums, Keyboard, Vocal), and then decode each track to extract the answer. However, transcribing songs is time-consuming, and I didn’t want to record myself singing. The current version of the puzzle was a nerf from the previous version.

The idea of each instrument extracting to names of other ciphers was inspired by Morose Code in Huntinality 2. The final extraction came from noticing that “GUNS N’ ROSES” and “WHITESNAKE” contain “GU” and “IT” in the first two bigram positions. I don’t think too many teams noticed the position of the bigrams though.

In unrelated notes, I really like the 7-segment display cipher. I have seen one puzzle that used it as a cipher, but I think more puzzles should use this cipher.

Stray Child

The anime for MyGO!!!!! aired in 2023. I didn’t watch the show, but my friend (avid enjoyer of MyGO!!!!!) told me fun facts about the band. One thing he mentioned is the use of ateji in song titles like “Hitoshizuku”, which set the foundation of this puzzle.

In January, I came across “Michinoku”, a new album with twelve songs, whose titles are all 3 characters long and unpronounceable. My first reaction was “holy hell all of them are 3 characters long”, and my second reaction was “I should make this a puzzle”. There are some datasets that scream, “Make me a puzzle!” This is one of them.

I wanted the puzzle to incorporate the song titles and their readings. As the titles were made-up words, solvers should be able to assemble the titles from the puzzle, ideally without prior knowledge of the band. Eventually, I settled on the current structure. The titles are revealed when solvers fill the grid correctly, and the extraction incorporates the readings.

There were two challenges in building the puzzle: I wasn’t fluent in Japanese, and I had no experience in building a non-cryptic crossword. The grid was constructed by hand. I used Jisho for most of the fills as it supported pattern matching, but I also hand-picked some of the entries to relate to weeb Japanese culture. At some point, I realised that many Japanese-English dictionaries weren’t very accurate4, so I switched to 謎解き単語検索beta for pattern-matching, Weblio for looking up definitions, and Japanese websites for factchecking.

The cluephrase was also constructed by hand using a kana table. The old cluephrase was “答えは機械”, but that had a lot of issues. I was pretty lucky to have stumbled across the current cluephrase after only 10 minutes of searching, since I don’t know any Japanese version of Nutrimatic.

The puzzle went through multiple drafts. The first draft featured straight definitions and a kana bank with 21 question marks. It was easier than expected. Testsolvers suggested rewriting the clues to be more indirect, but then I made the clues too hard, and the second testsolving group didn’t finish. I rewrote half of the clues, included more references to Japan, and conducted two more testsolves. Both were solved cleanly.

I also made many changes after testsolving (all of which were tested individually):

  • Removing all verbs and i-adjectives
  • Replacing some entries with clueable words5
  • Replacing 「電離層」 with 「断層」 to make the answers of all crossing entries two kanji
  • Rewriting most clues6

Overall, the goal is to make the puzzle more accessible to solvers who don’t speak Japanese. Most clues were written to be unambiguous. There were also many blank clues to give solvers a foothold. The puzzle was also tested on a group of solvers who didn’t know Japanese.

I started working on this puzzle in late January. After several refills, the grid was mostly completed in March. However, I made many minor edits throughout the year to make the puzzle more accessible, all the way until a week before the hunt. In total, I probably spent around 40 to 50 hours on this puzzle. The grid was refilled three times (once was due to an answer change), and almost every clue has been replaced.

During testsolve, testsolvers suggested wiki-editing as the fandom page lagged heavily. I’m uncomfortable with adding song data on Wikipedia, so I only updated the fandom page. Fortunately, Bandori wiki later migrated to Miraheze, and I happily replaced the link in the solution with the new site.

To this day, I still don’t know how this puzzle landed. There is always a split opinion on foreign language puzzles. Testsolvers solved the puzzle quickly, so I expected Stray Child to be on the easier side of Hyperbolic Space, but I also heard comments on how the puzzle crushed their teams in the hunt. This was also the most hinted puzzle in Hyperbolic Space.

I am still unsure if a Japanese crossword is the right approach. Perhaps having solvers discover MyGO!!!!! before the album would create a more interesting puzzle and make them more familiar with the band. Alternatively, a puzzle about kanji and ateji might be more thematic. I am still pretty happy with how this puzzle turned out. The puzzle has a good number of indirect clues referencing various aspects of Japanese culture. I also got better at writing crossword clues, and my Japanese skills have improved.

Here are some suggestions for those who want to write a Japanese crossword for a hunt:

  • If your entries are sparse, don’t add too many ambiguous clues.
  • Compound kanji words are harder to clue.
  • Fill-in-the-blank type clue is a good way to make pinned entries and clue difficult words.
  • Cross-check with Japanese dictionaries.

After the hunt, I showed the puzzle to my friend, who solved the puzzle with some hinting. Apparently, he owns “Mayoiuta”, but not “Michinoku”.

Also, if you have never heard of MyGO!!!!!, please listen to their songs or watch the anime. It’s like K-ON! but with more drama.

Hear Me Out / Goku

These are two different puzzles, but I grouped them together as they were written simultaneously. They were also the first puzzles I wrote for this hunt, so they weren’t as good as other puzzles in my opinion.

This pair of puzzles was inspired by the theme of the round (Fate’s Thread Casino). As the round is themed after gacha games, it only makes sense to have a banner themed after characters. It was also one of the earliest banners to be written.

The biggest inspiration was Thrifty/Thrifty from GPH2020. Some other inspirations include Hall of Mirrors from Teammate Hunt, and 各色人等 from CCBC13.

There were a couple of goals I had for the pair of puzzles:

  1. It should feel like a Gacha game.
  2. Solvers should be able to make progress with partial clues.
  3. The mechanics in the two puzzles should be distinct enough. (Anime trivia vs Wordplay)
  4. The character should be relevant in both puzzles in different ways. (Voice actor vs Hair colour)
  5. Franchise shouldn’t repeat.

I structured the puzzles around pairing cards to let solvers make progress when characters were being pulled. The dichotomy between anime trivia and wordplay was decided early, since I wanted to write a puzzle about word transformation. To make the characters more relevant in the transformation puzzle, I also came up with using hair colours to order the transformations.

In the very first version of the transformation puzzle, characters were paired with item cards, which were cards with only names. The transformation chain was constructed by ordering the hair colours of the characters in rainbow order. Also, the enumeration was given by the number of dots in the blurb. In the draft version, the item cards were removed, and the enumeration was indicated by the rating, similar to Thrifty/Thrifty.

Even though the voice actor puzzle has simpler mechanics, it was actually written after the transformation puzzle. The idea of using homophone pairs only came while I was working on the transformation puzzle. For the extraction, I considered indexing into the names of the characters. However, I didn’t want to deal with inconsistent romanisation of names across different sources. As a result, I decided to extract kanas from voice actor names, which spelt the answer phonetically. I also had an idea that involved identifying Arknights characters by their voice actors, but I completely forgot about it after the first draft.

After the first testsolve, Sushi and Benji provided many useful suggestions. They preferred the concept of “identify characters based on franchise and voice actor info”, which was one of the original ideas. I still didn’t want to deal with inconsistency in romanisation, so I decided that all mystery characters’ names would include no long vowels. They also suggested adding more transformations and cluing hair colours more strongly (big thanks to them for the “Super Saiyan” flavour). The blurbs also included a “skill name”, which was removed to prevent red herrings.

As the mechanics were in place, I named the puzzle pairs, and it went through more testsolving. One testsolve involved a gacha simulator that had a code-based unlock system to simulate the quest system in the gacha round. It was meant to be coupled with a spreadsheet, but it was never used in any testsolve.

Instruction sheet
One of the tabs in the sheet

This puzzle was much shorter than other puzzles in the round, so the NATO characters were added to make Hear Me Out slightly harder. I offered to rewrite the puzzle multiple times, but Benji decided that the puzzle was in a good state, so it stayed this way. It was probably a good thing since the round was already pretty difficult. An easier puzzle also means more teams will solve it, which is always appreciated.

Benji also suggested further simplifying the blurb to contain only the relevant clue, so all the extraneous info was removed from the blurb. This led to some pretty powerful cards:

And some pretty horrible cards:

The construction of this puzzle took much longer than expected. Including quests, there are 97 characters in this puzzle, all from different franchises. 56 of them belong to Goku, and 41 of them belong to Hear Me Out. I knew surprisingly little about anime, so I asked my friend to help me build a voice actor table (without telling him what it was for), and I picked some voice actors from the table. It had a lot of Uma Musume characters for some reason 🤔.

For Goku, the “Go Down” transformation, shamelessly taken from Huntinality, had very few good candidates. “NOSE -> MOUTH” used to be “CRUST -> MANTLE”.

Finding characters with specific hair colours was the more time-consuming part of constructing Goku. I relied on Moegirl most of the time, but I also checked out posts with “Top N Characters with X hair”. For each character, I checked their franchise’s wiki and rejected characters whose hair colour didn’t match the wiki description7. Photos were chosen to clearly show the hair colour of the characters8.

I also found this video after writing the puzzle, which might have helped with finding characters. Oh well.

There was some flexibility in choosing characters, so I could still include specific ones in the puzzle. I tried to balance the number of waifus and husbandos. I also include several specific characters for various reasons.

Some were chosen for the “wow-factor”.

Source

Some were added for being look-alikes9.

Source
Source

And some were just personal preferences.10

Source

Amusingly, in a discussion in November, Nathan independently came up with the idea of a voice actor puzzle. He commented that people kept writing “puzzle about anime characters that share the same voice actor”, all without knowing the existence of Hear Me Out11.

I dug through the MITMH Puzzle Index and found a surprisingly small number of puzzles related to anime. From my experience, anime puzzles are rare outside GPH and Chinese hunts, since they are only a small part of the Japanese media12. Even if there’s one, they were usually themed around a particular series. There were only three puzzles about voice actors in past mystery hunts, two of which weren’t about anime.

I think this shows how easy it is to come up with this idea, but also, just because an idea is obvious or readily available, it doesn’t mean that there will be a lot of puzzles about it.

There are still many rooms for improvement. The franchise was useless for Goku. A testsolving group also managed to solve Goku without using the hair colours, so the anime characters were arguably optional for the puzzle. If I had more time, I would probably rewrite both puzzles. Nonetheless, I learnt more about anime in writing this puzzle, and I hope someone enjoyed pulling waifus and husbandos during the hunt.

Layers

This section includes every puzzle in the Layers series.

Out of all puzzles I have written for the hunt, this is probably the puzzle I’m most happy with.

The original name of the puzzle was “Layered Architecture”. I got this idea after checking out unclaimed answers and saw that one of the puzzles required having the word “Architecture” in the title. I sent a prototype to Dan.

Prototype

Dan gave me the green light, and I made a draft of the puzzle. The first draft was too difficult, so it got moved to the Terminus round, and the title was changed to prevent red herrings.

This puzzle was inspired by a lot of things, such as Japanese nazos, 无字天书 from CCBC14, letter webs in R.T.3 SEARCH and various “Guess the characters from colour” puzzles.

I started working on this puzzle in July. The presentation underwent drastic changes throughout the year.

First version: Single page. Clicking on the grey layers will show different images.
Second version: Single page. Puzzles were ordered by regions, with their themes indicated by their borders and colours, something preserved in the final version. The layout is similar to riddle search, with letters in the extraction diagram slowly revealed as more puzzles are solved.
Third version: Multiple minipuzzles. Each minipuzzle has a specific theme. Solvers can enter text on the site directly. Cells with shared numbers are populated automatically. Extraction is unlocked by solving all blanks.
Final version

The original answer for this puzzle was CYCLOTRON , which worked well with the puzzle as it can be separated into layers. However, the puzzle was moved to the Terminus round, so I had to change the presentation to fit the round structure and build a metapuzzle. I am glad I made the change, since the new layout is a massive improvement over the old layout.

The idea for Colored, Rounded, and Bordered came relatively early. Bowled also came somewhat early, but Trapezoidal was a late addition to the puzzle after I was told that I needed to write five puzzles. One set I wish I could have included was “Geologic time scale”, but it didn’t vibe with the rest of the data sets.

The metapuzzle is inspired by the original title, “Layered Architecture”. Both of them are related to computers, so I thought it was a pretty nice meta to wrap everything up. The connection wasn’t as obvious now that the name has changed, but I still think it’s a decent thematic meta for this zone.

I tried to follow these ideas while constructing the puzzle:

  • Minimal text: As the abstract diagrams contain no text, I want the puzzle to be similar and contain a minimal amount of text. Instructions are told through visual cues and abstract representations.
  • Iterate on mechanics: it is common to see puzzle games iterate on an idea by exploring variations or upgrades. I also enjoyed sequences in Riddle Search and Teammate Hunt 2025. While building this puzzle, I want to explore the possibilities of layered diagrams by representing things as layers in various ways. I also wrote puzzles that combined multiple of these ideas, but they didn’t fit the new structure, so they were removed from the puzzle.

In a puzzle hunt, numbered cells typically represent indices. However, they can also indicate shared symbols, commonly seen in Japanese nazos. These kinds of shared cells also appeared in puzzles like 无字天书, 万古大魔法书 (a puzzle from P&KU2 I really enjoyed), and letter webs in Riddle Search.

I think the shared cells system has a lot of potential:

  • It is very free-form and flexible in structure, but still ties different parts of a puzzle together and feels cohesive.
  • Solvers can complete the puzzle with a very minimal amount of clues since the shared cells gradually reveal more information to the solvers.
  • There isn’t one fixed solve path, and solvers are free to tackle different parts of the puzzle, or even shortcut them.
  • Solving different parts of the puzzle brings a sense of accomplishment similar to completing an area in a puzzle game.

One thing to note is whether the puzzle is solvable with the information a solver has. In earlier testsolves, I didn’t run through the puzzle from the solver’s perspective. Testsolvers commented that everything felt disconnected as there were not enough connections between the puzzles, which made working through it a slog. Later, I added more connections and ran through the puzzles myself to ensure it was solvable from the ground up. I might have added too many connections as one testsolving group ripped through the puzzle in an hour, but I think this is better than having not enough.

Interactivity is also necessary when there are many cells. In earlier testsolves with non-interactive diagrams, testsolvers commented that transcribing the letter was a lot of work. I added interactivity in later versions, along with features that streamline the process of entering the answers. I also wanted to add team-wide synchronisation, but the dev team told me that our server might not be able to handle it, so it got dropped.

I think there are a lot of interesting ideas from Japanese nazos and Chinese hunts that can be adopted for Western hunt puzzles, and I would definitely like to see similar puzzles in future hunts.

Funny stories

During the round testsolve, we found that the “Layers” puzzles were completely broken due to a bug in the code. Fortunately, I also worked on the interactive system for the puzzles in a different site, so Dan could link the testsolvers to the site that contained all the puzzles. I was really lazy in naming the puzzles, so they were appropriately named 1.html, 2.html, 3.html, 4.html, and 5.html. This led to the following comment by Dan:

Unused puzzles

Many puzzles didn’t make it to the final version of the puzzle due to various reasons. Here are some of my favourites.

Please treat the rounded, bordered box the same as the bowl, but with the layer order reversed.

Thoughts

First off, I want to thank the entire Cardinality team again for pulling off such a great hunt. Words cannot describe how thankful I am to be able to take part in this crazy adventure. Thank you to the editor team, the dev team, and the art team for guiding my creative processes to completion. I met many awesome people while I was in the US. It was an awesome journey, and I look forward to meeting Cardinality members again in the future.

As a ballpark figure, I probably spent around 400-500 hours on writing the hunt, which sounded like a lot but averaged out to only 1-2 hours per day. Yet, it felt like the hunt had already taken up more than half of my spare time. I can’t imagine what life was like for the people in the exec team who worked for over 2500 hours. Now I know why teams that worked on the hunt said that they needed a break. I think we all deserve a long break after the hunt.

It is hard to imagine that every year, a team of people would sink tens of thousands of hours into such a big event, for free. This wouldn’t be possible without a big team. Oftentimes, I feel bad for not doing enough for hunts, but I think that’s the point of being in a team: we collaborate to create something bigger. You know that even if you couldn’t devote everything to the hunt, your teammates still have your back. You have teammates, so you don’t have to burn yourself out.

A few years ago, I started writing puzzles for my friends, but they weren’t very good. Thanks to the Mystery Hunt, I had the opportunity to experience the full process of writing a puzzle from start to finish. The editors and testsolvers provided me with a lot of useful suggestions, which helped me improve at writing puzzles. Watching people solve my puzzle is just as exciting for me as solving puzzles written by others. I also enjoyed reading all the comments, feedbacks, and reaction from the solvers.

My puzzle writing skills got better in the process. I still think they aren’t as good as those of other members. Many puzzles written by others were highly rated. In contrast, the fun ratings of my puzzles tend to be on the lower side (but still better than my old puzzles). I know that ratings are not a decisive indicator of whether a puzzle is good or not. However, there is still one thing that stands: writing a good puzzle is hard.

I think it is easy to write a puzzle on any particular topic. On the other hand, it is hard to write a puzzle incorporating the topic in a way that feels fun.

I read a presentation on some advice on writing a puzzle. The slide on “whether a puzzle should be written” caused me to change my mindset from “how do I write puzzles that are novel yet challenging” to “how do I write a puzzle that is fun to solve”. This mindset prompted me to make several of my puzzles easier, exchanging difficulty for more fun-ness.

Making a puzzle both fun and difficult is hard. Given some structure, I think there is an upper-bound difficulty before the puzzle steps into the “unfun” category.

Building a fun but difficult puzzle is hard: solvers get frustrated if they get stuck for too long. However, there is a difference between a puzzle’s inherent difficulty and obfuscation. David Wilson makes this distinction in his document on writing good hunt puzzles. Obfuscation is the thing that makes a puzzle unfun.

Puzzles have an inherent difficulty. For example, a word search is easier than a cryptic clue (to most people) because the latter requires more lateral thinking. We can make the word search harder by using a larger grid or adding more words to find. However, at some point, your solvers will start thinking “this is a massive slog”. In the case of a cryptic crossword, it might be through writing harder clues, but at some point, your solvers will go “the clues are impenetrable”. All of these are obfuscation techniques that make a puzzle harder but unfun.

To make a puzzle harder but still fun, you need to increase its inherent difficulty, perhaps by changing the core mechanics of the puzzle or adding thematically related layers. Book of Fixed Star is a word search, but the use of Arabic and an extra thematic layer make a fun, difficult, and beautifully constructed puzzle.

Here is another pair of examples of inherent difficulty vs obfuscation from the hunt: The Puzzle That Cannot Be Named is difficult due to the inherent difficulty of its clues. The Alphabet’s second half is difficult as there are too many plausible ways of parsing the string. (In a post-hunt discussion, the authors lamented not nerfing the meta.)

I think that’s why we have the wisdom “don’t edit a puzzle to make it harder”. I don’t think it’s always true (e.g. when a puzzle is too easy), but generally, adding obfuscation to a puzzle is bad.

Spoilers for Stray Child

The first testsolve of Stray Child went well. After the testsolve, I made the clues harder, and the second testsolve went horribly as the clues were too vague (a form of obfuscation). Here are some examples:

  • 19A: Reason for unemployment (3)
  • 38A: 2026 (3)
  • 7D: It can be one or two letters long (6)
  • 32D: It might eat 40D (2)
  • 40D: It might be eaten by 32D (3)

Japanese has a ridiculous amount of homophones, and only half of the cells were checked in this crossword, so the vague clues didn’t help at all. The testsolvers gave up at the 4-hour mark. The grid was only about 80% complete, and they never got to the main a-ha.

Given the structure of the crossword: half-checked & foreign language & rebus cells, you can’t make the clues in this crossword too hard. Beyond this, the puzzle steps into the “unfun” category. The last thing I want is for solvers to get stuck at a junction that wasn’t supposed to be difficult.

I think estimating inherent difficulty and spotting obfuscations are two of the reasons why we do testsolving. Without testing, it is easy to miscalibrate your puzzles and end with something unfun.

There are probably puzzle writers out there who want to write difficult puzzles. I don’t think purposefully writing difficult puzzles will help with writing one that is also fun to solve. The better approach is to listen to the puzzle and let it decide its inherent difficulty. Then, do testsolves to calibrate its difficulty and remove obfuscation. If the puzzle said “I am all good, please don’t buff me”, then leave it as is.

Overall, a good puzzle is hard to build, and that takes time and experience. I noticed that I got better at writing crossword clues13, and my puzzles seem to be improving as well. That’s one of the things I’m really happy with while writing this hunt.

Writing the hunt also gave me a chance to express my inner self. The stuff I created represents a part of who I am. My interests influenced what I made, and my life experiences shaped all the tiny details within those pieces. Even if someone had the same idea as me, the outcome would be very different depending on that person’s life experience. All of my puzzles are based on experience I had14. I’d also be very happy to write a rhythm game puzzle, but that didn’t happen.

As a mental exercise, I pictured what would happen if I didn’t work on the Mystery Hunt. I don’t think a lot will change. The biggest change was probably the banner arts, which struck me in particular: someone else on the team would happily take my spot and draw every banner art, probably better than mine. However, the overall presentation would be completely different, with that person’s experience sprinkled all over the banner art rather than mine.

The fact that your creation always channels a bit of your thought was heart-warming. I remembered seeing a post about an artist who consistently used orange-purple gradients as the background for all their comic strips. At first, they were confused by their palette choice, but everything made sense after they saw photos from their birthplace: the sky they grew up with had this tint of orange and purple.

Finally, here are some random thoughts I have no idea how to fit into this blog, so I’m just listing them here:

  • I testsolved and liked these puzzles: Central Precinct & Lockup, Setting Boundaries, Hyperbolic Space, Dance of the Bumblebee, The Puzzle That Cannot Be Named, Easy As 1-22-333, Charts.
  • I testsolved an old version of Dance of the Bumblebee. The “📜” level had no examples but I somehow managed to solve the level. I am really proud of that.
  • Tipping sucks. Taxes also suck.
  • Benji likes the 6-7 gesture. He kept making 6-7 jokes.
  • The 6-7 brainrot in the US is more problematic than I thought.

Conclusion

With a hunt as large as the mystery hunt, I was inclined to think that I was obliged to do tons of work for the hunt. In reality, the hunt would still happen even if I write fewer puzzles, or if I don’t work on the art for Fate’s Thread Casino.

However, I enjoyed my time working with dev, art, and puzzle editors. I enjoyed writing puzzles. I enjoyed drawing the banner art. And I enjoyed interacting with other Cardinality members in person. I still haven’t had a chance to write a puzzle with someone else (besides Jumping to Conclusions), so I still hope to do that in the future.

I think we all need a break after this wild ride. After the break, I am excited to solve more puzzles and write more hunts.


  1. Before naming the actual keeper, my head canon name for the keeper was “Fate”, for some odd reason. ↩︎

  2. Looking back, Sora was my favourite name when I was around 10 years old. I still have a soft spot for it. Even though it has a different connotation now due to generative AIs, I stand by: it’s a good name.15 ↩︎

  3. Her hairstyle is a mashup of Yui Hirasawa and Ikuyo Kita, and her outfit is what I wear regularly. ↩︎

  4. Some websites also seem to be clones of one another. ↩︎

  5. I had to replace one of the entries post-hunt because it is a derogatory term according to the Japanese Wikipedia. I blame Jisho (and myself for not doing enough research). ↩︎

  6. The clue for 「たかび」used to be “Hilt of a sword (archaic)”. I blame Jisho. ↩︎

  7. Anime hair colour is a big mess! This was especially problematic with orange/red/brown hair. I couldn’t use Kumiko Oumae as her hair colour was auburn, not brown, according to the wiki. ↩︎

  8. One dilemma I had was not including a colourblind-friendly tool in this puzzle, since that would give away the biggest a-ha. That was why I had to check the wiki and ensure that the hair colour info was accurate. ↩︎

  9. Pixivpedia has a page on Rize Tedeza and Aya Komichi. ↩︎

  10. Here are more drawings. In episode 9 of Yuru Camp season 3, Rin Shima talked with a camper voiced by Saku Mizuno, who also voiced Ryo Yamada. ↩︎

  11. To be fair, the discussion touched on weeb at some point. ↩︎

  12. Example of non-anime Japanese media puzzles includes Virtual Family, Bullet Curtain, 后现代文化自信 and 单色唱片. Virtual Family is also one of my favourite puzzles in GPH2020. ↩︎

  13. I am particularly happy with the clues about GCOM-C and Cindy Stone in Stray Child, something that took a lot of googling to construct. ↩︎

  14. I want to convince myself that I am not into anime, but the fact that I wrote every anime puzzle in this hunt suggests otherwise. ↩︎

  15. This is a copypasta from the Cardinality server. The original text was: Looking back, 67 was my favorite number when I was around 10 years old. I still have a soft spot for it. Even though it has a different connotation now, I stand by: it's a good number. ↩︎

留言