The software renderer of Quake 2 has a very unique look that is hard to reproduce with shaders. Limitations are part of the fun. Games can use the existing Q2 palette, create their own, or use the palettes from Doom, Duke Nukem or Q1.
Considering this, I wonder why the choice of Quake 2 instead of Quake 1 since the main thing Quake 2 introduced has over Quake 1 was colored lighting but that was only available in the OpenGL version.
The MD2 model format is considerably extended over MDL, in size limits, vertex resolution, and features like texture animations. And while Q1 had the split between Netquake and Quakeworld networking, Q2 has a single system. Those kinds of refinements can make the difference.
Agreed... I'm a little surprised they wouldn't adapt to work/build to wasm+webgl target. It seems to me that could make a pretty good cross platform base.
Emscripten has an OpenGL 1.x implementation and Quake 2 uses pretty much OpenGL 1.1. Some years ago i ported my engine that has a GL1.x-only path to Emscripten and had an SDL backend (i removed it since then) and it took just a couple of hours to "port" (the two main problems i had were that i was doing some unaligned pointer accesses - casting a byte array to a float array to read vertex data - that Emscripten didn't knew how to handle so i wrote a slower path for Emscripten and that the OpenGL 1.x implementation wasn't that great and i had to write some workarounds).
Huh. I suppose CPUs are fast and all, but still seems odd to replace perfectly good OpenGL renderer with SW rendering.