Just finished another Quake playthrough; the engine is starting to feel very robust now.
Performance-wise I'm at about 99% of the old DirectQ speed with simpler content, but as things get more complex it pulls ahead, sometimes by a very large margin. The changeover to D3D11 was far more involved than I had thought - this time last year I was under the impression that having everything using shaders, vertex declarations and vertex buffers would mean that I'd just need to go through the code and convert the API calls from 9 to the 11 equivalents. Big mistake - 11 is set up to work and be used in quite a different way than 9 was, and I ended up having to restructure huge amounts of code. It's all for the best in the long run, of course.
Don't let that fool you into thinking that the 11 code is somehow more "complex" or "fragile" than the 9 code was, because it's not. It's substantially simpler, frequently only needing half the amount of code to do the same thing, and much of the restructuring revolved around having to rip apart and rebuild the old highly complex and entangled D3D9 code I had. There's still a way to go with that, but it's been heading in the right direction for the past few months and will only get better.
Experimenting with new D3D11-only features has been a mixed bag. Some successes (texture arrays for lightmaps - yayy!), some failures (geometry shaders - booo!!!) and overall most of the new stuff being behind-the-scenes rather than in-yer-face bling. Subtle is the name of the game here - you won't see a radically different-looking Quake, but you will see one that has a whole host of minor improvements to the way things work that just add up to an overall nicer experience.
Still outstanding from this list is compute shader based lightmap updates. It's something that I really want to do but I'm having trouble finding decent documentation on. If it does happen I intend retaining the old lightmap update code for cases where CS is unavailable, of course.
Speaking of which, despite the fact that it uses D3D11 it will also work on D3D10 class hardware. It does require Windows Vista or higher, of course, but that's the tradeoff. For older still hardware I've enabled support for creating a WARP device so you'll have a software rasterizer to play with. It's slower, of course, but it will work.
In terms of features I've dropped two main ones from the older version - the "enhanced" particle system and in-game anti-aliasing support. I may yet revisit the latter, but have no plans to revisit the former.
There are some D3D11 API differences with how AA is handled that do make things a little more awkward than they should be; nothing insurmountable but slightly painful and needing an extra bit of care to get right. I've decided to focus on getting the essentials done first and adding chrome later with this one.
With particles I'm going back to my original opinion that bare-bones is best. The main reason for this is the way particles were handled by the original game - it's just not 100% conducive to being supported by an "enhanced" system. Sure, others have done it, sure, I've done it before myself, but there are always edge cases where it breaks down and things go wrong. Better to just focus on getting the original system as good as possible here.
I'd made an attempt at adding MD3 support a while back but junked it. The format itself isn't too bad; the difficulty lies in tying MD3s into the original game content. I'll definitely be going back to that and reworking it at some future point in time.
MP3 playback switched from using DirectShow to using MCI, which should resolve a lot of the problems people had in the past. I'll also be adding OGG support and have the skeleton of the code required for this done.
A LOT of other things have also changed behind the scenes in the engine code, far more than I had originally planned for (it was just supposed to be a straight port to D3D11), but the cumulative result is just a much much higher quality codebase. Some of those I may have mentioned, or at least hinted at, in earlier posts; some of them will be new to everyone.
Sunday, June 24, 2012
Another Quake Playthrough
Posted by
mhquake
at
4:48 PM
Subscribe to:
Post Comments (Atom)
6 comments:
+1
Community loves you!
Tis sounds good for people with newer Hardware, but Will there still be a bug fix for 1.9.0? I thought several weeks ago that it was almost ready?
It's still planned but it's strictly on the as-and-when. The delay is because I just don't know what's causing the problems for people - I've been completely unable to reproduce these bugs across 5 different machines, including a mix of AMD graphics, NV graphics, Intel graphics, AMD CPU, Intel CPU, laptops, netbooks, PCs.
...and yes, that includes XP.
Which bug exactly? I wouldn't mind doing some extensive testing to get to the bottom of it ;)
I'm pumped!
Post a Comment