Dusting off the old
I've recently decided that there's two things I need to look at lately to get me back up to speed. One of them is DirectX11 and more modern graphics coding. I'll talk about the other thing later on.
My old codebases were traditionally built upon OpenGL and the fixed function pipeline. Yes, yes, I know. I was lazy and didn't want to learn all this fancy shader stuff - why did I need to when I could just do what I wanted quickly in GL and my games were never going to be that graphically good anyway, right? Well in DX11 we basically have no choice in the matter, so it's about time that I learn this stuff.
I had two choices; one is to start afresh and start implementing a basic DX11 engine from scratch. The second was to find an old project of mine and retro fit it and then improve it over time. I chose the latter - an old shump project I was working on from 2004 seemed to fit the bill, so I picked that up.
So far, it's mostly been about ripping out SDL, replacing it with raw Win32 code and then pulling out the OpenGL code. All this whilst getting back up to speed with my old codebase. One thing that really struck me was how much my coding practices have improved since then. There's a lot of memory management stuff I should and will be ripping out later (I used superpig's refcounted pointer class from Enginuity...!), and there's probably too many singletons around (although I've kept the calls to them clean). The asset loaders and resource management really needs improving, moving away from what's there to perhaps adopt a more handle-based approach to load/unload on demand.
There's also other stuff, such as there being too little blurring between the various layers in the engine (input, view, logic) - so I'll probably be restructing it all to follow a more MVC style pattern which clearly separates the "views" from the control (input/network) and the game model (logic). A bit more data-driven stuff couldn't hurt either.
It could be quite an interesting project.