The highway to hell is full of good intentions!
I wanted to focus on the development of the game itself, and I was creating a new enemy type (“Frost Touch”, a skeleton that slows down attacks when it hits). Visually, Frost Touch is different from the other skeletons because of a particle system:
The effect was looking pretty good in the editor, but when I added it to the game and the character started moving around, the effect became super-ugly, because it is a very subtle effect that takes some time to “change”. That meant that the creature would move away and the particle system would stay put for some time, breaking the illusion of “icyness”.
I started tweaking the effect, but it became painful pretty fast, since every change to the effect would make me reload the game… so I decided to add an auto-update feature to the engine… I could have gone with a quick and dirty solution on this, very special case, but I decided to tackle a huge task instead and rebuild the resource managing system.
The idea is to get rid of all pointers to assets/resources in the engine, so that if I want to change something, I just have to change in the resource manager and the system will react to it… Other additions (since I’m at it) is to add the groundwork for a caching/preloading system and other goodies.
Unfortunately, this implies changing about 1000 different files and classes, with all the problems that will probably come from that… There’s a series of behaviors that aren’t defined properly with this new system. For example, now I have an animation controller tied to an 3d object that makes it go up and down… If I change this object, it will get internally destroyed and replaced with another one, but since the animation controller is tied to the original object through the reference system, it will be destroyed as well, instead of just “pointing” to the new object…
I have some ideas on how to change this in an easy way that doesn’t make me break most of the architecture (since the reference system is so useful for other things), but this will be a big change in the system…
Afterwards, I hope I can prototype stuff pretty quick, changing textures, shaders, effects, etc, all on the fly without having to reload the game! It’s one of those changes that delay development to increase the speed at the end (at least, I certainly hope so… I’ve already put about 11 hours into this, and I’m about only 30% through)!