I’ve previously given this as a talk at Freeplay 2018 and NZ GDC 2018. I thought it was now time to turn it into a blog post.
What is In My Mind?
In My Mind is an autobiographical game designed to represent what it’s like living with bipolar. It’s very much based on my own experiences with mental illness however, so I can’t speak for everyone’s experience with it. In My Mind was released in August 2017 alongside its exhibition in Contours.
A simpler description of the game I have received however would be “you are a pill and you slide around a room talking to furniture”. So, whatever premise sells you really.
A few quick facts before I dive into this further:
All the content is from a blog I started back when I was first diagnosed about 5 years ago now
That was 66 blog posts
Which turned into 432 paragraphs
The idea was sparked by a Ludum Dare theme - room
I worked on this for about a year
I worked on it for about another 3 months after releasing it
About a year later I released it onto phones and tablets
It’s a pretty intense experience
Why did I make it?
There is not a lot of good mental health representation out there. Which makes it really hard for people like me to see my experiences reflected somewhere, or to have something to relate to. Something that I can not be angry at for once, because honestly - a lot of media paints us into monsters. I’m looking at you horror genre - where your antagonist has gone off their meds again.
It also makes it hard for anyone else to understand what bipolar, or any other mental illness, is actually like for the people who have it. So to sum up, I made this game for the following reasons:
I want someone to play it and go - I am not alone in these thoughts and experiences
I want someone to play it and maybe understand what some of their friends or family are going through
I want people to play this and go - we should be doing better with mental health representation
I remember playing Depression Quest, by Zoe Quinn, and it was that moment that I realised that I too could make something to reflect my life. My life with bipolar.
I originally had a much, much larger game in mind. It was gonna be first person, I was going to make the player try and live their life in their apartment while managing mania, depression and intrusive thoughts. I had SO MANY mechanics planned. Like when they were manic the view would always slowly drift to the left or something to emulate my inability to stay focused on one thing. The screen would be constantly flooded with thoughts moving too fast for the player to read fully. I had no shortage of ideas for what this game was gonna do.
But it was quickly becoming obvious that that was something I was never going to finish. I still remember the time that I admitted that out loud, on a panel at Pax about mental health and games. I still remember how I felt accepting that it was okay, that it was something I just couldn’t do. That is my life all the time, accepting that there is stuff out of my reach because of how bipolar affects me.
Much later though, Ludum Dare rolled around and the theme was room. It just really got me to thinking about how often I’ll pace around my apartment, which at the time was basically one large room. And I’d be doing that, talking to myself out loud. Which I do all the time because that’s just how I manage and sort through all the thoughts that go through my head.
And I am acutely aware of how media portrays that. Oh, that person is crazy then, better stay away from them. I have literally had people cross the street to get away from me when they’ve clocked that I am on leave from the local psychiatric hospital. I know how people see me.
So I decided, I am going to make a whole damn game around this. I am going to normalise something that is genuinely helpful for me. Not that I should ever need to justify it to anyone.
My first hurdle was, how do I produce all that content? Well, lucky for me I’d been keeping a very raw and personal blog, pretty much since I’d been diagnosed. And thus began the journey of In My Mind. And what an amazing and terrifying journey that has been!
Let’s now go through the journey I went through in creating this game.
I was originally going to structure this much more rigidly, with a design section, then get into the technical. But that’s not really how my brain works, so we’re just going to kind of go with the flow here.
I did this as a talk at Freeplay 2018 and someone told me that they liked the narrative structure of my talk, so let’s see if I can repeat that in blog form!
Most people might suggest nailing down the design fully before jumping into writing any code/tech for it, but me being me, I got super excited about writing something to pull down and parse all my blog posts. So, I totally wrote that system first. In my defense, I did have the mechanic nailed and I kinda knew I would need those posts to test the idea properly. So I figured, may as well write that system now.
Now at the time that I started this project, my blog was hosted on Tumblr as that had been the platform that made the most sense all those years ago.
To get the ball rolling I wrote down a few lines of code that pulled down all of the html that it could from my blog. But what would I do with that? I had no idea at the time. So I started reading through it. Now, I am sure that if I’d had more experience with html, this process might have gone a bit faster and neater. But I didn’t, so I just pressed on.
The first thing I noticed was that it couldn’t pull down every single posts at once. Annoying, but easy to work around. I just had to compile a list of all the url’s I wanted to pull down.
Okay, now I needed to make these 60+ blocks of html into something my game could use. So I made possibly the worst combination of for loops and if statements to parse through this whole thing and find the stuff I wanted. How did I know what to look for? I just literally read through hundreds of lines and adjusted my loops bit by bit until it started looking more like what I wanted.
Once I had what was a pretty nice block of actual content, I just started writing functions to split it up properly. So I’d look for line breaks and divide those into paragraphs, and in those I’d use the punctuation to let me know what sentences that split into. For awhile my game actually had no punctuation as the end of any sentences due to how the split function works. Eventually I stopped joking with myself about it being a feature and fixed it by using this one line of Regex.
It was honestly not as hard as I was imagining it to be. I was actually planning like 4 more loops and if statements to work this out.
Now, I had a working system, not a pretty system by a long shot, but one that was ready for me to start making the game part.
Basic Design of the Game
So, the basis of the game is how I process my own thoughts. My head just has a really loud and erratic range of thoughts going basically always. There is usually no linear pattern that I can find, so I try and sort through them by talking out loud and eventually piecing things together. For a long time I definitely tried to not ever do this in front of anyone, but to hell with that really. Life has been so much easier for me since letting myself do what I need to do to make sense of myself.
And this game leans right into that. The benefit of this as well, is that I can show the player exactly the type of stuff I deal with day to day.
My first instinct with this game was to just pick paragraphs to show at random. But then I was like, wait, that isn’t going to be a cohesive experience at all. So I started designing this tagging system, where I could tag the sofa as say meds, and the toaster as depression. So depending on the furniture piece you talk to, it would kind of give you a subject it was addressing.
Then I remembered, my thoughts aren’t cohesive. That is the point. I am so used to having to try and cater myself to a society that doesn’t get mental illness or neurodivergence, I was actually trying to make myself and my game more palatable. That’s not what I’m about, that is not what I set out to do, so I immediately binned that and started playing the game with completely random picks.
I was honestly amazed at how accurate this was. It was like watching my thought patterns being live streamed. I had so many raw and honest posts from the worst of times and the everyday times. I had put me into a game.
The game is also totally drop in, drop out. As low commitment as possible, cause I really struggle with my own attention span and playing games. You can play for a bit, then come back another time and it still won’t repeat anything. So one could really take their time to slowly explore it all. This also makes it good design for phones and tablets, just jump in on your commute home or just before bed.
Now I want to get into the designing of the trigger filtering system. It’s something that I feel is particularly cool about the game. I knew going in that this was going to be an intense game. I also knew that I had a lot of triggering content in my blog. So I had a couple of choices.
Ship the game with that content and the appropriate warnings
Remove the triggering content completely
Eventually I thought of a third option. Ship it, with the warnings but also a way of filtering out as many of the triggers as desired.
It was very important to me that as many people as possible would be able to play it. I didn’t want to make a game about my life with bipolar but then exclude a portion of the people with it as well. I also really wanted to have the sensitive content in there for the people who don’t deal with it daily. So that if they’re up to it, they can see what it’s like. Cause, stigma.
All my blog posts already had the appropriate warnings, so I used that to help determine what triggers each post had. I went back and double, possibly triple, checked each post to make sure I hadn’t missed anything. Then whenever someone selects some triggers to filter out the game just removes them from the pool of possible dialog.
It was a pretty simple matter of adding a check to my many for loops that just looks for a line starting with “Trigger Warning:” and then it checks to see which ones apply to that post.
The game still has heaps of content, even with them all removed. 137 paragraphs to be exact, so about a quarter of the already immense content. The game is also still an intense experience, even with all the triggers filtered out. There are definitely people who still won’t feel up to playing it, and that’s okay. I’ve had people tell me they’re glad it exists even if they can’t play it for themselves.
My Blog System Failed
Now this was all great until about a month out from release. I went to go and pull down the blog data and nothing happened. I panicked a bit and checked to see what it was pulling down. Still a bunch of html, cool. But, my code that usually turns that into workable game content was no longer doing that. Tumblr has changed something about the html format and now I could no longer download my content.
I was faced with two choices.
re-write the horrible code and hope Tumblr never changes anything ever again
re-write it in a much better way that would allow for easy adjustment if something did change
I bet you’re all thinking I went with option 2 right? It seems obvious. Well, I actually went with option three - move the entire blog to Squarespace (where I host my website anyway) and then also re-write that terrible code and hope that Squarespace never change anything.
So I learnt a very valuable lesson, which I 100% did not apply at the time. But if I were faced with designing a similar system in the future, I’d like to think I’d approach it differently.
Optomise Game Loading With This One Simple Trick
After I’d started letting people play the game one piece of feedback I got was about how slow it was to load. On some computers it would even visibly hitch. I tracked this down to actually be whenever the game was loading or re-loading all of the blog posts.
When I made the system that pulls down the blog posts it stores them in a list, but what it also does is it generates a bunch of json and stores that into a text file for me. Just like below:
I figured that was a nice way of storing it and it’s super easy for me to diff it in version control. So I also thought it’d be neat to just use that in game too. It would load up and parse through it and add the correct posts to the pool I was using for the random pick in game. Now it also goes ahead and does this whenever someone changes the filtering settings, as it needs to make sure it removes any that need to be filtered out.
This seemed to be what was causing me problems, possibly due to file size, possibly due to how I had setup the co-routine I’d written for it. Either way, I needed to change things. So to solve this quickly I just literally made a second list that never gets altered. In that list I hold all the blog content. Then I loop through that list to decide what goes into the pool of content to be seen in game.
Lo’ and behold, this was astronomically faster. I often refer to this as a time that I was trying to be too clever when a very simple solution/situation would have been just fine.
Releasing this game was probably one of the scariest things I have ever done.
What really pushed me to release it though was being asked to exhibit it at Contours in 2017. Which was truly amazing and one of the highlights of my life seeing it there. And on a huge screen (that you could totally fit about 20 cats on)! So that helped me overcome a lot of the doubt about actually putting it out there and I released it officially the day it exhibited.
It’s a scary thing releasing a game, and releasing a game that is so personal, you want it to be perfect. You wonder what people will think of it and then by extension, you. It’s really hard to separate the two. But nothing is perfect. The reception of a game, even a game about your life, isn’t a reflection of yourself.
I was afraid of what people would think of the thoughts that I have on a daily basis. But that is also why I made it. Because there is so much stigma, because a lot of people just don’t understand what it’s like. I should not have to be afraid of this. Maybe one day no one will be.
Even after you tell yourself all this, it’s just really hard.
This is where I want to mention the other big help in me finishing and releasing this game. It was the support from my partners and friends. Every day I’d be messaging them like, how do I do this, why am I doing this. But they’d always remind me how important this game was, that I was doing good. I can’t thank them enough.
Now I wanna get real here, not that I haven’t already. It is really easy to fall into thinking that the game, or you, didn’t do well enough. Putting it up for awards, watching sales, it is so easy to take that rejection to heart. And I did find myself having moments where I was like, I should have done better. Maybe if I’d done this. Maybe it just isn’t good enough. Maybe I’m not good enough.
And for a bit I did totally fall into a bit of a pit there. But there is something I’ve seen Morgan Jaffit talk about a fair bit, which is to define what success means to you. It would be easy for me to feel disappointed that my game didn’t sell enormously. But I never designed it for that.
Why did I make it?
I wanted to make a game that shows people what it is like living with a mental illness, living with bipolar. And, I did that. I’ve had people tell me how much they can relate to my game. I’ve had people thank me because they now have a better idea of what some of their friends/family go through.
When I started this game, I said that if this helps even just one person, it would be worth it. And it has, and then some! So for me, this game was entirely a success and I am unbelievably proud of it and myself.