I have returned from a one-year stay in Norway and finally find the time to program again! I got a new graphics card to be able to fully use the power of Direct3D 10 and OpenGL 3.1 and installed the latest Windows 7 RC, and I love it!
But I had to admit that the engine, with its current design, is a dead end. So I started from scratch. I've been building up a stable foundation first, utilizing all the knowledge I gained in the process of building the previous one. Now I'm re-implementing all the features from the old project. The most important changes in design are:
- game state managment
- use of interfaces for sub-systems like graphics, audio and scripting
- integration of more third party libraries, first and foremost boost
The renderer is still using OpenGL, but I'm slowly switching over to Direct3D 10. I might keep the OpenGL renderer for compitability reasons, though. After all, it's the API I know best. Font loading and rendering is realized with the Freetype library.
Sound output is powered by OpenAL, which is really easy to use if you're familiar with OpenGL syntax, and I've added LUA scripting. Initially, I wanted to expose most engine functionality to scripting and use it as the primary way to work with the engine, but I soon realized that it's not a good idea. I will limit its use to in-game events (HL² style) and material definitions, I guess.
For the new renderer, I want to use a deferred rendering approach to keep the rendering pipeline clean and simple. For shadows I'll stick to variance shadow mapping I guess, using a geometry shader to render shadow cubes (for omni-directional lights) in one pass. But there are still a lot of questions: Should I use one shadow map per light? Or one per mesh? Or just one global shadow map that is being re-rendered before every lighting pass? How to do particle effects? On the CPU alone? With a CPU/pixel shader combination? Or purely on the GPU? We'll see.
And yes, I know what they say: Make games, not engines. But I'm finishing my bachelor's degree in winter, so I have to start applying for master courses soon.. and for this, I'll need something to present my skills. So maybe, just maybe, I will be able to provide an interactive demo or at least a high quality video around October :)