Monday, August 31, 2009

Thoughts about 1.7 and 1.8

As I'm getting ready to release 1.7, it's kinda inevitable that I've been thinking a bit about the overall quality. There's no doubt in my mind that it's the best DirectQ I've ever made, but it's not the one I like the most. That was 1.0, when everything seemed fresh and wonderful and new.

This one does remind me a lot of 1.0, but there are parts of it I genuinely dislike. I don't like the renderer, and I don't doubt that bugs will surface as a result of it's complex evolution and current rather messy state. Mostly I don't like it because the code is ugly. It's down for a total rewrite for 1.8, and not just for aesthetic reasons. Hacking in entity alpha support really was a trial, and I want something that I can more easily extend if another new feature that needs to be supported comes along.

I didn't get to rework the menus as I had intended. It's only a coupla hours work, but in the end other higher priorities took over. I could easily delay the release another day and get it done, but I don't see it as an absolute must-have feature right now.

There are bugs I decided to fix by just ignoring. I removed backface culling from bmodels because it didn't work and I just had too much going on to be able to invest time in it. The sky sphere also needs non-visible surf culling - it's certainly fast enough, but it's using unnecessary bandwidth. Texture loading is starting to look clunky and hacky, and could do with being pulled back to basics and built up again in a more clean manner.

I'm fully satisfied that moving back to fixed functionality was the right call, and am now happy that I've adequately replicated everything as correctly as possible. When I think of the mess I would have had to make to add in even something as simple as fog to the old shaders, it's all vindication. Being able to target a wider potential user base is also really nice.

The stability and security enhancements are good to have, Nehahra support is something I was edging towards for a while and finally got to be at least able to run it, and I'm still astonished by how well the automap turned out - sometimes I just wander around a map toggling it on and off and just looking at it.

1.8 is something that I'm also thinking about at times. I'm not totally certain what's going to be in it aside from the reworked render, but one thing I have realised some time ago is that I get more personal satisfaction from working on behind-the-scenes code than I do from graphical stuff, so maybe expect some of that.

Nehahra will move further towards completion, and any other mods I uncover that have issues will have those issues resolved. PK3 support (likely just a straight copy of the Q3A code) will almost definitely happen, and I'd like to add dzip but it's lower priority right now.

I'd also like to modernize the sound code and maybe port it to something like SDL, but I don't really like the idea of using an external library that's not guaranteed to be installed on all PCs. Release 1.6.3 is currently at 287 downloads of the engine binary, and it's a fairly reasonable bet that a good portion of those are not active in the Quake community. I've something of a responsibility to those people, and requiring them to install an external library they may not have even heard of is just not treating them with respect.

1 comments:

Anonymous said...

And what about OpenAL instead of SDL?
I beleive this API is installed on a lot of PC, at least gamer PCs. And it's provided with Doom 3 and Quake 4, so ID's lovers will have it.

Marc