Gamelogic, our game development tools company, turned 1 yesterday, at least we did on paper. We were busy some time before that, but our official date of incorporation seems like a good day to celebrate and reflect a bit.
Roughly a year ago, I was sitting at a client (I was still doing some contract work then), when I got a Whatsapp message from Jonathan:
Check the forums!!!
We had released Grids just a few weeks before, and still had no sales. It was frightening; I think more so for me than for Jonathan, because I convinced him that selling a grids library was a good idea, and so far it looked like I might be dead-wrong. And he moved from the other side of the country for this!
So, I checked the forums, and finally, on that day, we got our first customer: c-Row on the Unity forums. Somebody else thought a grids library was worth paying for too :) We were in business!
Since then, we gained a few hundred customers. It’s been an exciting year of ups and downs. When you start something new, you know there will be many things that will surprise you. We took some steps to minimize this, but couldn’t escape it completely. Here are some of the things that surprised me.
I had it in my mind that we will have a “business part” and a “technical part”, and that these will divide neatly and function independently. But it turns out the two aspects are heavily interwoven, and everything we do has a technical dimension to it. If we commission art, our brief looks like a math paper; if we launch a marketing campaign, we need to hire a programmer (!); if we evaluate possible partnerships, we have to look as much their code as the business structure.
Even if we make a Google ad, we have to figure out how to fool Google to distinguish between people interested in “game development” and people interested in “games”. I guess I also did not realize how many people outside our world don’t know what a hex grid is (never-mind all the other funky stuff our lib can do).
Before we started doing support, I thought it would be boring and something that we would get someone else to do as soon as possible. But it soon turned out that support is one of the aspects of our business I enjoy most.
There are of course routine questions, and occasional criticism. But there is a good deal of interesting problems too: how do you make a grid that grows dynamically over time? how do you make an infinite grid? will path-finding work on nested grids? can grids be self-managing? can different cells contain different data? These problems come in endless variety, and I love to think about them and solve them. Moreover, it gives me insight into the way other programmers structure their game logic, often in ways that I did not even consider (and often, exposing some of our hidden assumptions and flaws). And all that is besides the useful feedback for our product itself.
In our business plan – if you can believe we have such a document! – we listed “the difficulty of reaching customers” as one of the risks, so we knew it would be difficult. But wow… we severely underestimated just exactly how difficult it would be. It was especially frustrating at the beginning, before we had some traction. It’s a very niche market, and other than Unity, there are very few places where we could get some exposure. We had to rethink many of our assumptions and find inventive ideas for getting noticed.
I still get a little nauseous when I think of how much money we spent on advertising and how little it paid off. What was especially frustrating at the time, was that we had little insight into why it did not work. Were our ads bad? Was our product uncompelling? Were we using the wrong channels? Was our landing page poor? We did a lot of AB-testing, and unlike what they tell you in marketing books, we learned very little: this ad copy works better than that copy… unless we use this image, unless we use this keyword… and so on. We will turn to advertising again at some point, but for now, we will focus on other strategies.
We conceived Grids as a data structure library amplified with functions to take care of any rendering math you might need. I wanted to avoid getting into explicit rendering, partially because it keeps the library extremely flexible, and partially because it’s not my domain of expertise. But it became clear pretty soon that this was a mistake: customers expect a grid package to solve their rendering problems too. We had to figure out how to render sprites without border artefacts (and thank goodness Unity introduced their sprite border bleeding tech!), how to render partial grids, how to render very big grids, how to create meshes for grids, how to render grids on textures, how to handle depth layers in isometric grids…
But more than just providing tech for displaying art, we also had to figure out how to make art for our grids… We had to develop a way to make tileable textures for hexagonal (and triangular and rhombus) tiles, how to design tiles that line up so that they can depict contiguous features, how to break tiles into layers to reduce the number of tiles needed, and so on. I think I learned more about art creation in the last year than I did in several years before that – and Gamelogic is a software house!
I would never have guessed that we would create so much content besides our actual library, and we never planned for it. Now we have massive amounts of content (~40 examples that ship with grids, ~30 Games, ~10 additional examples) that we need to maintain with our library. The effort of this rivals the effort of maintaining the actual library (and we are only now starting to incorporate these as part of our maintenance effort).
A lot has changed for us over the year. What has not changed is the excitement we feel for what is to come – new ideas, new strategies, maybe even a new grid or two ;) I can’t wait to make another bunch of interesting mistakes!