Nope, I replaces SockFS with new implementation based on WebRTC. Basically
I used a fork of HumbleNet as a base for WebRTC networking. So one instance
create a room in HumbleNet backends, and all clients recieve WebRTC config
from HumbleNet. So server is in the browser.

сб, 15 нояб. 2025 г. в 00:08, 'Sam Clegg' via emscripten-discuss <
[email protected]>:

>
>
> On Fri, Nov 14, 2025 at 6:49 AM Александр Гурьянов <[email protected]>
> wrote:
>
>> Finally, I make it work:
>>
>> https://dos.zone/mp/?lobby=ut
>>
>
> Wow! This is really amazing.  How did you end up doing the networking in
> end?   Some kind of websocket relay?
>
>
>
>>
>> вс, 19 окт. 2025 г. в 22:44, Александр Гурьянов <[email protected]>:
>>
>>> Nevermind, i found a way to read the error contents)
>>>
>>> сб, 18 окт. 2025 г. в 00:44, Александр Гурьянов <[email protected]>:
>>>
>>>> Thanks for the reply.
>>>> I organized a hackathon and made pretty good progress on solving my
>>>> task — I replaced Emscripten’s socket implementation with my own and
>>>> managed to get through the initial handshake stage when connecting the
>>>> client to the server.
>>>>
>>>> However, unfortunately, at some point an exception occurs on the server
>>>> and it crashes.
>>>>
>>>> As the mentioned, exception catching is disabled, so I only see a very
>>>> uninformative message:
>>>>
>>>> Exception catching is disabled, this exception cannot be caught. C...
>>>>
>>>> I did some digging and found that the UT99 engine throws exceptions
>>>> like this:
>>>>
>>>> throw (TEXT("SOME TEXT"))
>>>>
>>>> I don’t yet know exactly what TEXT does, but let’s assume it’s
>>>> equivalent to:
>>>>
>>>> throw "Some text"
>>>>
>>>> My question is: is there any way I can print this "Some text" to
>>>> console.log?
>>>> I tried debugging directly in WASM to find the pointer to "Some text",
>>>> but haven’t succeeded yet.
>>>>
>>>> Here’s the _cxa_throw implementation:
>>>>
>>>> function ___cxa_throw(ptr, type, destructor) {
>>>>     EXCEPTIONS.infos[ptr] = {
>>>>         ptr: ptr,
>>>>         adjusted: ptr,
>>>>         type: type,
>>>>         destructor: destructor,
>>>>         refcount: 0,
>>>>         caught: false,
>>>>         rethrown: false
>>>>     };
>>>>     EXCEPTIONS.last = ptr;
>>>>     if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) {
>>>>         __ZSt18uncaught_exceptionv.uncaught_exception = 1
>>>>     } else {
>>>>         __ZSt18uncaught_exceptionv.uncaught_exception++
>>>>     }
>>>>     debugger
>>>>     console.warn("___cxa_throw", ptr, type, destructor);
>>>>     // throw ptr - " - Exception catching is disabled, this exception 
>>>> cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or 
>>>> DISABLE_EXCEPTION_CATCHING=2 to catch."
>>>> }
>>>>
>>>>
>>>>
>>>> чт, 16 окт. 2025 г. в 16:20, 'Sam Clegg' via emscripten-discuss <
>>>> [email protected]>:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Oct 15, 2025 at 2:13 PM Александр Гурьянов <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi guys, I think you know there’s a browser port of *Unreal
>>>>>> Tournament* made by *Ryan C. Gordon*. It works almost perfectly, but
>>>>>> the *networking doesn’t*.
>>>>>>
>>>>>> I’m currently actively working on a *classic networked games project*
>>>>>> — right now it’s already possible to play *HLDM, Quake 2/3, DOOM,
>>>>>> and OpenTTD* in the browser. Naturally, I’d love to have *UT99* in
>>>>>> my collection as well.
>>>>>>
>>>>>> I’ve spoken with Ryan — unfortunately, he can’t provide the source
>>>>>> code since he doesn’t have the rights to it. So I have to work with 
>>>>>> what’s
>>>>>> available, namely the *compiled WASM*.
>>>>>>
>>>>>> I suspect the game crashes when starting a network session because it 
>>>>>> *tries
>>>>>> to open a port*, which obviously isn’t possible in the browser. My
>>>>>> plan is to *intercept and replace the necessary WASM calls* with my
>>>>>> own networking layer.
>>>>>>
>>>>>> The worst part is that the only available build is *fully obfuscated*
>>>>>> and most likely *compiled without exceptions*, so the crash stacks
>>>>>> are extremely uninformative. Still, I plan to gradually analyze the WASM
>>>>>> and *reconstruct some of the networking logic*. It seems a good
>>>>>> place to start is by analyzing *the Emscripten JS glue functions* —
>>>>>> when and how they’re invoked.
>>>>>>
>>>>>> Now to my main question:
>>>>>> 👉 *Is there any way to determine exactly which version of
>>>>>> Emscripten this binary was built with?*
>>>>>> Ideally down to a commit hash — or at least the major/minor version.
>>>>>> That would be a great starting point, since I could then review the
>>>>>> corresponding network stack implementation.
>>>>>>
>>>>>
>>>>> Unfortunately (for you) there is no such thing, no.   For debug builds
>>>>> I think it's quite easy but it's an explicit non-goal of emscripten to
>>>>> embed any of watermark or version information in release binaries.
>>>>>
>>>>>
>>>>>> *P.S.* It would’ve been logical to just ask Ryan which version he
>>>>>> used, but unfortunately, for some reason (I’m not sure why), he stopped
>>>>>> replying.
>>>>>>
>>>>>> *P.S.2.* This is a port https://icculus.org/ut99-emscripten/
>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "emscripten-discuss" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to [email protected].
>>>>>> To view this discussion visit
>>>>>> https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVEzn-n1yBNobvPL9J5L07XW%2BX-qEBG4j%2B7FtFaz0iw5qw%40mail.gmail.com
>>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVEzn-n1yBNobvPL9J5L07XW%2BX-qEBG4j%2B7FtFaz0iw5qw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "emscripten-discuss" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> To view this discussion visit
>>>>> https://groups.google.com/d/msgid/emscripten-discuss/CAL_va28wbT%3D71uYGSGQ2gK49HBmqnk5_K4hNiVFd4ESDRy%3Dr8Q%40mail.gmail.com
>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/CAL_va28wbT%3D71uYGSGQ2gK49HBmqnk5_K4hNiVFd4ESDRy%3Dr8Q%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>> --
>> You received this message because you are subscribed to the Google Groups
>> "emscripten-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion visit
>> https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVGpejKAQvc-%3D1eNVfLxeFiAe%2BgjQy_WD6X4bX7N-anSBg%40mail.gmail.com
>> <https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVGpejKAQvc-%3D1eNVfLxeFiAe%2BgjQy_WD6X4bX7N-anSBg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion visit
> https://groups.google.com/d/msgid/emscripten-discuss/CAL_va296N02j_OW0e7RfWY-Ym4zWc9qYZ0oJubVQnaRDuqWLUw%40mail.gmail.com
> <https://groups.google.com/d/msgid/emscripten-discuss/CAL_va296N02j_OW0e7RfWY-Ym4zWc9qYZ0oJubVQnaRDuqWLUw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/emscripten-discuss/CAKOm%3DVEOO2UXRPBGhsU5%3Dkadrdesd_mX7_U8fWrHnB2aZ8jJTg%40mail.gmail.com.

Reply via email to