Hi. My name is Janie Clayton. If you’re reading this post, you probably know me as Red Queen Coder. I have been blogging since 2013 and I have been speaking at conferences since 2014.
I started my initial blog, RedQueenCoder.com while I was still a student. My background was in journalism and writing, so for me creating a blog was a natural extension of my learning process. I wanted to write out the issues I was trying to figure out and how I was able to solve them. I had some concerns that it would expose my ignorance, but I hoped that by showing I could work through problems I would show that I was capable of learning and solving problems. I also wanted to give some hope and support to other people trying to learn programming that they were not alone and that they could accomplish what they wanted.
I have accomplished a respectable amount of success since those early days of the blog. If you told me five years ago that I would be the author of multiple books, spent a year building and programming robots, and was a member of Ray Wenderlich’s tutorial team, I would think you were crazy. The last five years have been extraordinary and I have had opportunities I didn’t imagine were possible back when I started RedQueenCoder.com.
Sadly, I have somewhat neglected the blog over the last year. I spent a year fulfilling a dream of mine, which was to write a book on GPU programming targeted at people who didn’t study computer science in college. This book was incredibly challenging and really pushed me to my limits. I had to put a pin in a lot of my interests to focus every ounce of mental energy I had into that book. Sadly, one of the interests I put a pin in was my blog.
I had some mental health issues before and during the writing of the book, so my blog sort of veered away from programming and got more into mental health and self care advocacy.
Now that the book is completed, I have a lot of things I would like to write about in the tech field, but right now it doesn’t feel like these posts should go on RedQueenCoder.com. I created that when I had the idea that programming was a large broad skill rather than an amalgam of dozens of dark corners and proprietary knowledge. Having a single blog for all of my tech interests doesn’t feel like the right path anymore.
So I have purchased a few domains for blogs that separate out my different technical interests. I will maintain RedQueenCoder.com for my personal blog posts, but I am moving my technical posts to this more segmented, targeted approach.
My Approach to Game Development
Over the last fifteen years I have learned a lot of skills that were incredibly unfamiliar to me. I got a video editing degree in 2007 because I had always been fascinated by video production. I never had access to any of the software or hardware, so it was something I didn’t know anything about when I started. I worked with people who had taken classes in school and bought equipment with money from high school jobs. It was incredibly intimidating to be surrounded by people who seemed so much further ahead than I was. But I was stubborn and didn’t want to give up. I learned video editing, but more importantly, I learned how to learn a weird skill.
The way you learn any skill is to start with some basics. Everything can be broken down into smaller pieces that are combined to create complexity with larger and more complex systems.
When I learned video production and Photoshop, there were books that started with some simple projects that get you familiar with the tools. Once you’re familiar with the tools, you delve into more complex and complicated projects. I have found that this is the best approach to learn anything.
I do not see a lot of that philosophy in programming or game development.
I have a lot of books on game development and I would say 90% of them are about tools. They explain how to use Unity or SpriteKit. Some of these are tutorial based where you work through a project. But I have found that I don’t learn game development well from these projects.
These projects are good at getting you familiar with an engine or a framework, but you finish and don’t really know how to proceed from there.
I have tried finding game programming books that take an iterative approach that I had with Photoshop, but I have thus far been unsuccessful in finding exactly what I am looking for.
A lot of books make a major leap in complexity. You start with tic-tac-toe and move on to World of Warcraft. There is also an implicit pressure that you’re supposed to know what you want to code as a game. You’re supposed to have some grand idea of a large, complex game like Mass Effect that you want to create. These ideas are always overly ambitious to learn on and a lot of people give up in frustration. There is the idea that if you’re not creating something innovative and Game of the Year worthy, then it’s not worth doing. I don’t think that’s the case.
I think that by recreating simple games, you can work through a lot of issues you will encounter in larger projects that you don’t think about. Saving a game, creating a leader board, designing a level… By focusing on doing these things for simple games like tic-tac-toe, you can become familiar with them by the time you get to the game you actually do want to program and design.
One thing I learned from learning programming is that in order to get good at programming you have to practice. Creating a bunch of crappy, throw away projects that do one thing really help you hone your skills in a lower stress environment. I know people in game development for whom they went all in financially on their first game. I want my learning experience with game development to be a fun hobby and not a major source of stress because if my game doesn’t sell a billion copies I will lose my house.
I also come from a weird background for game development. I didn’t have a video game system growing up. My only experience with video games was being at daycare watching my babysitter’s kids playing Super Mario Brothers because I wasn’t allowed to play. I played a few adventure games in school like “Day of the Tentacle” and “Myst” that were available on the Mac, but I didn’t own a gaming console until a few years ago. I know that I have a lot of history to catch up on for game development.
Part of me feels like this is an indulgence. Lots of people grew up wanting to be programmers because they wanted to create Mario Brothers. I wonder what I have to contribute to game development because I didn’t grow up wanting to make video games. I am back in the same position I was in with video production where I want to learn something simply because it interests me and I feel I am already behind everyone. This time there is not a laid out curriculum for someone like me, so I am designing my own.
The first year of this blog is going to be rather boring. I made a list of simple games that I want to create simply to learn the patterns and to get comfortable with game programming and design. I want to create these simple games with both Apple gaming technologies and Unity/Unreal.
When I started with Photoshop I had no idea what I wanted to create with it because I didn’t know what was possible. After immersing myself in it I came away with a lot of ideas about what I wanted to do. I am hoping by putting in some work to recreate games that I begin to see patterns that I can iterate on to do something unique.
I also work better with goal oriented objectives. I loved working on my book because before I wrote a word, I had an outline in place. I had no idea how to do 18 of the 20 chapters in the outline, so I focused on the two I could do. Then I figured out what looked the next easiest. I worked my way through the book that way. Having small iterative steps I could take that added up over time really helped me out a lot with my mental health. I felt I was accomplishing something. Even if I didn’t do much on any given day, getting something done helped me get closer and it added up over time. It also helped that I have a constrained scope where there was an actual “done” condition on the book. There was a finite number of chapters and topics to cover and once those were covered, the book was complete. One thing that frustrates me about programming is that nothing is ever done. One gets the illusion of things being done by creating discreet tasks and having sprints and declaring that sprint done once those tasks are complete.
I like having large projects to work on that are broken up into smaller tasks that I can focus on and complete. If you are not organized, you get overwhelmed quickly by things that you don’t need to focus on for a while. Anything can be accomplished if you just put one foot in front of the other and not worry about what you’re doing at Mile 25. By having some smaller projects that I control and can lay out all the requirements on, I am hoping to learn these organizational tactics by the time I find a larger project I want to do.
In Doctor Strange, The Ancient One asked Doctor Strange how he became a great surgeon. He said he became one through many hours of study and practice. With study and practice, anyone can learn anything. The purpose of this blog is for me to focus on my own study and practice so that I can gain a skill that interests me. Sometimes study and practice are boring to observe. Zen Buddhism focuses on the here and now. Instead of fantasizing about how things are going to be in a year, you focus on doing the best that you can with the present moment. Every task you do is important, even if it’s boring. By being mindful and treating every task with respect, it’s possible to learn faster and better. My hope is that the work I am doing in two years is better because I am going back and teaching myself fundamentals. I worry that people will judge me because I am planning to spend a few posts explaining how to code a tic-tac-toe game in SpriteKit. I have decided I don’t really care if people judge me or not. I am writing this blog for myself and my own learning style. There is no one way to learn. This way works for me.
Hopefully this blog will be of interest to people curious about game development. I would like to turn these posts into a book at some point. But for me the main purpose is to lay out goals for myself and have constrained projects to work on so I can practice and get better. I’m looking forward to learning new things. Thanks for joining me on this journey.