GDC / VRDC 2017 Recap

I gave a 7 (-ish) minute presentation tonight at our local VR & HCI meeting. I was one of three folks invited to share their GDC / VRDC experiences. Here are the slides:

Additionally, I was contacted today by a student looking for more information about my experiences in the local game industry. If you are interested in that sort of thing, I’ve posted the transcript below.

Continue reading

A Brief Guide to Playing Games at GDC 2016

I’m giving a short talk tonight at igdatc as part of a bunch of folks talking about their GDC experiences.

Let’s face it, playing games is the best part about game development. This is essentially a guide to where you could play games at GDC this year. (It’ll probably be better with my commentary, but then again, maybe it won’t!) Here are the slides:

Twin Cities Startup Resources

Every couple of months or so (it was twice in the last few weeks), I am contacted by someone new to the twin cities startup / entrepreneur scene. Usually this is someone looking for mobile application development, that’s how I get involved, but sometimes (nearly always) they are also looking to network and interested in pointers to various other local startup community resources. I’ve compiled a few lists of this sort over the last few years, usually tailored to a specific individual’s needs/interests. Today’s list was generic enough that I figured I’d post it here, with some additional sections tacked on for iOS and GameDev.

It’s worth noting that these are mostly about face to face events. I think all of them have both a presentation you can sit down and watch as well as networking opportunities, before after or during.

General

Minne* – MinneBar is a great event, and you should make it to MinneDemo when you can!

Tech.mn – Great resource for local startup news. Their events list is usually pretty out of date, but still a good place to start.

Pollen Midwest – Their website is super hard to navigate, but there is a lot of really interesting content there, and they organize events that are often really relevant.

Beta.mn – I’ve actually never made it to this, but from what I understand, it’s similar to MinneDemo.

Startup Week / Weekend – Only once a year, but a whole week of events worth knowing about.

Meetups:
http://www.meetup.com/newstartupmeetup/
http://www.meetup.com/Lean-Startup-Twin-Cities/
http://www.meetup.com/Startup-Grind-Minneapolis/
http://www.meetup.com/Innovators-and-Entrepreneurs-of-MSP/
http://www.meetup.com/MnStartups/
(There are too many of these, IMO, and I don’t really go to any of them, so no idea which ones — if any — are worth checking out.)

Mobile Specific

Mobilize – Relatively new to the scene, this group is only about a year old, but high quality. Presentations have been mostly focused on the business / startup aspects. They have occasionally had game development related speakers.

Mobile Twin Cities – Again, mostly about the business aspects, there used to be more development content. I haven’t actually been to this in a while, but it’s been going on for many years. (Worth noting that the full-day (or sometimes two) conference, Mobile March, grew out of this group.)

iOS Development (code) Specific

Cocoaheads MN – Despite feeling rather thrown together, and a location that is mostly inconvenient (~45 minutes out of town), this is the longest running and highest quality apple developer meetup in the twin cities. Always developer focused, full of quality people.

Twin Cities iPhone Developers Meetup – Also code-focused, this meetup has skewed toward beginner topics in the past, but looking through the last year’s meeting titles, looks like they’ve advanced a bit since I’ve been in attendance. I should probably be going to this more often.

Game Development Related

IGDA Twin Cities – Disclaimer: I help run this. With 3 meetings a month (or thereabouts), there is plenty to engage with here. Feel free to contact me if you want more specifics here.

Glitch – This grew out of a student group at the UofMN. A year ago I would have said it was still focused on students, but they have a lot going on, including an annual conference, organizing the local Global Game Jam site, and quite regular events in their office space near campus.

United Geeks of Gaming; Game Designer Sessions – The only public board game design meetup that I know about in the twin cities, they meet (currently) on the second Friday of the month.

Sharpening the Yak

Mixed Metaphors

The title of this blog post is a mixed metaphor. It’s a mashup of two common programmer idioms, sharpening the axe, and shaving the yak. I’ve been doing both this week, but before I get into that, I’ll define the terms.

