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.