How I made Circadia
A little over a year ago I had this idea to make a game that was all about throwing stones into still water and creating ripples. It was something I thought about for a while and shelved it away to work on much other pressing matters. Game ideas tend to be a lot like Pandora's box anyway, in that you think it's simple, then you invest about 10 minutes actually coding it and you find some fatal flaw that would take you weeks to figure out. At least that's been my experience with it more times then not. So as fast as I thought about the idea, I just as quickly shelved it in that place where many of my game ideas go, most to never see the light of day, and some time weeks later, be forgotten.
I was in my second year at Parsons working toward my MFA in Design and Technology. Specifically, I was in the Fall semster of whatever Zach Lieberman was teaching. I don't mean to say that without respect, actually the contrary, I was going to take anything Zach Lieberman was teaching. His class, whatever the topic, was pretty much on my bucket list at Parsons. The class was about Algorithms in code and we used openframeworks to build these awesome particle systems and experiment with them. His salutation for each homework was that it was an opportunity for greatness. "Greatness" took on a different meaning then he intended. My level of greatness was finishing all the homeworks and trying to digest everything we were learning. Nevertheless, it was quite a bar to set, and in my opinion, many of my classmates achieved it.
Zach was always showing us the work of people who had created breathtaking expressions and encouraged us to express ourselves in our work. It was in one particular class that he exposed me to the works of John Whitney. It truly inspired me. I immediately fell in love with everything he did, particularly Catalog. The simplicity of individual shapes that create unexpected patterns through predetermined motions. It's sublime. Sine patterns, shapers, circular movement. It all comes together to create breathtaking landscapes. He did so much with seemingly so little.
Of course, the assignment for that week was for us to mine in that same vein. To learn his technique through imitation and ultimately inspire a new creation. I completed the assignments. It was a difficult assignment because the technique requires mastery, but I learned just how these simple patterns can create fascinating visual displays. Even my simple sketches had a small sense of wonder; simple patterns seemingly lost in chaos contributing to a much larger meaning. By the end, I had my fill of sine patterns and circle animations and "offest each n by x" moments. I hadn't made anything I was particularly proud of, but I had learned the technique. I wasn't aware of it then, but that had a huge impact on me.
Fast forward to finals. In a stroke of luck, our final assignment in Zach Lieberman's class was to make something awesome using all the things we'd learned throughout the semester. There were no rules, just make something. We had to present it to him and he had to approve of it as a best use of what we learned. I decided to make the game I filed away. Zach saw it, and although much more basic in implementation than what other students were doing, he agreed.
It was a total throw away really, as you can see from the video above. I thought it was interesting, made a few levels, presented it to the class and pretty much walked away. I ended up receiving an IGF nomination for Halcyon with Zach Gage that year, so off I went to San Fransisco. While I was there I happened to show it to a few people and they thought it was really awesome. The response was super. Everyone told me I had to make it. It was really great to hear so much positive feedback, although, in truth, I don't think I was still convinced of it yet. I thought it was neat idea, but where do you go with it? After all, it's just some buttons and a dot.
While I was out there I ended up playing Bit Trip Beat and saw some of the most amazing level design ever. It blew my mind. Every level opened up more and more possibilities. Each time you thought they showed you everything they had, they would go and flip the whole game upside down and give you something completely different. It's when I really fell in love with level design. I had done it before, and I really liked the challenge, but seeing what level design could do with such a simple mechanic was instantly obsessive. I had to try it. I had to make something that showed just how simple fun can be. I was instantly convinced; you can make a whole game based on level design. One mechanic, many many many different levels.
After IGF, I had to put Circadia off so I could focus on other things, mainly thesis and Twirdie. It wasn't until late summer of 2011 or so when I really started to figure out what I wanted to work on in my new company, Simple Machine. I had other prototypes, but Circadia was the obvious choice. It was tried and true. Simple. I was super familiar with it, and it seemed to be very accessible to players. Almost like, "let me get this small tiny thing done so I can get it off my plate."
When I started to work on it, I was not convinced that the game should look as it does now. The black background with the simple colored buttons. Sure it was obviously influenced by the work I had seen of John Whitney, but no way. It's so far outside of my element, it makes me uncomfortable. Aren't games supposed to have bling and rewards and shiny adorable "adopt me now" eyes? So I tried a bunch of that. I went so far as to make the entire theme of the game about cheering up a sad face ... I'm actually not kidding. The white dot (goal) was a sad face, and all the other buttons were happy faces. Your job was still to make all the circles converge on the goal (the sad face) but now, your objective was to cheer up the sad face. So once you beat the level the sad face turns happy. I thought about calling it "Good Vibrations" or something.
The face you're making right now is the face I made when I tried it. I've never hated something I made as much as I hated that. I don't even think I took a screen shot of it. It was trash. Complete crap. Everyone I showed it to hated it. I hated it. It was trite, pathetic, and overdone.
I took a few weeks away from it. When I returned to it, I figured I'd make it more simple and returned to the black background. I still thought that there could be more to do with it though, so I added different modes and rethemed it again. This time as space. I redubbed it as "Big Bang". The theme here was that if the colors were stars that were bursting and converged on the goal, it would cause a big bang? I don't know. It's kind of an interesting idea. There was a puzzle mode, which was everything it is now. I added a challenge mode where you had a level, but the goal changed each time you collected it. The new goal would be placed randomly and you had a timer to collect as many of the white dots as possible. I liked it, but no one else did. I even added this glamourous menu where there were circles blasting all over the place. I was going to put in Game Center leaderboards.
It was ... better, but still it was just way too much. I like to assume my games have their own distinct personalities, and this one was just looking at me awkwardly, like it was sick or had been sitting in an uncomfortable chair for far too long.
Taking a nod from Halcyon I started to recognize a pattern with minimalist games. Don't make them complicated. Don't make them what they're not. Just make them the way they want to be made. Don't try to dress them up, or compensate for their simplicity. Instead, put the simplicity on display. Celebrate it. So I tossed out the modes, even threw out the menu, I figured I would just make 100 puzzles and that's it. You open the game and try to beat the puzzle you're on. No points, no timers, no menu, nothing else.
There's this very strange thing that happens when you dress up a simple game too much. It just doesn't work. It changes the player's expectations about the role of the mechanic and then they are disappointed when they realize that it's not more extrinsically rewarding. Like, there should be more stuff, and there should be a story, and there should be a market, and there should be boss levels. The mechanic is so simple that it's elegance is lost. Players are distracted from the fact that the mechanic is meant to be intrinsically rewarding. So, I scrapped the theme and all the bells and whistles and then ditched it for a while longer.
When I returned I also decided to throw out all the previous code I had written. Rewrites are a major part of the creative process. You throw out all the old issues you had, all the small insecurities about the code and you start fresh. The code was already a year old at this point and I had learned so much about code in that time, especially after coding Scoundrel, which was submitted to the IGF. I rewrote Circadia in about a day on a train home at Christmas. It was a huge breakthrough. Previously I was worried about how to just get multiple goals in, how to fix the goal checking for the game and optimize it so that it would be able to check for moving goals as well. This time, I really thought about what I wanted to do with the goals so I could make really interesting puzzles. Before I got any where though, I had to resolve one thing. One tiny little problem.
How to draw circles.
Enter the most graphically challenging issue I had making Circadia, how do you draw increasingly enlarging circles that have no fill and are visually smooth and not pixelated. You can't scale an image because it will mess up the thickness of the line as it grows and you can't draw it in basic openFrameworks because the edges of the lines aren't smooth (you can actually see the pixels moving). Luckily Zach Gage and Ramsey Nasser had made an incredibly simple batch render. This way, I could draw the circles as a system of particles. The particles would use a smooth circular sprite that I made in photoshop. It looked great and was super smooth. It also wasn't a viable option. I was drawing circles that required 1000 particles each to ensure that even at their largest size the circle looked like a single circle and not a bunch of particles. Yeah, drawing up to 4000 particles at one time, updating their position, and goal checking ... that's not going to happen.
I was stuck with it though, until Zach added an amazing feature to the batch renderer to draw lines with texture painting. Once I had that in, it took some work to make the sprite just right. After that, the game looked beautiful. Absolutely stunning. The circles were smooth and crisp.
Right around the same time, Ramsey and I were out at dinner and I was discussing with him how I was attempting to solve the issue of collision/goal detection in Circadia. Previously I was using a specific particle to check if it was touching the goal. A few issues here. One is, that it only works if the goal is stationary. Additionally, doing goal checking on a particle is a bad idea. Especially when I was now drawing an actual circle through the new batch renderer. Ramsey started to tell me that I could probably just check the radius of the circle compared to the distance from the button to the goal.
That's pretty much what it would be. This is why I love making games. Awesome amazing problems to solve, and only you can find the solutions, or in this case, a friend who happens to be a computer science engineer.
So that went in to the game and it worked perfectly. It even works with multiple goals and buttons. A very simple and very elegant solution. The best kind of solution
That was one of the final technical issues that needed to be resolved. After that, it was time to focus on level design.
That meant starting with the tutorial. Originally, I didn't want to put any instructions in the game. That was a decision I wasn't willing to compromise on. Circadia is about discovery in a way. Not in an "explore this map" kind of way. More of like a chemistry way. You're trying things out to see what works. You're tinkering. You run mini experiments on the game. "If this one is slower than that one, then I should press the other one first." Constant theorizing and testing. In that sense, I really wanted the first experience with the game to be something that you discover. The game never tells you what to do, you figure it out on your own. From then on, the game builds on that notion, and hopefully players will continue with the game even when it's difficult because they remember how they were able to discover the answers previously. The tutorial, then, is all about designing levels that encourage that kind of thought. This is beautiful when it works, but I have learned how extremely fragile relationship is.
Of course, if you've played Circadia, you know that the tutorial is actually very explicit. The first 5 levels of the game tell you everything you need to know to play the game. Well, this goes to show the merits of gorilla-style playtesting. I sat in a Starbucks a few days before submitting the game to Apple. I sat next to a business gent. He looked important and impatient. When he took out his earphones, I asked him kindly for a bit of his time to try "this game that I have been working on." He huffed a bit, looked past me as if to see if there was some quick out he could find to get away, but he eventually accepted. I promised him it would be a very short test. I just wanted to see if he would/could figure it out.
I started the game and he stared blankly at the title screen.
I broke the first rule of playtesting and told him the game had started and that he could begin. He impatiently tapped until he hit the first button that clears the title screen. He looked at me a little irate, like, "are you kidding me guy?" The next level has no information on it. He tapped all over the place, each tap a deafening validation of my mistaken design, eventually hitting a button. While the circle creeps along the screen he insists on swiping and touching in all manners. He lookup at me visibly agitated. I urged him that this was extremely helpful, and to go a few levels further, just so I could see if he could "get it", mainly the first two button level, level 5. this already felt like an eternity.
When he finally arrived at said level, he erratically tapped around. The buttons, the goal, the level number. He finally looked up at me and said, "Sorry, my hearts just not in it."
Defeat. That's a super heartbreaking moment, but so very needed.
This decision that I was unwilling to compromise just steamrolled me. The days of the silent non-explicit handholding tutorial were over. Time to tell people what to do. I thought about it, and it's the right thing to do. I realized, through so many playtests, that when people played, they were missing most of the game. Kinda like "Bad D&D DM Syndrome", I was asking players to read my mind. "Oh, you don't know what I was thinking? Then too bad for you, you can't play."
While I sat there in the Starbucks it kinda all came together. I remembered that throughout all the playtests people would ask, "Are there different speeds for different colors?" That would be something that you need to know to play the game because it could or could not be true unless I tell them. They would have to play, oh, 10, maybe 15 levels, before that would be apparent, and even then, probably only apparent to those who were really really engaged. So what then? People play a game where most of the information seems arbitrary and random for the first 15 levels? That's bad design on my part. And for what, so I can maintain a strict no tutorial mandate?
That day I learned not to be a Captain Ahab.
The game is so abstract it's going to need some direction in the beginning. I think I was fearing that with an explicit tutorial the simplicity of the mechanic would seem contrived. Like, oh, now that you tell it to me, it's boring. It was more exciting when you didn't tell me anything. You know? Like how they say people prefer to see people clothed rather than naked because they can be more imaginative. Yes, I did just compare tutorial design to hot naked people.
Alas, the first five levels technically aren't puzzles anyway so no love lost, and, if it means that people can get to the puzzles that will blow them away and they feel like they have more information on how to solve the puzzle, then good for me and good for them.
So in short, the tutorial now tells you exactly what to do. It hand holds you and takes you from start to finish. Hopefully the pros outweigh the cons :)
Next was designing levels for Circada. One of the most challenging things I've done making a game. There is essentially nothing to the game. Think about it. Nothing changes about the mechanic. There are no power ups. There are no enemies. There are no platforms, characters, anything.
Yeah, this ain't Angry Birds.
I have 13 buttons of scaling speeds. White dots for goals. That's it.
Time to make 100 levels. Ha!
As I mentioned earlier, Bit Trip Beat was a huge inspiration for taking on this game as a level design challenge.
The first 30 were pretty easy to build. It shows that the simplicity of even 2 buttons and a single non-moving goal has many possibilities. Even from the beginning though, I maintained a strict philosophy. The process of level design here was making a level, then assuming that that level cannot be made again. I can only use that level if I significantly iterate on the previous level to build the experience. The result brought me to deeper and deeper realizations about the way these simple circles could interact with each other. Eventually though, there were only so many things that could be done. That's when I started making levels with moving goals and multiple goals.
These levels were exponentially harder to craft simply by the nature of the movements. Buttons had to be aligned correctly, the level had to be visually appealing, and above all, they had to have a sense of scale. A player had to have the feeling that they were progressing to harder levels. I refused to allow the definition of "harder" as "there are more buttons". I was convinced that four buttons (and even four is probably too many) was still understandable and playable. Therefor, I placed an emphasis on developing levels in Circadia that would have the least amount of buttons and the highest amount of difficulty. That's where the moving goal came in. If I can't make more and more buttons to make it harder, something has to make the game more challenging. By moving the goal along a simple path, even levels that had already been played presented new problems to solve. Eventually though, even this became mundane. That's when I tinkered with multiple goals. Then, putting these two together, I could make some really awesome puzzles.
I had a theory the whole time that multiple moving goals on the screen would make the game amazing. That was just a theory though. With everything else in line, it was now time to make the donuts.
Level 70 was the first level that featured multiple moving goals. It was in my head for a while and I thought would be proof that this game could actually hold up under 100 levels. More importantly, it's the point where two goals don't stop at the same point, meaning it's not just one point on the screen that needs to be satisfied. Also, the goals only align for a brief moment, then they pull away from each other. It's important because now the player must predict when the goals will align, and then hit the buttons in sequence before they align.
In the level there are two buttons equidistant with different speeds. The two goals are parallel and move along the x axis. One is above the first button, the second is below the second buttons (see below). Since the goal moves on a sine wave, it slows down at the edges of the path. This means that the two goals briefly meet at the same x position and then pull away. It's stunning. To me, it's the most aesthetically appealing of all the levels. At first glance it seems impossible, until the pattern reveals itself. It's simple, elegant, and once you see the answer, it's dastardly. The first time I beat it, my jaw dropped. It was the most rewarding level I had played in Circadia. I could beat all the previous levels almost without fail on a first try by that point because I had played them so freaking much. This level ... this one. When I beat it I stood up from my desk and threw my arms up in the air. I love it when I make a great level. It was perfect. I was convinced. I could make some absolutely mind bending levels with this game.
The most grueling part was finishing the last 20 or so levels. I never repeat something just for the sake of stretching something out, I think it's cheap to the player to slip something in they've already done in a puzzle (unless you're teaching them something), so I felt like up to that point I had exhausted almost all the tricks of the game. Pretty much couldn't choose to believe that though, so I just had to keep thinking that there were a ton of things that maybe I hadn't thought of or found. The last 10 levels of course would be very tricky. They have to be really really hard. Even a bit impossible. But not complicated. It had to be levels that were still very beatable, if you had the patience.
I discovered that creating patterns where the goal was presented in a rhythm was the way to go. The levels provide an artistic reward for waiting and the effect is a level that is both difficult and visually rewarding to look at. I felt that the last 5 levels in particular were the embodiment this.
I don't say this often, but I'm really proud of the level design in Circadia. It's some of the best work I have ever done. Not each level by itself, but together, as a whole. The 100 levels was a personal dare. Could I really make 100 levels based on these very basic vectors? Even more specific, can I make 100 unique and compelling levels? I did.
Once all that was finished, the last thing to do was to think about how to sell it. This part was really difficult. I learned from Halcyon that people don't spend money on boring screenshots. That's just a fact of life. I get it too. I go to buy a game, the first thing I do is look at the back to see what it looks like. Everyone does. So how am I supposed to sell a game that looks like Circadia? Although I wanted to sell it as one app for a dollar, I really think even that can be too far for people trying something new. Even if it has the most amazing reviews. I finally looked at it like this. A dollar is a fair price for the work that I've done on the game, and for the experience it provides. I could try to make it free with some upsells and such, but even putting the game into a money making strategy just felt weird. I didn't feel like it was practical either since, if you only play the first 15 - 20 levels there is no way you're gonna say, "Oh, I see where these levels are going, I'm definitely buying more levels." It's something you figure out over time.
So in the end, it went on the store for a dollar. It's receiving stellar reviews and I couldn't be happier. Thanks for playing Circadia, and if you haven't played it yet, thanks so much for spending time to read about how I made it.