Finally, I make it work:

https://dos.zone/mp/?lobby=ut

вс, 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.

Reply via email to