Fri 20 March 2020

I start­ed writ­ing my first en­gine prob­a­bly three years af­ter I start­ed game pro­gram­ming. The idea of hav­ing a re­us­able tool­kit to speed up de­vel­op­ment of games sound­ed very in­trigu­ing and even­tu­al­ly evolved to a feel­ing of “stack­ing tech­ni­cal whealth”, al­most like a form of in­vest­ment.

That en­gine I called “Very Sim­ple Game En­gine 2D [VS­GE2D]” and I gave up af­ter I had ba­sic WASD con­trols to move a sprite through a tilemap to move in­to.

When Vhite Rab­bit orig­i­nal­ly start­ed, I start­ed build­ing the “Won­der­land En­gine”, which is prob­a­bly the sole rea­son we nev­er got a game out. The blender plug­in that com­prised our ed­i­tor was a re­al­ly cool way of merg­ing as­set cre­ation with game meta­da­ta, but turned out to be a hard de­ci­sion, since in­te­grat­ing the game run­time in­to blender was un­nec­es­sar­i­ly dif­fi­cult and mak­ing very game-spe­cif­ic tools was more dif­fi­cult. The fac­it was to split meta­da­ta from as­sets like ev­ery oth­er en­gine does to have more con­trol over the as­set pipe­line and to be able to change the as­sets with­out af­fect­ing the game meta­da­ta.

Just re­cent­ly, June 2019, I start­ed rewrit­ing 90% of Won­der­land En­gine to make it a We­bXR fo­cused graph­ics en­gine for the web with a stand­alone ed­i­tor ap­pli­ca­tion and We­bAssem­bly run­time.

But­ter­fly Ef­fect

One of the things that is most im­por­tant when build­ing an en­gine in my op­pin­ion is to be able to pre­dict when and how de­ci­sions you make ear­ly in de­vel­op­ment will blow up. It is al­ways sur­pris­ing how ev­ery lit­tle de­ci­sion (es­pe­cial­ly the non-de­lib­er­ate ones) come to haunt you on­ly months lat­er.

That gives you an op­por­tu­ni­ty to refac­tor huge por­tions of the code, which will make it feel clean un­til one of the de­ci­sions start haunt­ing you again. Ev­ery time you do one of these, you will have learnt a per­ma­nent les­son, though, which would help you build the next en­gine bet­ter.

Re­ward­ing

Game en­gines are (at least in my view) very com­plex projects and re­quire ex­treme care with their de­sign. The re­sult, though, is some­thing that em­pow­ers peo­ple to an ex­treme de­gree, as in en­abling a new lev­el of fi­deli­ty or gen­er­al­ly mak­ing de­vel­op­ment more ac­ces­si­ble.

Build­ing a game en­gine to me feels like cre­at­ing the tools that al­low mas­ter­pieces to be cre­at­ed that would not be pos­si­ble oth­er­wise.

Check out Won­der­land En­gine if you’re in­ter­est­ed in the en­gine I’m work­ing on.