Sharpening the Axe actually comes from a quote attributed to Abraham Lincoln: “Give me six hours to chop down a tree and I will spend the first four sharpening the axe.” When googling around for how this applies to programming, it seems a lot of folks have (for some unfathomable reason) latched onto the phrase “sharpening the saw” instead. I can think of four general categories of specific activities this could mean:

  • direct study — Ie., reading a book on a language or API, or reading and/or studying some relevant source code. Anything that directly applies to some programming task you have to undertake.
  • indirect study — This could include reading more generally about programming or related “industry” news, or learning a new language you will not immediately be using, or any other research not directly related to your current task list but (hopefully) teaching you something tangentially related.
  • architecting — This could be formal, in that you’re writing a document or outline, or putting together a task list, or just more generally thinking about the task(s) you have at hand. (I find I do my best architecting in the shower.)
  • practice — Writing code, but not code you will be using. I’m not much for this one, but I’ve heard a lot of good programmers say they write something once, throw it away, then write it for real. That sounds like a lot of extra work to me, but who knows, it is definitely easier to write something the second time. I’m not sure it’s guaranteed to be better though.

Yak Shaving is a more complex and subtle problem. Jeremy H Brown defined it in a usenet post in 2000 as “what you are doing when you’re doing some stupid, fiddly little task that bears no obvious relationship to what you’re supposed to be working on, but yet a chain of twelve causal relations links what you’re doing to the original meta-task.” The programmers Stack Exchange has more on the definition and history of the term yak shaving.

So what have I been doing this week?

I’m working on iCloud syncing for ActionGo, my next game for Apple TV and iOS. In a way, this is already shaving the yak, since I’m really only working on that because the Apple TV doesn’t support filesystem saving, and iCloud is their recommended solution. But after only a day or so of work, I found out that it does support NSUserDefaults key/value saving. (Up to 600 K, plenty for a saved game or two.) Since I’d already planned on implementing iCloud as key/value, so long story short, now I’m doing both. (Which is of course better, because it’ll work offline too, just without the syncing.)

But I’ve never done iCloud syncing before. *queue sharpening sounds* There are at least a couple of ways you can store data there, key/value, or document-based. Key/Value is definitely preferred for my use-case (a bit of state data for games in progress, and storing overall meta-game statistics), so I focused on that, but even then there are a bunch of different ways to go about it. Consensus seems to be that it’s really easy to get working, but almost all the blog posts and resource sites I read focused on that initial experience and I didn’t end up finding anyone who went into best practices.

So here’s the yak shaving rabbit hole (oooh, a third metaphor?): I’m using Generic Game Model for game state, which already had saving implemented on iOS using the built-in saving functionality that BaseModel provides. But it turns out that I was using an old version of BaseModel, so I had to update that. Then I wasn’t happy with how BaseModel implements its NSUserDefaults storage, so I re-wrote that. Then I wrote a wrapper that handles the syncing to iCloud whenever a key is added to NSUserDefaults (storing an associated NSDate value also, so I can just keep whatever’s latest), and only just now I’m finally getting around to testing. (Only I’m not so much, since I’m writing this post right now instead.)

When is your axe too sharp?

While “researching” this post *more sharpening sounds*, I ran into this critique of Axe Sharpening from a java.net blog post back in 2005:

But for me, the big problem with “axe sharpening” is that it’s recursive, in a Xeno’s paradox kinda way … to sharpen the axe, you need a sharpening stone… But to get there, you need to build a dog sled… But to use a dog sled I need snow, so I need to go to town to get a snow cone machine. I grab my trusty yak to help you haul the machine from town. But it’ll be summer before I get to town, and I don’t want the yak to get to hot, so I shave the yak. In mid February, I proudly lead my shining, bald, shivering yak into my quarterly progress review…

Hilarious.

My current theory on why I get more done in the afternoon

OR

Why working 5 or 6 hours in the AM is WAY less productive (for me) than working 7 or 8 hours throughout the day

First of all, I sort of wondered if this would happen. I’m not a morning person. I’ve never been a morning person. I used to tell people I worked with that I couldn’t manage to get anything done before 10 AM, not because I wasn’t awake, but because I couldn’t convince my brain that I was awake. It took an hour to get into the groove, maybe.

But just now I came up with a new theory.

