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.
