We’re about halfway through 2017. WWDC starts on Monday. I have been working on a book on Metal since about October. My life has been on hold since then as I knew I couldn’t really work a full time job and write a book on Metal at the same time. Metal is incredibly mentally comprehensive. It’s a multidisciplinary skill as you don’t just have to understand the framework, you have to have a large base of knowledge around linear algebra applications in order to have it do anything useful. Half of my book is about graphics and half is about machine vision/learning and GPGPU programming. So trying to learn all of these things and distill them into something that’s actually coherent to other people has been incredibly mentally exhausting. It’s been rewarding as well. I honestly don’t think I could do this while also working full time concurrently.
I am getting to the end of my time on the rough draft of the book and I need to figure out what I am going to do when it’s over. My plan was to try and knock this book out as quickly as possible and then hope I could use it as a portfolio piece to find a decent full time job that would hopefully allow me to work remotely. As I nearing the end of this process, I don’t really want to do that yet. Don’t get me wrong, if someone offered me a decent full time job that let me work from my house right now, I would accept it immediately. But right now that’s not what my main career goal is for the near future.
One of the wonderful things I got to do this year was attend GDC. I got to meet a lot of awesome game developers. As an iOS developer, I meet a lot of people who think game development would be cool, but it doesn’t pay anything, so they stick to learning Core Data and doing boring things that will keep them employed and pay the bills.
I don’t have an app out on the store. I have published multiple books (and yes, I do know how to code!) and have worked on many long term projects with a team of other people. But it bothers me that I have never published an app. Specifically, I want to publish a game.
I have been toying with game development for a few years. I have tried working through a few books on game development assuming that game programming would be exactly like iOS programming. It’s not. There are a lot of design patterns that are fundamentally different between iOS and game programming. Also within game programming, there are a lot of foundational differences between a platformer game and an RPG. Just knowing some foundational SpriteKit information is helpful, but it’s just the tip of the iceberg for creating something interesting.
I see game development as being similar to Metal in that just learning the framework isn’t enough. You have to have an idea about what you want to do with it in order for it to be truly useful. A lot of Apple’s frameworks are very Lego-block like in that you have a bunch of built-in methods to do whatever it is you want it to do. That can be satisfying to throw together, but it doesn’t give the same feeling of creation you get from doing something outside the box.
As of right now, I have two goals I would like to accomplish in 2017:
- Publish my Metal Book
- Publish a Game Made With SpriteKit
I know that my first goal will be accomplished. I don’t know about the second one. The second one depends upon me being able to line up enough part time contract work to pay my bills while also leaving enough time for me to dedicate to game development.
I am talking to several people who have created successful consulting companies about trying to figure out how to do this successfully. I have been consulting for the last year or so, but it’s been rather haphazard. I have been fortunate enough to know someone who needed a contractor at exactly the right time I needed to begin something else. I don’t want to continue to rely on getting lucky in order to sustain myself. I know if I want to do this long term I need to put time and energy into it.
So why am I writing this blog post?
I believe in manifest visualization. I have noticed that many people have amorphous goals that don’t really line up with what they actually want to accomplish. I went to school for audio engineering and a lot of people wanted to be rap stars. They didn’t want to be rap stars because they enjoyed making music, they wanted to be rich and famous. Being a rap star seemed like the easiest way to get rich and famous and they assumed that being rich and famous would make them happy. This lead to a lot of people being put into exploitive situations that did not make them rich, famous, or happy.
I believe having concrete goals you want to accomplish with no extraneous strings attached to them is the best way to approach accomplishing anything. My goal with the book was that I wanted to learn Metal and I wanted to have a book on Metal with my name on it out in the world. I have no illusions that it’s going to get me hired by Apple or propel me into a job where I make fuck you money. I don’t have any illusions about it out-earning my advance. If I never see another penny from it and it doesn’t change my career, I am still happy I did it because it’s something I wanted to do.
Right now my hope is that I can line up part time contract work (~ 20 hours a week) through the end of the year so that I can publish my game. I am hoping that by focusing on what I want to accomplish and having concrete ideas about how to do it that I will be able to reach my goal. I don’t think my game is going to earn any money and it will probably look very amateurish and get lots of one-star reviews, but I want to create it because it’s something I want to know I can do. I am praying that I can find a way to add value to someone’s company as a contractor that also allows me enough free time to pursue my own passions and interests.
I don’t know if I will be able to pull off what I want, but I at least have an idea about what that is. It does no good to get everything you ever wanted only to find out you wanted the wrong things.