In the past, I’ve had days where my morning is productive, but also days where my morning is unproductive. Possibly in disproportionate amounts, but let’s assume for a minute they are in equal frequency. On the days where my morning was unproductive, I am often aware of this, and compensate by trying to work extra hard (or be extra focused) in the afternoon.

Additionally, I am a lunch guy. I never eat breakfast. This is relevant because, probably due to blood sugar (or something else, who knows), if I don’t eat, and I’m really hungry, I notice my productivity really drop. (Hey, it JUST occurred to me that my lack of eating breakfast might have something to do with my lack of productivity in the AM. I never claimed to be smart.) Anyway, lunch is the most important meal of the day for me, if I don’t eat lunch, I often end up scratching my head at 2 pm, wondering what I’ve done with the last two hours.

So now, if I find that I’ve had a non-productive morning, I push myself hard to get more done… often “working” through lunch, (or through when I should be eating lunch), and then realizing that I haven’t been productive even while trying to be extra productive.

The new difference, and the productivity KILLER here, is that now I am done working around 2:15. So if I didn’t have a productive morning, even if I do eat lunch, I’ve only got like another hour or so of work remaining to try and be extra productive. I can remember days in the last couple of weeks where I’ve had exactly this revelation, and it’s been pretty demotivating.

Perhaps this is just the latest in a long line of thoughts justifying my lack of productivity. In short, writing this post: was it procrastination? Or productive?

Awe-full important

For the last couple of weeks, I’ve been citing an offhand comment some eyeo presenter made about the importance of experiencing “awe” regularly in your life. After getting over that slight discomfort I always feel when citing sources whose sources I absolutely don’t know, I’ve been finding it an easy justification for all kinds of actions and decisions I make.

So I did some googling. This interesting slate article by an “emotion scientist” suggests that the state of awe provokes thoughtful reflection and skepticism. This makes sense to me because I think one thing I find so appealing about “awe” are the big ideas. And big ideas give you perspective. If I’m contemplating the nature of the cosmos, that bug I’ve been working on for the last few hours seems rather less important. (Which I’d argue often helps to solve it, but that’s another blog post.)

This Atlantic article cites a Stanford study published in 2012 whose title says it all: “Awe Expands People’s Perception of Time, Alters Decision Making, and Enhances Well-Being” This huffpost piece cites a paper written in 2013 with another telling title: “Approaching Awe, A Moral, Spiritual And Aesthetic Emotion.”

This quest for awe is absolutely why I made it a priority to go to eyeo festival this year. It’s why I went to Northern Spark last night, and stayed up ridiculously late looking at art. The eyeo presenter that I quoted said it’s why we go to museums. Finding awe is often what drives my decisions around what to work on when I have spare time, and what to spend my recharge time doing in my evenings and off hours. Now I just need to figure out how to trigger it with the games I make.

Asynchronous Turn Notification Thoughts

I was recently asked by a friend my opinion about how often is too often to notify the player that it is their turn to play. I personally feel a player should not get more than two or three reminders total. I also feel like email notifications should be opt-in. (Push notifications are already, at least on iOS, but collecting an email at registration should not be license to send email turn notifications, IMO.)

I’m not sure if there are other options other than email and Push. It might be interesting to try an experiment where you make turn notifications tweets. I wonder if there are already any asynchronous games playable entirely on twitter.

So, sending a notification immediately when it becomes the player’s turn is a must. I also believe it’s a “best practice” to time out your games, and send a notification before that happens. I know I’ve seen other devs (who host their own games) post about how not having async games time-out also means there are thousands of abandoned games on their server that will essentially never go away. So when this notice is sent could be based on the time-out period, maybe when the game would auto-boot them in another 24 hours.

What Playdek has done is to allow the user who creates the game to specify a length of time for the game. This works like a chess clock, and the timer starts when you get the notification that your opponent has played their turn. (The options are 10 min, 30 min, 1 hr, 2 hrs, 1 day, 3 days, 7 days, 14 days, and 28 days.) They only send one push notification when it becomes your turn. If the game times-out, you only find out after you log in again.

