Big milestone in developing my stealth exploration game is marked by second-guessing and regrets. A bit of a grim update this time, sorry folks…

Game Development Progress

Since the last update, I made some pretty huge strides! And just because I like bulletin lists:

Whole new important (albeit small) area

New plot character in (you can see in the header image)

All key plot clues and keys (though requiring proper writing)

All plot-related dialogue choices and influencers (i.e. affection/drunkness/items) tho just barebones

Set up critical quests and the logic governing them

Filled in remaining patrol guards

Basically, in a still unfinished and placeholder-y state, the game is actually fully playable start to finish now, menus included. Yay! But that’s where the celebration ended…

I made a huge mistake

At this point, I turned to the Unity Asset Store to pursue further utilities, and realized I really approached the past 6 months of development wrong.

Cue finding a plethora of marvelous systems and scripts to basically do everything I’ve cooked upmuch faster and usually much better. Compare ProBuilder for super fast level design with my modular geometry pieces that took ages to lay out and have some performance problems? Compare RAIN INDIE for rapid AI behavior management to the hours I spent trying to leverage the (somewhat limited) Unity navmesh and character controllers? Look at the Free Raw Mocap Data for animations my models can’t use cause for some reason I did the rigging all wrong. Or even UFPS a complete FPS toolkit that probably provides half the gameplay I wanted out of the box. Playmaker, UScript, Dialogue System, KGFCamera, the list goes on…

Some of these are free, some not, but looking back at the past six months of development and realizing I could have gotten this far in half the time with better solutions, well… that facepalm will leave a permanent mark.

Blindness of the Ego

So how come I had this epiphany now, and not 6 months ago? Well, a few reasons:

I did browse the Unity Asset Store initially and got some assets at start, but not thoroughly enough . It now took me 3 days of browsing/testing/watching tutorial videos to really find the “gems”.

and got some assets at start, but . It now took me 3 days of browsing/testing/watching tutorial videos to really find the “gems”. Working on few proprietary games from scratch, I’m used to coding things myself , and didn’t realize how extensive the Unity Asset store is .

, and . I was worried about conflicts and incompatibilities between 3rd party assets.

between 3rd party assets. I’ve still been learning Unity so did not want to complicate the curve by having to learn several other frameworks on top.

so did not want to complicate the curve by having to learn several other frameworks on top. I can sometimes be a bit of a control freak, wanting to meld the code to my own (not always good) standards, instead of relying on someone else’s.

In any case, one thing I’ve learned about indie game development – finishing a good game is more important than the most elegant solutions under the hood. And yet, I failed to heed my own advice. Even back on Postmortem: one must die I spent a lot of time ensuring the engine was flexible and reusable, and how many times did I reuse that?

When your Perfect Solution is Flawed

The other factor gnawing at me is my super flexible node-based conversation and quest and story flow system that is so flexible its horribly error prone, relying on strings and runtime scripting to communicate with the game. A small typo can break things, and worse yet, you wont know it until you trigger that specific scenario. And in a heavily branching game, testing all the possibilities is… dreadful.

That is a problem for which I couldn’t find a clean solution short of re-creating everything entirely in-Unity. A new quest/convo system with its own graph editor, a way to store it in an asset (which my initial experiments weren’t very successful with Unity’s breaking inheritance) and re-creating all my conversations and quest logic in that. A big time sink and hold-back, one that would lose me the ability to write conversations outside of the Unity project.

So what now?

Being more aware, my instinct is to get the better tools and rebuild the various parts of the game using them. But I fear that would be once again giving in to my perfectionist ego – holding game development back in pursuit of the elusive “perfect solution.”

I’ve been beating myself and mulling over this for the past several days, and decided instead, I will just carry on. I will only get those 3rd party assets I can still easily integrate, and put extra runtime checks into my convo/quest scripting system rather than re-creating the whole thing. As I said above, the game “works”, even if a bit wonky at times, and it’s probably faster to iron out those woinks that rebuild at this point. So I will finish it – not some beautiful, reusable game framework and asset base, but a playable and fun game.

And when I start on the next one, I will take the lessons learned, the new solutions found, whatever of my wonky codebase fits, and start anew. Smarter.

(And who knows – maybe I’ll move to UDK by that point so all my unity code would be useless anyway!)