Getting into game development with ADHD
Why am I writing this ?
I created Catch The Connection for Raylib's NEXT gamejam. Besides a few incarnations of Hello World, it's my first full (-ish) videogame, my first C program and the first personal programming project that I didn't abandon half-way.
I coded, created the graphics, composed the music, recorded the sound effects, in 5 days. None of it is very good, some of it is straight up bad, all in all, not something worth writing about.
But for me it's a big deal.
And it is a big deal because I have ADHD, a condition that makes the most basics tasks in life take a huge effort just to get the minimum acceptable result.
I was diagnosed in my late 30s, after reading a couple of articles about ADHD that made me realize how most of my problems with doing things, like systematically losing track of time, procrastinating, skipping steps for even the simplest tasks, could be actually linked together. So I talked about it to my doctor and he directed me to a psychiatrist. The diagnosis was pretty clear from the very first visit.
Since that moment, I've started reorganizing my life, concentrating my efforts on my family and my job as a web developer. I had spent almost 40 years of my life coping with something I didn't even know was there, not always in a good way. Most of the time I just accepted mediocrity as the highest result I could get from about anything. After being diagnosed I had to unlearn most of my coping mechanisms, and learn better ways of doing things, all the while resisting the urge to use ADHD as an excuse. At times it's been way harder than before the diagnosis.
This little game is a real milestone. Coding it, I recognized many of the patterns that had led me to failure in the past. I was able to correct them and get to a point where I was actually satisfied with the results enough to publish them, and at the same time aware of what could be done better after the jam.
I started working on refactoring the very next day. With ADHD losing momentum could be the end of a project. I had a lot of ideas on how to make the game better, from fixing bugs to composing more than just two measures of music. Plenty of features to add. Sometimes people talk about ADHD as having superpowers. I suspect most of these people don't have ADHD and / or don't fully understand it. Having millions of ideas at the same time has been useful at times. As a developer, whenever discussing a new feature with my team, my brain would branch out immediately to all possible outcomes, anticipating bugs, missing dependencies, technical obstacles. That sounds like a cool superpower to have, and sometimes, it is. Unfortunately most of the time it's just too fast to follow, and it's missing logical steps. So I just ended up with a confusing list of seemingly unrelated items, and unable to present them in an articulate fashion.
In order to keep myself in check, I needed to approach the project in a structured manner, and creating structure is one of my hardest challenges, one that I was only able to overcome with years of experience, so far. So I had an idea: don't have ideas. Start with the one thing everything else depends on: refactoring. The lethal combination of a very short deadline, being pretty new to game development, and completely new to C, produced an unmaintainable mess of code. I needed to put some order into it, without adding anything new, and resisting the urge to start again from scratch. Restarting from scratch is my brain's default solution to pretty much anything. As soon as the tiniest problem shows up, just abandon and start again. It never works out, of course, it just adds to the pile of my dead projects. So this time, instead, I would just cut code from the main C file, and paste it into other C files, according to a very wide separation of concerns. Really, really small steps.
I still wanted to somehow keep track of all the stuff I would think up at the same time, without it getting in the way of the refactoring. The solution I found was to record my coding sessions, telling in the microphone what was I doing, possibly why I was doing it, and what should I focus on at a later time.
It worked better than I expected.
- Explaining things while coding1 helped me see some mistakes before making them. It also made me question some decisions I was about to take without really evaluating it.
- Just by having a recording going on, I was more aware of the "pauses" I take, when my mind just wanders off to something else. Kind of like having a supervisor, but without the stress.
- I can see what kind problems slow me down the most. Like math. I can actually see why I have such a hard time with some basic math, and it's always me getting ahead of myself and skipping steps. Watching myself struggle, as embarrassing as it is, makes me realize what I should work on when dealing with this kind of problems.
- Instead of breaking my workflow by taking notes or writing tickets, I can just say what I want or need to do in the future, and come back to the recording after the coding session is over.
- I have much better control of the hyperfocus2. I can hear myself switching focus to the wrong subject and correct my aim.
So, why am I writing this again ?
In part, for myself. Writing has always been a way for me to interiorize concepts. I also figured it may help someone else out there. A lot of people with ADHD are attracted to programming, I think because programming is a way of structuring thoughts. Many would struggle to find the motivation for programming outside the context of a corporate job (not starving is a pretty strong motivation and sometimes even that is not enough), so I hope sharing a little success story can lead some to create something.
I plan on keep writing, possibly adding selected clips from all the recordings, for as long as I keep working on this game. And, hopefully, other games.
1 - This is actually just a variation of Rubber Duck Debugging, but I feel slightly less silly talking into a microphone than to a rubber duck.
2 - Hyperfocus is widely considered as an ADHD superpower. And it is. Only, most of the time, I don't really choose the object of my hyperfocus. So I can spend hours (even days) on the wrong task. It's like having teleportation, but you don't get to decide when or where you teleport. Imagine that you are taking a shower and you are teleported to the backstage of your favorite artist's concert. It would be cool, if you weren't dripping all over the floor, naked, and the security agents weren't so big.
Catch the connection
Have you ever tried to catch a train connection in Paris ? This is how it feels like.
Status | Released |
Author | el_sime :: Pixel Piper |
Genre | Racing |
Tags | Arcade, maze, raylib, Singleplayer |
Leave a comment
Log in with itch.io to leave a comment.