That solution actually feels a bit overly complicated to me, and I’ve recently started playing Star Realms, which has a similar but slightly simplified scheme where you choose a “time per turn” limit when starting a game. (The options are 3 minutes, or 48 hours.) With the 48 hour turn limit, you get a notification twice, once when it’s your turn, and another when you have 24 hours left to play. (They don’t badge the app when you’ve got pending turns though, which is just PAINFUL.)

For Catchup, I’m using the simplest possible implementation of GameCenter, which is not to have timers at all. (Timers were only introduced in a later version of the API anyway, and I wanted to support versions of iOS farther back than that.) The way their push notifications for async games work is super opaque, (and they come from the GameCenter app, not your app, which is also annoying), and one of the biggest limitations of using GameCenter, in my opinion.

One other thing I have seen, (but don’t necessarily endorse), is the ability for the user to nag the player whose turn it is. I can’t remember what app it was that did this, (maybe Trivia Crack?), but there was essentially a button that you could press in the app to send a notification to the other player.

I certainly don’t know what the best choices are, but I do know that there are different categories of asynchronous player with very strong opinions about how to play. For instance, vocal proponents of short timers who only want to play games that last less than an hour or so. Whereas I personally prefer to play games with the maximum timer limit, because, for me at least, I tend to batch all my asynchronous game play in one or two sessions a day. (And some days I skip entirely!) So player choice seems important.

Yesterday I had the opportunity to play with Parse for the first time. (Essentially migrated a project from using Google Analytics to Parse objects in a day.) I never knew it was so easy, and I have to admit that now I sort of want to use it for an asynchronous game. We’ll see.

2014, a year of new platforms

2014 was the first year I spent almost entirely working on games. (One or two freelance projects didn’t qualify, but the majority of them were games, which is very exciting!)

As usual, I tried to split my time about 50/50 between freelance work and product development. I spent a lot of that product development time in 2014 working on Catchup. And, as expected, I still spent the majority of my time this year in Xcode, working on iOS apps. iOS is definitely the platform that it is still easiest for me to prototype in, simply because I am most familiar with it, and to some extent because I can re-use code from previous projects. I think I did less iOS prototyping this year than in previous years, but there are still a few new projects sitting around that I would love to give more attention to (and release) in 2015.

But the point of this article is that I also spent a lot of time thinking about different platforms. And when I started thinking back on this, I realized there were a lot of them. So here is a rough list:

  • Unity – I’d “played around” with Unity before, but early in 2014 I spent a weekend at the Global Game Jam working with a rather large team on several games in Unity. Since I was such a newb, I ended up just playing pinch-hitter, helping out where I could, and in general learning as much as I could from the other more experienced Jammers. I left the game jam feeling like I could code a Unity game from scratch if I had to, which was far more skill than I’d had when I started.
  • PuzzleScript – In the middle of the summer sometime, a few of us at #Doughvelopment (game dev co-working on Fridays from a donut shop) started playing with PuzzleScript. Mostly this was Ian’s fault, but several of us ended up working on PuzzleScript games. I was intrigued mostly because PuzzleScript is a language written to encode a particular type of game (box pushers in the Sokoban family) as simply and flexibly as possible. I got a couple of levels into a pretty derivative design before abandoning it, (in PuzzleScript it takes a lot of extra effort to be original, I think), but I spent at least a day working in the web-based editor, which is just very different from most of the coding I’ve ever done before.
  • Board Game Development – I’ve designed a lot of board games over the years… but very few of them have had the sort of iteration usually associated with a polished (or better yet published) game design. Board Game Development is the process of playing and testing your design, then iterating on the rules (or as in my case, specific cards), playtesting again, and iterating again, etc.. The actual work involved ends up being quite different from game design, and this year was the first time I actually spent any time and effort at it during work hours. I’ve sort of put that game away for the near-future, but I do hope to get back to it again in 2015, possibly in a publishing context.
  • Physical Games – This year I had some ideas for playground-sized games, including one idea that stands out above the rest. That game is something that I now consider to be a long term goal to actually see played / implemented. It will be expensive though, which is why it’s a long term goal. Incidentally, I can think of very few projects that qualify as “life sized” video games. There are a few, but nothing like what I’m envisioning. There is a blurry line here, for sure (is laser tag a life sized video game, for instance?), but the point is that I am moving slowly toward a real life implementation of this game. There will be programming involved, for sure, but that is only a small slice of the project in this case.
  • Unreal Engine / Oculus – I do occasionally have ideas that are “bigger” than the 2D puzzle type games I typically make. Adding the 3rd dimension is not something I’m excited about, but sometimes I have designs that feel like it’s probably necessary. I subscribed to Unreal Engine ostensibly to start working on some Oculus games. (As usual, I’ve got lots of ideas.) I made a tiny bit of progress toward that goal, (got some of the sample projects working with my Dev Kit 2, as well as watched a bunch of Unreal tutorials), but ultimately haven’t really started coding anything yet.
  • Processing / Arduino / L3D – I’ve always been peripherally aware of and interested in the Arduino / hardware Maker movement. In the fall of this year, partly as an extension of the physical game I eluded to above, I started thinking a bit about prototyping games with simple LED arrays. Then the L3D project fell onto my radar, and now I’m super into creating games for it. There is a Processing plugin to stream signals to the L3D, but in my testing so far, it’s relatively bandwidth intensive, so while I’ve done a bunch of work in Processing already (a platform I’d only dabbled in years ago), I’m now moving the project to “native” code running on the Spark core that powers the L3D. This means taking a step backwards in terms of functionality, but assuming what I want to do is possible, (reading Xbox controller input from controllers plugged into a USB hub that also powers the L3D) it should be much faster, and has the added benefit of not requiring a laptop/computer to run it on. I’m waiting for a powered USB hub from amazon, then I should have a quick test for this shortly thereafter. Anyway, in the mean time, I’ll be playing with some L3D visualizations needed to help “juice” the games anyway.

