Thursday, 28 July 2011

Mired In The Middle

Or, Why Games Design Is The Easy Bit

Well, I'm currently having a little bit of trouble with Gestalt. The design is solid, but there's a lot of annoying little things that need to be done and I'm mired right up to the eyeballs in them. Even getting to first playable is proving to be an exercise in deep irritation. The game needs to be working already, but I'm spending what little dev time I'm allowed (in between personal crises and annoying business tasks and trying to squeeze enough cash out of my friends to pay the office rent) implementing a whole bunch of structural crap to prevent me having to do too much of this again later in the line. And ProtonSDK, while handy in that it gives me a shiny Android and iPhone build path for free, keeps throwing up more and more stupid bloody problems.

As an example from Gestalt, the template system is wired into the rules system, which is in turn wired into the paradigm system. All this stuff is designed to work via some easily changed text files, but since I only have 3 templates right now, I've cheated and put in some hardcoded basics. But then I discovered that I needed to cache the currently active ones. Which should be easy, except it turns out that the VariantDB structure contains no capacity to modify its content and, here's the kicker, actually destroys all of its objects on clearing! So no VariantDB for me. Except I used VariantDB for a reason, as at some point in the future my Entity-extending Templates will be actual renderable EntityComponents, and so now I'm in a situation where I have to filter things out of a VariantDB (effectively a Variant dictionary) into a VariantList, a straight array-like collection. Aaaaaand then I discover VarintList has a hardcoded maximum of 4 elements!

I should perhaps be clear: all this crap is not unusual for a development period. But this is the bullshit fucking about period that takes time. If I'm working as part of a team I have a constant inbuilt drive to finish each element in order to permit my team-mates to progress on their work. Working alone, however, means I'm mainly just floundering in a sea of annoying petty issues and stupid bugs. It's this period that always consumes my home projects, and I'm having to fight hard to prevent it consuming Gestalt, especially with paid work floating around waiting to steal my time in the office.

Really, I should at the very least try to remember what I said right up at the beginning, in bold. Games design is the easy stage. No amount of Unity or similar middleware can take away the need to actually build the game, and that will never be easy. The Development Swamp - located between Creative Surge Design Land and First Playable City - is a dangerous and unforgiving place. Hopefully I'll be out of it soon.

Thursday, 21 July 2011


Paradigm screen has been implemented, refactor is mostly done. Moving on to linking Paradigms to templates.

In other news, GDC Europe next month is now confirmed. I'm going to be spending an entire week in Cologne sharing a room with a woman who isn't my wife. I expect hilarious consequences aplenty. On the plus side, she's a disabled fluent German speaker, so I can explain to people that she's my translator, and she can explain to people that I'm her assistant.

In other news, booking train travel across Europe with a month's notice is surprisingly difficult.

Friday, 15 July 2011

Gestalt Progress

Been a slow week due to more moving and numerous personal issues. School holidays now, which should mean an acceleration. Discovered a massive design flaw in my Paradigm/Rule system which would have spawned hundreds if not thousands of memory leaks. Refactoring is underway and will probably continue on Friday. Then Construct Templates and first playable.

Sunday, 10 July 2011

Eyes, Brains, The Wood, and The Trees

Excuse me for a little while as I indulge a rambling personal health anecdote. I promise, this is relevant to games development, I'll get to it in time.

I have a sensitivity to bright light in my left eye. As a result of that highly selective problem, each summer that I spend a significant amount of time outdoors results in me screwing my eye closed, and has since I was very small. As a result, I have astigmatism in that eye from constantly squeezing it, and it worsens every summer as the bright light once again forces my left eye closes.

