SNMetamorph

SNMetamorph

@snmetamorph

Half-Life 1 modding enthusiast, C++ programmer. Developer of GoldSrc Monitor, PrimeXT, mdl-flip. One of Xash3D FWGS engine contributors.

github.io
SNMetamorph#1281
Joined 23 Jun 2021
pocket dimension
Badges
Two Years
Two Years
Be a member of the site for two years!
Follow

Instead of trying to add my software water implementation into our software renderer, I did it in an OpenGL renderer that everyone uses and will use anyway. This code waited for this moment for two year until somebody reminded about it... It doesn't use shaders, it's really just that software effect implemented modifying the texture and re-uploading to GPU. I thought it will be slower but I guess generating and uploading 128x128 is not a problem for modern computers. I also found some bugs and…

(Edited)
trophy4

Xash3D engine supported movie playback for a long time, but it utilizes Video for Windows API, which has downsides from obviously being closed source and Windows exclusive and requiring the user to install third-party software. It also sometimes just outright doesn't work for an unknown reason. This time I have implemented video player using ffmpeg to the Xash3D FWGS engine, which was in the plan for a whopping eight years already. The obvious improvement of using ffmpeg is a wide variety of c…

(Edited)
trophy1
First connection from Xash3D FWGS to GoldSrc (ReHLDS) server with its native protocol.

==== Some nerd stuff ====
Xash3D natively supports writing and reading bit by bit. Whether it's a usual 8-bit or less usual 11-bit integer, it's always encoded the same way.

As I said in a previous post, in GoldSrc, Valve, instead of properly rewriting buffer ops to support bit IO, just hacked it on top of existing Quake code. So this creates a significant issue on how signed values written as bytes and signed values written as bits are encoded. 

In bit encoding mode, sign bit comes first, when in Xash it always in the end. In byte encoding mode, like in Quake, integers are little endian encoded, meaning the sign bit is in the last byte.

From this point, I don't know how to "simply" support the GoldSrc protocol. I guess that's the end, until I come up with some idea (and probably take apart and rewrite the whole engine)

First connection from Xash3D FWGS to GoldSrc (ReHLDS) server with its native protocol. ==== Some nerd stuff ==== Xash3D natively supports writing and reading bit by bit. Whether it's a usual 8-bit or less usual 11-bit integer, it's always encoded the same way. As I said in a previous post, in GoldSrc, Valve, instead of properly rewriting buffer ops to support bit IO, just hacked it on top of existing Quake code. So this creates a significant issue on how signed values written as bytes and sign…