Dev Notes 5/9/2017

tl;dr version: Building all of the stuff "around" a game that's not actually the game itself is a lot of work. After user testing, going back and revisiting core gameplay design.  Next month or so, sorting out nasty IAP and Push Notification stuff.  Probably a good 4-8 weeks from first playables for super-early-access testing.

So, here I sit, May 2017, evaluating where I'm at with my first title.  I basically started work in February.  I was out for the last two weeks (spring break + nasty stupid cold), so really we are talking about something on the order of eight weeks worth of work spread out over a period of twelve since I started this venture.

First off, here's a (partial) list of things I've technical things I've learned/done in that period:

  • Building UI skins in LibGDX, as well as quite a bit about Scene2D for UIs.
  • A ton about OpenGL shaders, in particular fragment aka pixel shaders.
  • Writing good Java generics to wrap & simplify multi-threaded HTTPS/JSON client side web service requests in support of a single-threaded OpenGL game.
  • Strategies for asset management.
  • Android-style 9-patch for UI (this tool worked well for me)
  • A fair amount about how Gradle works (I'm mostly used to Maven)
  • How to build and use BitmapFonts
  • Using headless LibGDX for testing
  • Made a very tiny PR contribution to LibGDX 1.9.6.
  • Latest Spring Boot, including the Spring Data CrudRepository for easy RDBS integration.
  • Tools & pros/cons of different approaches for texture packing.
  • Tested deployment of Spring Boot app to AWS, Google Cloud, and Heroku.  Tried out the app on both MySQL on AWS/Google and Postgres on Heroku ( made Postgres really simple for local testing on Mac OS X).
  • Used Postman for testing web services.
  • Learned the basics of how Apple Motion works - a good tool for pre-vis of animations as well as generating animations.  Native image sequence import/export support FTW.
  • Company setup stuff, including setting up HootSuite to manage social networks, setting up this website, and also a million other minor business-related things.  This stuff is either really fascinating (if you want to be an entrepreneur) or boring, if you've done it before.  I think this is my fifth time doing all of that startup stuff now, so, umm, yeah.

I also went down a few rabbit holes that wound up being dead-ends:

  • Two LibGDX visual editors are now abandoned, including both Overlap2D (no updates for a year) and VisEditor (officially deprecated).  Spent more time than I should have trying to get these working.
  • OMG Unity3D support for iOS is a mess right now - you can't run on the iPhone simulator at all, and the docs pretty say that the only way to test is on a device.  O.o
  • There are a lot of otherwise nice looking game engines out there that don't seem to support seemingly basic stuff like IAP, notifications, HTTPS/JSON web services, etc. At some point I may post a list of things you should make sure your game engine/framework supports if you ever want to, you know, deploy it.  O.o

The dead ends, of course, didn't feel like it at the time, but yeesh, I would kind of like that time back now.

The hilarious thing, of course, is that I've actually spent relatively little time doing what most people think of as actual game development.  I actually had the core of a game working as a local single player-only game back in mid-February.  Building a prototype of a game design in something like Construct 2/3 (or even Unity3D, if you know how to use it) is insanely fast and easy.

Mostly, the last few months have been a sea of what I think of of as meta-game work. Things that are already basically working:

  • User registration/log in/log out
  • Automatic binding of device to user
  • In-game currencies
  • Basic interactions with game server[s], such as saving & playing turns, etc.
  • Automated test/deploy systems for game servers

You may wonder why I've spent so much time working on all of that meta-game stuff. Long story short, in 2017 it's more or less critical to the business model.  Between piracy and marketing issues, releasing a one-off title with no ongoing customer relationship is more or less a waste of time.  (Check out this GDC talk - "The Last Game I Make Before I Die").  So, one way to think of these first few months is as doing PoC game dev work + building out plumbing that's relevant for just about any turn-based title. Eventually, I plan to get to where I can produce turn-based games pretty quickly, with a standard framework for all of that meta-game stuff.

The Next Few Weeks

I need to build and test out a few additional meta-game things, including In App Purchase (IAP) and also Push Notifications.  Both of these are kind of nasty to get going - they are a perfect storm of platform-specific behaviors, one-off security systems, client/server interactions, etc.

And, of course, the actual game itself.  I initially started with a game concept based on an existing IP, but after doing user testing and some business planning work I've decided to go in another direction.  I'm already a few weeks into a design doc that's heavily inspired by a combination of pixel art, classic sword & sorcery fantasy, and one of my favorite all time indie games, FTL.  Once I have a design doc, I'm expecting the actual game dev work to go pretty quickly.

The plan for the next 4-8 weeks is to sort out the rest of the meta game stuff, get the design more or less done, and with luck pull it all together into a decent playable.

If you responded earlier to my request for playtesters, please know that I have all of your kind offers recorded, and will be reaching out as things move along.  There's no point in sending out test builds that I know are broken, but as soon as I think they are worth looking at I promise I will be in touch.

In the meantime, feel free to reach out if you have any Qs!

Will Iverson