Friday, June 12, 2009

1.6.1 Bugs

Quite a few bugs are arising in 1.6.1, moreso in my own testing than in anything being reported to me.

To summarise: I had started working on 1.7, and crash bugs were beginning to come in more frequent. There always comes a point where you need to consider if you should be continuing down the path you're on or pull back and reconsider. It turns out that the cause is the implementation of the std::vector class, which I had been using to manage a few items in the game. In a lot of cases this is fine, but in cases where it is storing a pointer, and the pointer is referenced elsewhere after allocation, a subsequent allocation may cause the pointer to become invalid. My own fault really for not reading the documentation fully.

So a release 1.6.2 will come sooner rather than later.

With hindsight one of the causes of this was the long delay between 1.5 and 1.6, which coupled with the major backend changes in 1.6 caused a situation where a lot of new code went into the wild all at once. A better approach would have been to adopt a more incremental release pattern, with - say - 1.5.1, 1.5.2, 1.5.3 and so on for each batch of changes. This would have made it easier to track down bugs as well, as there would have been a smaller list of diffs between each version.

Lesson learned.

Another bug reported is a black screen when going direct from 1.5 to 1.6, which seems to be rectified by issuing a vid_restart command. Unfortunately in a lot of cases I'm not able to reproduce reported bugs, as they don't happen on the machines I test on. In this case, going direct from 1.5 to 1.6 on one of my test machines caused no problems at all.

Overall, and in spite of that, I remain pleased with the 1.6 codebase.

5 comments:

Chris said...

Not sure where bug reports go so I hope this is ok. Before I start can confirm that I have installed all the prerequisites

First, crashed every time I try and run a timedemo on ID demo3. Playdemo is fine and the crash occurs whether I go through the menu or the console. This does not happen on either demo1 or demo2.

Second, selecting a new game directory through the menu (ie CZG07) results in the textures all looking like software quake. This persists until the engine is shut down and restarted.

Lastly, there appears to be a draw order problem of some kind with at least the water shader. Alias models are drawn on top of the water surface whether submerged or not. FYI I am using an Nvidia 6600 and the shader precision is left as Auto-Detect.

That said, this really is the most beautiful looking engine for playing Quake. Together with the new lits it is just stunning!

Cheers, kempie

mhquake said...

Cheers. I've noticed the textures bug, another way of working around it is to modify the value of gl_texture_anisotropy; say switch it to 2 and then switch it back to what it was, and all will be good. It also happens on a vid_restart or resolution change, which is done anyway on a game change.

The demo crash is a stray pointer that I've been aware of for a while but have never been able to trace. I never knew it crashed demo3 though. 1.6.2 will hopefully remove a lot of those.

Last one: I switched the draw order while experimenting with stuff and forgot to switch it back; must make a mental note to fix that too.

Canaduck said...

probably should post on this instead
seems to be isolated to the direct upgrade from 1.5-1.6 that causes the black screen, but a clean copy of quake with 1.6.1 didnt reproduce the black screen at all

windows 7 build 7201
evga 7600gs, 186.08 drivers
default settings ingame and default profile in the nvidia manager

mhquake said...

Thanks, that's handy to know. I've something to work on for fixing it now.

mhquake said...

It seems to be NVIDIA only, so perhaps their driver is doing some funky optimisation that my code doesn't like. For now I've coded it to force a video restart the first time through the refresh if an NVIDIA card is detected.