This interview is part of our Road to the IGF series. You can find the rest by clicking here.
Patrick's Parabox is a puzzle game of exploring recursion and infinity, having players move boxes into other boxes that also contain a full reality within them.
Gamasutra spoke with Patrick Traynor, deveopler of the Excellence in Design-nominated title, to talk about the challenges that come from creating puzzles built around infinity, the unintended consequences that have to be programmed for when exploring this concept, and the joy that can be found in seeing what these intricate mechanics and logics can do when taken to their conclusions.
Hi, I'm Patrick! I'm the sole developer of Patrick's Parabox, at least so far. So, I've done the programming, game design, puzzle design, art, audio, and stuff. I'd call programming my main skill. So far it's just me making the game, but I may bring on a musician and/or artist at some point.
I've been making games as a hobby for a long time. Mostly pretty small games, and many of them are platformers, puzzle games, or both. I've participated in a variety of niche online gamemaking and modding communities, which each have their own compelling hyper-focused design space. The main community I'm in is the I Wanna Be The Guy (IWBTG) fangame community, which makes these charming, weird, raw games based around a precise set of physics and mechanics.
I've participated a lot here and hosted a few collaborations and contests. One fangame a few friends and I made, I wanna Run the Marathon, was featured in the speedruning marathon AGDQ 2018. I've done a bunch of game jams, and in 2014 my puzzle game Clockwork Cat won 2nd place in Ludum Dare 27. I also enjoy programming gamedev-related tools, and get satisfaction when they help others.
My other main project alongside Parabox is sort of like this, actually. I Wanna Maker, which is being made by our team and not just me, is a robust level editor and online level sharing game for IWBTG fangames inspired by Super Mario Maker. Patrick's Parabox will be my first commercial game.
Concept of boxes upon boxes in boxes
I owe a lot to my school's (UC San Diego) student-run game dev club. My friends in the club and I were making a sokoban-like (a block-pushing puzzle game) with stealth elements like patrolling robots. As a spin-off idea of that, I thought of a 2 player co-op mechanic where one player would push the blocks as normal, and the other player was shrunken-down and could sneak around inside of the walls and blocks. I prototyped this, and it was cool, but I lost interest or got distracted for some reason. About 4 years later, on a whim, I decided to pick it up again in order to have something cool to show off at a club meeting. And because I thought it'd be a cool programming challenge to make the system support not just 2 layers, but 3, 4, or any number of layers.
It ended up being a fun system, so I kept developing it. One night I had a breakthrough - allow the players to shrink and grow to switch between the layers! And later, another breakthrough - one of my friends in the club showed me the game Sokosoko by juner, which has the recursive "box containing itself" idea, so I implemented a slightly modified version of that! So, that's the story of the core concepts, and from there I kept on exploring, developing, and refining the system. It feels pretty serendipitous how all these pieces came together [laughs].
On the tools used to create Patrick's Parabox
It's made in Unity. I like Unity, but it was a pretty arbitrary tool choice when making the initial prototype. The game could also have been made using many other tools, each with their own pros/cons.
The challenges of recursive systems
Programming these recursive kind of things was very challenging, but also the most fun programming I've ever done! In general, the recursive nature of the system made the programming more difficult to reason about, and required unique approaches. I had to re-do the game's core logic system, and rendering system each multiple times as I learned more consequences of the core mechanics, so that was tough. And there are TONS of edge cases to account for.
It was challenging but fun deciding how certain parts of the system should behave. For example, consider what happens if a box contains not just itself, but 2 copies of itself. What happens when you exit one of the 2 "copies"? There's a lot of options for how the system could behave! (And I encourage you to think about them, it's fun!) I had to come up with and weigh ideas, considering ramifications in terms of puzzle design, programming, visuals, and overall cohesion / elegance.
On designing the puzzles of Patrick's Parabox
As I was exploring and programming the system, it happened to lend itself well to a traditional puzzle game format. That is, a bunch small scenarios, each presenting an interesting concept I had discovered, or building on a previous concept. So, I kept going with that because it felt right. In terms of making individual puzzles, it's not that much different than other puzzle games, except perhaps that the system is harder to wrap my head around [laughs]. There's still the general flow of exploring the system and then distilling discoveries into puzzles.
I'm heavily following in the footsteps of a lot of puzzle games which do a great job with puzzle design. Here are a few strategies that applied well to this game: In Stephen's Sausage Roll, pretty much each and every puzzle introduces some kind of new concept - no uninteresting rehashing. In The Witness, there are often short sequences of panel puzzles which focus on an idea and have a great flow of teaching and learning within these small groups. There's tons more puzzle games I'm inspired by; just being exposed to a lot of approaches and analyzing them has certainly given me a lot more to draw from when making puzzles myself.
Working to keep players from getting too confused
I haven't worried too much about this, but the main thing here was playtesting. Very early, when friends played the game, there weren't many introductory puzzles and the difficulty curve was way too steep, so people got lost with the harder recursion concepts. As I made more puzzles and did more playtesting, the flow gradually became smoother. When a few people had a hard time with a certain level or concept, I thought about why, and often added in more levels to solidify or reframe the concept. And, of course, sometimes I tweaked the level, made it optional, or removed it.
As usual with puzzle games, as the author you're biased with knowledge and familiarity with the system, and the same goes for this game. Sometimes, a puzzle that would seem totally redundant to me actually ends up being interesting to people playing, or sometimes even just as a visual spectacle.
Creating visuals for complex block puzzles
The current visual design is sort of programmer art but with a bunch of iteration. I've tried a bunch of stuff such as rounded corners, different block outlines, block glow, different wall designs, different colors, squishing animations, particles, and even player faces [laughs]. Lots of incremental improvements. I became fond of the abstract flat color look - it felt like it matched the abstract nature of the gameplay - so I kept it.
On a favorite design element of the game
It's really hard to pick just one! I think I'll pick the smooth animation when the player and boxes shrink/grow when entering/exiting boxes. Technically, that animation doesn't need to exist - the player and camera could just instantly snap to their new positions. This isn't uncommon in grid-based puzzle games, and it feels quite responsive. So, that's how I initially coded it - just snap to the new position, and also with a small squish in place at that new position for juiciness.
Then, someone chatting in my Twitch dev stream suggested a smooth shrink and grow animation (By the way, I've gotten lots of great ideas from my Twitch viewers that I've implemented into the game - thank you! And for developers - would recommend streaming!). In the past, I had dismissed the idea as too hard to program, but I decided to tackle it. It was a nightmare. A complicated algorithm that was hard to spatially visualize, and with tons of edge cases such as depth sorting of moving blocks, making transformations stack together properly, and interactions with various recursive mechanics. But in the end, I accomplished it, and it really adds a lot to the game. It's a visual spectacle by itself, but also makes it easier to understand the core system and generally increases your appreciation of it.
Also, as an aside, I've thought a bit about a dichotomy between two parts of the game. The core of the game is a sort of mathematical system of recursive blocks that just inherently exists in the universe. And then everything else around that is the "presentation", which includes things like the visuals, the audio, the puzzles and how they teach, certain decisions about how edge cases should be resolved, and picking which areas of the system to focus on. I can't take credit for the core system, but I am proud of much of the presentation that I've worked on.
Creating a system to discover within
I've loved puzzle games for a long time, so I feel part of it is just in my nature or something. So I guess, what keeps me here currently is this feeling that many puzzle games are doing some kind of pure, mathematical-esque exploration of some little corner of the universe. And that feels important to me. A lot of games have gripped me this way; but to name a few: Stephen's Sausage Roll, The Witness, Snakebird, and Baba Is You. In these games, the "meat" of the game is exploring, making discoveries in, and mastering an elegant system. When playing these games, I feel a sense of awe, and a sense of grasping at some corner of truth of the universe. I feel these games are doing something special and important.
For Patrick's Parabox, being attuned to these games has helped me in general from the initial brainstorming and exploration, to the "meat" of puzzle design, to the details of the presentation. This stuff has also shaped how I think about the goal of the game in general: the goal is to showcase the system and all its cool intricacies. And to let people have the same discoveries and joy that I had when exploring it myself. To transfer over that knowledge and that process. Phew, that got a little conceptual [laughs]. I'm very happy to be making this game!
This game, an IGF 2020 honoree, is featured as part of the Independent Games Festival ceremony, which will be free to stream virtually starting at 5pm PT (8pm ET) Wednesday, March 18 on GDC’s Twitch channel.