Home Artists Posts Import Register

Content

I've added a "r_drawview" cvar that fully disables 3D rendering. This helped me confirm that crashes such as the intermission crash are not caused by the 3D renderer (disabling r_drawview before entering an intermission still crashes the engine).

There are several weird crashes in Retroquad, as you can see in the readme. If it wasn't for those crashes, I would promote this engine a lot more. It hurts me to see it crashing so much, and failing to figure out why all those crashes happens. I don't care much for glitches, because glitches can be worked around. But most crashes can't:

  • The game is always crashing when the intermission camera is activated.
  • Quite often, demo playback causes regular map loading to crash.
  • In some cases, the engine simply crashes randomly upon loading the map.
  • Some random crashes are caused by entity rendering. Setting r_drawentities to zero stops such crashes.

The first crash may be caused either by the physics, by the network protocol, or by the qc virtual machine.

The second crash is incredibly weird. Starting the engine without playing any demos stops some crashes in regular gameplay, and entering in regular gameplay before playing any demos makes some demos crash. This happens too randomly and can't be reproduced in a reliable way.

The third crash may be caused by the same possible causes of the first crash, but it happens as randomly as the second crash.

Retroquad's physics code still is mostly identical to vanilla Quake, but its network protocol has many changes to accomodate some of the new features. I'll have to investigate it deeply.

I'm also removing lots of dead code, and may start removing some unused features such as skyboxes to make the code simpler and easier to debug. If that's not enough, leaving the engine in a barebones state may be the way to fix the crashes. After getting a rock solid engine core working, I could start adding back the removed features.

I don't want to risk doing what I did years ago, implementing lots of features with no testing and debugging. This engine is already too fragile.

Comments

Pritchard

"Random" crashes are often memory related... I don't know how you've handled memory management, but it's likely that some buffers aren't being freed when a demo or map is unloaded. Does it crash if you load several maps one after the other, for instance?

mankrip

Loading several maps eventually crashes when compiling many textures, so there must be some memory that is not being freed by the texture compiler. However, when all textures are already compiled, the engine can run some mods' demoloops (e.g. Dimension of the Past) for hours loading the demos' maps over and over with no problem.