The advantages and disadvantages of making an engine.

Before starting to work on this game, I decided that if I go with an engine everything would go much faster and smoother but unfortunately even though using an existing engine helped much, for me it seemed way too “magical”. It reminded me way too much of those days when I would open Blitz3D and write

(not exactly B3D, just some pseudo code)
loadModel model, “crap.b3d”
PositionModel model, 12,0,32

in order to get everything done. It was just way too easy, and it lacked real challenge. The idea I always have in my mind is _“If my project fails, at least I learned something” _but that was just not possible when most of the fancy functions were hidden away from me.

The biggest advantage of making your own engine, is like I said : challenge. Making a good engine can be one hell of a challenge, and optimizing it can be endless but that’s what keeps most programmers motivated.
A project that offers no challenge is boring and it is bound to die.

The second advantage is that you’ll be coding it, and you know what you need and you work the way you want to. You’ll have an engine following your personal workflow, you’ll be more efficient when working with it, and that’s more fun than browsing through APIs and tutorials for hours just to get the idea on how their engine handles everything.

The real disadvantage is the fact that it takes away too much time, reducing the amount of progress committed to the actual game to 0%. Getting stuck on difficult parts is another time-eater, putting everything on-hold until that darn thing is done can lead you to days of working like hell. There are also traps when working on engines, and those would be the endless amount of optimizations and refactoring you can do to the whole structure of the engine itself.

Anyhow, the context of that picture above : my result of my new material system which I’m completely happy with. I spent weeks thinking how I would code it, because not only materials were involved but the whole rendering order, sorting and batch handling needed to be adapted as well in order to preserve the performance. What I had previously was one texture and shader per model, now I’m able to apply different shaders to different parts of a single model =)

Imagine having a building with fancy eye-candy crystals on them, wouldn’t that be awe?