Ah, the entity-component system. It was like (supposedly) finding the silver bullet I’d been dreaming about with programming in a way. It was a system designed in such a way as to throw off the shackles of multiple inheritance pitfalls and warmly embrace flexibility. Admittedly, I even felt a bit guilty! I mean, a system that can easily conform to be whatever it needs to be? Pinch me; it seemed too good to be true.
Well, maybe it was, at least pertaining to my lofty ambitions.
Three months into #1GAM and I was still getting rattled with trying to find that flexibility ultimatum for my game engine. Just when I think I have it figured out, another scenario pops in my head. Is my system able to cleanly handle this? And then… well, you know, right? That analysis paralysis deal…
It certainly hasn’t been a waste. I’ve at least been DOING SOMETHING. I could have sat on my hands for the next year trying to envision the perfect game engine and the year after that getting ransacked by the illusions of my idealistic visions. If anything, the silver bullet doesn’t seem to exist, because game to game things are DIFFERENT. Trying to engineer pure, unhampered flexibility into anything can be an exercise in driving one’s self nuts.
So what does that mean? It certainly does NOT mean that my engine is a throw-away endeavor. The entity component system is still fantastic. Rather, I think it may be time to narrow my design philosophy. “Flexibility” may be a bit too broad in terms of a primary goal. Flexibility how? In what specifically? Focusing harder on a couple facets of flexibility will probably be a whole lot easier than trying to promise the moon. As to what those facets are… well, at least I’ve got nine months left to figure it out, huh?