Games are an untapped source for social good.
There are some examples of “good games.” Duolingo teaches foreign languages. Neuroracer helps prevent cognitive decline. I’ve written about many other such examples around this blog. But I’m also a game designer by training, so it was inevitable that I’d try to create a socially-inspired game eventually.
It’s no secret I’m a fan of Jane McGonigal’s work. In Reality is Broken, she offers coherent ways that games can be used as tools. In Super Better, she shares her own story of recovery from an accident. In her telling, she gains a first-hand experience of the healing power of video games. In particular, her discussion of using games to battle depression stuck with me.
In a completely separate part of my brain, I’d been thinking about simple game mechanics. My last game, Warlord Tactics, was very strategic and complicated. It took years to build. I was looking for simple and fun “core loop” (the thing you do over and over when you play a game). I’d been intrigued by simple puzzles build on 2D grids. In everything from Bejeweled to 2048 to Sudoku (plus dozens of other famous examples) there’s a certain entrancing pattern-matching quality to the game. It’s easy to kill hours in them without realizing.
Slowly, inspiration began to come together. I prefer RPG-style games, generally. Years ago, I had drawn sketches for a 2D tile-based game which involved a “spellcaster” flipping the tiles between different colors. This had been inspired by flood-it style games on iOS I had played. I liked the simple mechanic of changing the color of a tile.
I wondered what it’d look like if the colors of the tiles were based upon the four emotions. Thinking of human emotions as sort of “raw ingredients” for magic had a certain artistic appeal to it.
This is where imagination came into the picture. I tried to picture what the game would feel like if I were a person exploring a world where the tiles change underneath my feet. What came to mind was the idea of a maze. It seemed to me that the “feel” of the game would be of exploration and discovery.
I decided to reach out to an artist I had worked with and ask her to help me come up with a direction.
Here’s the exact Google Doc I sent the artist.
These requirements came together mostly from projecting what I thought the game would play like. But I also did some basic prototyping to confirm my initial hypothesis that the game would feel like a maze. I realized that I needed an antagonist. Thus the stage was set: an unnamed androgynous “hero,” and the antagonist “depression.” The artist came back with 3 options for each:
I ended up choosing the second hero, because I liked how playful and it felt. I chose the third depression because I also found him a bit funny. I also knew he’d be floating around in space, and the cloud helped make this make sense. I imagined him spitting out gray fog as he went, clouding the world in depression (like “fog of war”).
Another idea which had been bubbling up in my mind was using emoji as a form of currency. A smile-faced emoji looks a bit like a gold coin in a video game. This also felt like it’d play well thematically with the idea of escaping depression, managing emotions, and building connections with friends.
Such Technology, Wow
There was another motivation for making this game. Warning: techno-babble follows. Skip to the next section if you don’t care about such things.
I wanted to prototype a real-time game engine that I’d use in a later project. By real-time, I meant that the world was shared between all players. Any change to the world would be immediately reflected to everybody else in the word. On a technical level, I wanted to experiment with Swift, SpriteKit and Firebase. I also came upon PromiseKit, which made me ecstatic to see a good promise library implementation in Swift.
I nerded-out for a couple of weeks building a solid real-time tile-based engine with these technologies. I didn’t use any other core libraries. This meant I had to (re)solve some basic problems, like how to lay out a 2.5D isomorphic tile-based game. This is non-trivial, because the “isomorphic” part means everything is rotated by 45 degrees. Creating a good set of controls for this environment requires a little bit of math. Figuring out which tiles are on the screen is also non-trivial, since it’s not a simple square. Solving world-wrapping is also pretty strange, in order to do it without creating any sort of “seam” at all (thus making the world feel infinite).
There are a bunch of other fun little problems I had to solve in my prototyping, but I’ll spare you the gory details in this blog post (let me know in the comments if you want to hear more, though!)
Improving the Fun
The game was shaping up well. It was proving fun just to wander around. The changing tiles, even without animations or particle effects, were puzzling and interesting. Being chased by depression led to a sense of urgency. Finding friends felt like a good dramatic motivation for the game, and the metaphor generally seemed to hold.
- Added animations and particle effects
- Introduced per-level difficulty settings
- Added a High Score table
- Added power-ups (Wishing Wells)
Introducing: Forever Maze
Visit ForeverMaze.com to download it. It’s not a free game, because I had to pay a fair bit of money to the artist to create the game. I prefer to make my games free when I can, but it’s not feasible to do all the time. Also, you’ll need to login with Facebook to play the game, since it’s all about “connecting with your friends” (so it needs access to your friend list).
Here’s what it ended up looking like:
One More Thing…
I wrote a series of blog posts and video tutorials about how I made ForeverMaze. If you want to learn game design and/or the Swift programming language, these articles are for you.
I hope you enjoy the game! I certainly enjoyed building it. Let me know if you have any thoughts in the comments below.