There are of course infinite things to learn and do, even limiting your activity to “game development”. I made a deliberate decision when I went independent to continue working in iOS so as not to lose the “depth” of skill needed to pick up a full-time job again if Abstract Puzzle didn’t work out, and I’m definitely not going to abandon that decision in 2015. That having been said, dabbling in new platforms gives you perspective! And as hot as IoT is right now, it probably won’t be a bad thing to have some microcontroller programming on my gamedev resume.

Q&A – Porting Board Games to Digital

I recently answered a short barrage of questions by some non-technical folks researching the business feasibility of board game conversion. Since I gave them these answers freely, I thought I would also post them here. This is all based on my own personal experience, so feel free to exercise skepticism and I absolutely welcome your thoughts or differing opinions in the comments below.

1. What resources estimates and how much time do you feel is needed to do a strategy board game conversion to digital?

The answers for this question are as varied as the answers to the question “how much time is needed to do a mobile game?” In my experience, if you’re paying your programmer(s) what they’re worth (which is not a given in the gaming industry), you’re probably looking at a budget somewhere between 30k and 120k. Less is certainly possible with an experienced team, maybe with a code base they’re reusing, but it would raise a red flag for me. (I get a lot of potential clients who come to me with 2-5k, and I politely tell them that we can possibly make a prototype without graphics for that much.)

2. If using Unity as a gaming language, what do you think is involved in porting to another platform say from iOS to Android or vice-versa?

I am familiar with unity, but no expert. (So take this with a grain of salt.) My feeling is that android is more work, what with supporting all the different screen sizes and hardware/processor idiosyncrasies, so if you’ve already done that work, porting to iOS should not be that much more difficult. (Depending on the project, of course.) Going from iOS to android on the other hand could take longer, especially for complex games. (It’s going to depend on how many screens or “scenes” you’ve got to prepare in unity.)

3. Are you aware of what the maintenance/support costs would/could be, if so what do you believe is involved?

This is a great question! Not something a lot of clients think to ask. It’s easy to throw something in the App Store and forget about it, which is exactly what everyone else will do too.

There are obviously diminishing returns though, so I recommend planning a release with at least one maintenance update about a week or so after the initial lunch, and maybe evaluate then whether it’s worth doing another “feature” update a couple of weeks to a month later, also with a follow up maintenance update if your budget can stand it. If the game is still doing well at that point, it’s a good idea to plan to spend some time and push out littler updates as frequently as you can, more for marketing purposes than for any development related reason. All of this will require developer involvement, but it’s the person crafting marketing and messaging that should be spending the most time after launch. I generally think this is underestimated, and can easily be a full-time task.

