OK, I've pretty much resolved the old PF_VarString issue, so here's what's happening to date for 1.8.4:
- Several limits have been removed. Beams and Temporary Entities have gone to unlimited; these were previously set at about 20,000. I'd like to also remove the limit on Visible Edicts but unfortunately it needs to be in a linear list for sorting, so it stays at 65536.
- The previous limits of 21,845 on Alias Model Triangles and 65,534 on Alias Model Vertexes have been removed; the Alias Model Format is now unlimited in all respects aside from Frames and Skins (which are Protocol dependent).
- Some efficiencies and optimizations in the Alias Model loader have resulted in fewer temporary memory buffers being created and (hopefully) faster loading.
- The limit of 256 MB for cached models has been removed (cached sounds were previously unlimited).
- FPS-independent gravity has been implemented. I'm not 100% convinced that there won't be unwanted side-effects on entities, so I might release with it either disabled or cvar-ized, but I'll probably leave it on particles.
- A potential rendering bottleneck has been removed; DirectQ previously used FVF Codes for most purposes. Suspecting that the runtime created Vertex Declarations on the fly for these, I've transitioned to using native Vertex Declarations.
- A few long-standing bugs have been fixed; the mouse should no longer go outside the window while playing in Windowed modes, Zone memory will now be correctly created with unlimited size all of the time, and efrag clearing has been corrected.
- The old non-HLSL waterwarp is coming back, and it will be possible to change the value of gl_subdivide_size at runtime. Changing it to a lower value will leak a little memory until the next map load, but higher values will be OK.