As a result, I tend to wear glasses mainly during the summer months. But something that occurs to me every single year when the time to wear glasses comes around again. See, regardless of the worsening summer brings on, I'm to some degree unable to see properly in my left eye all year round. As a result, my vision has adapted. Although I generally operate as if I had full monocular vision, in fact I'm massively dominated by my right eye. I somehow can still gauge distance, possibly by the degree of blurriness (which I'm not consciously aware of, since my right eye is so dominant), but ultimately everything I see comes via the right eye.

And so each year I climb into my glasses once again and each year I am temporarily taken aback by the sudden realisation that I do not actually normally see in stereoscopic 3d. You can probably imagine how weird it is to suddenly realise that you've been seeing things wrong and didn't know it. It's a creepy experience, and it never really gets any easier no matter how many times it happens. It also leaves me staring at things at inopportune moments, which can occasionally get me into trouble.


Anyway. The point of this anecdote is that every year, around this time, I'm forcibly reminded that perception and the apparently objective way it occurs are completely and utterly subject to the many peculiarities of the human brain and the various other squishy meatblobs that feed it information. I had another reminder of this a couple of weeks back.

We got a bite of interest in The Obelisk, the XBLA title (written in XNA) we developed last year with our startup funds. It's been languishing in Development Hell ever since, unable to find a publisher. When we finally gave up and mothballed it, I had just temporarily given up attempting to implement deferred lighting due to severe problems getting sane results when regenerating world-space co-ordinates from a screen-space co-ordinate and a depth value. Having sweated blood over PIX for days trying to work out what the hell was wrong, when the decision to abandon the project came I was quite happy to say goodbye to it.
So, it had been nearly a year before I came back to the project. And I suspect many of my readers already know what the result was; I set up a depth-render to test the deferred lighting system, and immediately spotted what the problem was. And fixed it. In minutes.

As it happened the bite of interest didn't come to anything, but once again there was that feeling, much like the glasses, that between my last contact with that code and this contact there had been a great deal of change and movement, not in the code, but in me. Not that I was a better coder now, although I do hope I am. But that I simply wasn't the same person any more.

So, this is the lesson I've taken from this. Like most people, I know to stand up and walk away from the code when it starts to snarl up in my head. But generally I've been trained not to completely abandon a piece of snarled-up unresolvable, but to hand it to someone else. At Broadsword I could do that; there was always a Jim, a Fabs, a John available to bail me out when I needed a knowledgeable second pair of eyes. But as an indie, there's only me and Ian, and Ian is not really a graphics coder. So who do I have available?
Simple: me. I'm an indie and therefore I'm not beholden to publishers and management. I don't need to document and account for every last bit of development. I am not required to deliver a set of bullet points by the 14th or face liquidation. I don't need to pretend I'm making widgets in a widget factory. And as a result, if I need another pair of eyes, I can afford the time to simply abandon the relevant bit of the project entirely until such a time as my perspective shifts, my eyes are suddenly seeing in 3d, and I can solve the problem with a wave of my hand and a slightly bitter smile at the very idea that it was ever a problem at all.

Wednesday, 6 July 2011

Gestalt Progress, Possible GDC, and RPG Cravings

Well, with the distractions and the move out of the way, I've been back on Gestalt again. The three main Axon colours are now in play and interacting as they should, which is nice to see. Need to tweak the physics to make them feel different as well as look different, mind you. Blue Constructs are working, so Paradigm should now be flowing. Next up - Red Constructs, Construct Templates, and the Paradigm Screen. Also more work on embedding the Rules system further into the game.

I'll put up a new video once the Red Constructs and Templates are working.

A wonderful friend of mine has offered to pay for me to go to GDC Europe this year. This is an incredible offer, as GDC Europe is not remotely cheap, and comes with a visit to Gamescom and a week in beautiful Cologne as part of the deal. I'm thinking of accepting on the condition that she come with me - she's a German speaker, so she'd be practically useful, and she loves Germany but has never visited Cologne. Also I'd get to visit Yuri and Gleb again, this time under much less subdued conditions. The whole idea makes me very happy indeed.

Finally, Cerys has been playing the entire set of translated Final Fantasy games, from 4 onwards. It's making me crave old-school RPGs like mad. I want overcomplicated stat systems and turn-based battles, dammit! I'm going to remain focused on Gestalt, of course, but I'm definitely starting to veer towards going ahead with Homunculus as the next project.