4. Do you have an idea of hosting (storage/bandwidth) costs?

This is only relevant if you are hosting your own server for some reason. The game should have a website, which is another often overlooked marketing piece, but it will cost far more to create that than to maintain/host it. (Hosting fees shouldn’t run more than $20/ month, or you’re probably getting ripped off somewhere. I pay $5/month + $10/domain, but that comes with doing mostly my own support.)

If you ARE hosting your own backend multiplayer server, you can think of it as another domain name. (It definitely cost you more up-front to develop, so make sure your dev is including that in their estimates.) And unless the game is super successful, most hosting plans should include enough bandwidth. If you get to the point where you are paying ala cart for bandwidth, it still shouldn’t be more than a handful of dollars unless you’re at an extreme end of the spectrum, which is a problem you wish you will have.

5. What’s your thoughts on the digitization of family board games, and what may happen, and when?

Well, “family board games” is a term that might mean a bunch of different things, but here are some initial off the cuff thoughts:

a) it’s already happening to some degree, see Monopoly, Scrabble, Jenga.

b) The family market is much larger than the hobby market, but much tougher to crack. Quality is going to be a very important consideration, as is ease of use and first-run experience, including tutorials and teaching.

c) It’s possible that the aforementioned digital game examples are mostly getting played by board game hobbyists, rather than the general populous you’d expect to be playing a family game, which would be hard to prove either way unless you are the publisher of one of those games.

d) In general, (this is advice I like to give to anybody thinking about physical game conversion), the advantage that board game conversions have over their fully-digital counterparts is that there is already a population that knows about that game and to a lesser extent how to play that game. So the bigger that group, the bigger your advantage. How successful your board game conversion will be is very much influenced or enhanced by how successful a game you are choosing to convert.

6. Are you familiar with Steam, and would you recommend porting or building for that platform?

If you want to target desktops (OSX, Windows, or Linux), then I would highly recommend building working with Steam. I cannot make a recommendation about whether those platforms are viable for board game conversions in particular. Steam is a bit like Apple’s App Store and Game Center rolled into one, but cross platform for desktop games. There is an API that you as a developer can write to, and implement Steam achievements and various other social offerings.

7. Do you feel the effort to port from say Android/iOS phones requires more work to port to Tablet versions as well, or not?

Generally there is a portion of every project devoted to UI work. The amount of time spent will be different for every project, but generally I think it’s a higher percentage of the project for games than other application types. Let’s say, for a game, 50% of the development effort was put toward UI work. If you had only developed for one screen size at that point, you might have to re-do or at least re-touch much of that work. If you plan from the beginning of the project for multiple screen sizes, you can save yourself a lot of pain in “porting” to a different screen size, but it is still more work, no doubt about that.

8. What about PC/Browser porting, are you noticing or see the need/demand or value in doing that, and if so are you familiar with the effort in that case let’s say after a mobile version has been completed?

I do see this happen from time to time, though not with a lot of board game conversions. My concern would be monetization, since the folks who play web-based games are used to getting their games for free, and you have to have a very large active userbase (in the hundreds of thousands, from what I understand, although I’m no expert) to make money with advertising alone.

9. How many people do you believe is needed to convert and maintain a board game digital conversion, and what roles?

For a “full featured” conversion, I see the following needs:
– Programmer/developer
– Artist/graphic designer
– Sound Effects person and Musician (often can be the same person)
– Some kind of project manager or person making feature decisions
– A person (or team!) in charge of marketing

I have worked on a lots of projects where there were a couple of developers who split duties. This includes several apps with Tysen Streib, who would expertly craft the AI and game logic, while I handled all the rest of the application, including ultimately integration of his code into the project.

Another optional role I’ve found myself filling briefly at the start of smaller projects is that of UX designer. It is always nice to have a blueprint to work from, and good wireframes can really speed up development as well as help keep your team on the same page if there are multiple developers.

