πŸΆπš‘πšŠπŸ·πš‹πšŠπšŠπŸ·πš‹πšŠ

πŸΆπš‘πšŠπŸ·πš‹πšŠπšŠπŸ·πš‹πšŠ

@a1batross

Male. 25. Pronouns: any. Xash3D FWGS maintainer, Elbrus researcher. Writing low quality Linux drivers for life.

suya.place
a1ba#1785
Joined 18 Sep 2022
host.mempool
Badges
One Year
One Year
Be a member of the site for a whole year!
You Actually Tried
You Actually Tried
Have a post Featured by a community moderator or staff member
Made it
Made it
Completed the LambdaGeneration Half-Life 25th Anniversary Adventure
Follow

Finally added a hotkey handlers to my mainui_cpp from Xash3D FWGS, featuring Half-Life WON menu. However, behavior differs from WON launcher. In WON it handles it on key press, which makes navigation confusing, and sometimes it might react twice or more. Like if you're in main menu, pressing 'C' to open configuration menu, and it jumps straight to controls menu instead. This is probably due to mishandled button repeat, but I'm not sure. Instead, I do it on key release, which allows in my opini…

visualstudio3

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
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…

During another sleepless night, I tried to hack GoldSrc protocol into Xash3D FWGS. This isn't something I really want to implement and support in the engine, just want to see what could be improved in further Xash protocol extensions. There isn't so much to show off yet because client doesn't connect to HLDS yet. But I noticed a few interesting things. 1) In GoldSrc there are still remnants of old authentication with CD keys, which cannot even be used anymore. The only way to authenticate is the so-called "Steam protocol" in LAN mode, in which it doesn't validate the certificate cookie in Steam. I guess that's how networking works on pirated games? Honestly, I never looked into this. 2) To prevent protocol reverse-engineering, Valve tried to mangle the network data. This isn't a problem anymore, because the algorithm itself was RE'd a long time ago. It's a pure comedy of security through obscurity: github.com/dreamstalker/rehlds/b…. You t…

trophy2
nerd2

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