I didn't have any game coding to do today, I can't find any more bugs and I've integrated all the artwork I've got so far. So I spent today working on the plan for the next iteration of the engine. The last version of the engine was HEAVILLY influenced by Superpig's enginuity and it really helped - though I never once copy/pasted code, everything was adaption. It was the first engine that I got to a sufficient stage to be able to make a decent sized game with. But still it needs to be changed. For one, I had a horrible bug involving virtual inherritance and the memory management system that I just couldn't work out. The engine kernel was close to the one from the articles, and it worked perfectly for me. I'm going to make it sturdier this time round but it'll basically be the same. In the last engine the kernel stored the other subsystem kernels like the sound system, and the graphics. Which meant i had to do this CKernel::GetSingleton()->GetSound() everytime I needed the sound kernel, which just looks icky, so this time major kernels like that are going to be singletons. Everything is being thought out more, with special emphasis being put on ease of use as opposed to supporting everything under the sun. The design doc for this engine is going to be huge. I've only written up one or two sections but each one basically describes each class in a system along with important implementation points and all their major functions. Hopefully if I do this right coding should be much quicker.