JACoders / OpenJK

Community effort to maintain and improve Jedi Academy (SP & MP) + Jedi Outcast (SP only) released by Raven Software
GNU General Public License v2.0
2.01k stars 614 forks source link

Traditional Chinese language support issue of OpenJO (Jedi Outcast) #1196

Open hsz0566 opened 9 months ago

hsz0566 commented 9 months ago

Reporting a bug? Please make sure you've given the following information - thanks!

Operating system and version:

Windows 10

Is this for single player or multiplayer?

single player

Description of the bug (and if possible, steps to reproduce the bug):

I have a multi-language (built-in Traditional Chinese) copy of JKO (Jedi Outcast), and I would like to change text language into Traditional Chinese in OpenJO. But the text subtitles became garbled. Here’s my assets.pk3:

https://mega.nz/file/bVZkVSZZ#Yis7wBou-2YciqW3ZutAkMc-HaGGDwNBP1mnB9uoTAA

In the strip folder, and the traditional Chinese subtitles are marked “TEXT_LANGUAGE6”

Besides, in OpenJK (Jedu Academy), my Traditional Chinese strip files work well!

https://mega.nz/file/LEgXXBjB#N0fvKHwwFoHDcKjQjTHYIz7jPS53eBgzVN-3VU387XE

Here's the video capture:

https://drive.google.com/file/d/1LvfoOf__OYqpJ5drzfArcIxqu8ST0OyU/view?usp=drivesdk

Actually, I was playing JK XR, the VR version Jedi Outcast / Jedi Academy which is based on OpenJK:

https://github.com/DrBeef/JKXR_public

What did you expect to happen instead?

Hope that my Traditional Chinese text subtitles will work well in OpenJO (Jedi Outcast).

More information about this issue:

People in OpenJK discord said:

  1. Looks like OpenJO breaks not latin languages.

  2. JK2 used sp_language as cvar. JKA used se_language as cvar. Seems that stuff isn't properly hooked up on OpenJO.

  3. I think the issue is located in the function Language_e GetLanguageEnum(). In jk2 mode it always returns eWestern. That leads to the checks for Language_IsAsian etc. to fail. And it also leads to various other checks failing and always loading the wrong glyphs.

  4. It handles font rendering differently in those modes. OpenJO is based on jka, you can imagine it as JK2 running in the jka engine. When adding jk2 support to jka the person doing it for OpenJK forgot to properly map the jk2 cvar to the functions used by the renderer, so the game uses the western font system on openjo.

ensiform commented 9 months ago

Point#3 - these functions are only used in JKA mode that is what it only returns western.

OpenJO doesn't break them, as such, the original outcast does not support traditional Chinese or simplified Chinese to my knowledge compared to JKA. It's designed around supporting the outcast feature not the JKA font/languages in outcast mode.

EDIT:

OpenJO already fixed the language issues you're talking about, but the forks you have linked are outdated and do not support the fixes in place. Alas, the Chinese language is still excluded because it's not part of the support for JK2 assets, but it doesn't just return western and the CVar is hooked up just fine.

TEXT_LANGUAGE6 is also mapped to Taiwanese not necessarily traditional Chinese, but I do not know if that makes any difference. https://github.com/jedis/jedioutcast/blob/master/code/qcommon/strip.cpp#L109