The mix and makeup of all of these roles will be different on every team, no doubt. There are certainly some indie developers who tackle all of these tasks for every project! I’ve found that keeping scope small is always a good thing, work toward manageable milestones, and you’re less likely to be surprised by how long something takes you to complete.

More about me than you ever wanted to know…

So today an interview I did over at tech.mn went live. It’s part of a Nerdery-sponsored “know this nerd” series, so I’ll forgive them for using the term “nerd” instead of “geek” (which I generally prefer).

In case that isn’t enough biographical writing for you, I have also been meaning to post some of my responses to a game-related user-group application I filled out about a month ago. I’m not going to go into details about what the application was for, but let it suffice to say that I spent a lot of time on the application, but ultimately wasn’t accepted. So I feel the need to post a mashup of my answers here to salvage something from the experience.

The first question from the application, and the spark for most of what was written below, was as follows: Describe your work as a game developer. Why did you start developing and what do you hope to do as a developer in the future?

My first game designs were all variations on board games that I was already playing. I played a lot of chess as a kid, and have always been interested in chess variants. I re-worked this paragraph about six times, remembering earlier and earlier game designs, and just now realized that I can probably pinpoint my very first game variant, and it was actually published! One of my grade-school friends and I played a lot of an abstract strategy game called Terrace. Terrace had a newsletter called Terrace Times that you could write-in and subscribe to. The newsletter published variants written by their readers, and you guessed it, my friend and I wrote in with a few of ours. If I remember correctly, we wrote up about four or five designs, and they published two of them. [I’m 90% sure that I still have the issue in storage somewhere! TODO: dig those up and post them here!]

Later, when we were both just about done with high school, that same friend and I got really into playing an early first-person shooter called Marathon, and we made maps for it that other people actually downloaded over the internet. (This was about 1994 or so, so that meant over dialup!)

Fast forward to 2006, I had been working as a backend web programmer for two or three years, and I realized that making my own video game was actually an achievable goal! It took me over six months working nights and weekends, but my first video game was called Go Tetris. It was the first and last thing I ever wrote in Flash, and is still playable online at go-tetris.com.

I’ve always had a ton of game ideas, and when my wife bought me an iPhone as a wedding gift (giving it to me early so I could take it on our honeymoon!), I knew from the second I started playing games on it that I wanted to make some. The SDK was announced the following year, and even though I’d never worked in a compiled language before, I started writing a game for it right away. That game took about half the time to make that it took me to make Go Tetris, and it came out in 2008, was called Action Chess, and like Go Tetris, combined two of my favorite game genres, chess variants, and action puzzle games. It made a meager $1000 in the App Store, but that was the first $1000 I ever earned in game development. [EDIT: I just remembered this is not quite true. I earned about $6 in ad revenue after Go Tetris was linked-to from the US Go Association’s website for a week.] Learning iOS development was a good career move, and about two years ago I was able to quit my day job to do iOS game development “full time” (one of my first contracts as a freelancer was working on a little abstract strategy game for Tasty Minstrel Games called For the Win).

In March of this year I was privileged to speak at Game Developer Conference in San Francisco about “Usability Lessons from Mobile Board Game Conversions”.

I keep a design journal where I write down all my game ideas, and I usually add one every week or two. I’d say they run about 40% physical (board) games, and 60% video games. On rare occasions I get really enamored with one of my ideas, and have to start working on it right away. I’ve got several prototypes like this that are pretty near completion. It’s standard practice for me to “sit on” a game that I feel is pretty close to finished because I don’t have enough time to give it the polish I think it deserves. Anyway, the point is that I can’t imagine NOT working on games. I’d definitely be doing it even if it hadn’t worked out for me to turn that into a career.

Here are a list of games I’ve worked on that were published in some way: http://chesstris.com/about/#bibliography

I’ll fully admit that most of my games are unlikely to be commercially successful. At any given time, I’m probably working on two or three games at once, and juggling a freelance project to pay the bills. (Sometimes those are games!) My fondest hope is that one of my projects does give me the kind of return that I can stop the freelance work entirely, and continue to make the games I most want to play, without compromise or constraint.