Автор Гілка: Зібрав Flatpak для GTA Vice City з українською озвучкою і субтитрами  (Прочитано 2177 раз)

Відсутній ps

  • Графоман
  • ****
  • дописів: 261
  • Карма: +4/-0
    • Мої дописи на DevZone
Майже пройшов VC тестуючи паралельно збірку і тільки зараз помітив, що в меню не перекладені всі пункти (бо локалізація Андрюлько не розрахована на фічі рушія reVC)


Тому навчився розкопільовувати .GXT і редагувати у ньому відсутні рядки, у портабельному для старих ігор форматі ASCII замість поширеного сьогодні UTF-8.

Спочатку пробував зробити це засобами wine, утилітою GXT-compiler, але вона виявилась і не зручною і прозондував crates.io по відповідним ключам, знайшовши gxter. Ця програма легко збирається, підтримує словники для декодування вибіркових збірок і оскільки шрифт tycoon має іншу мапу, я написав патч спеціально для перекладу Анрюлько, продублюю поточну версію таблиці сюди:

# Ukrainian translation dictionary to decode Andrulko edition
# https://kuli.com.ua/grand-theft-auto-vice-city#translations
#
# see also latest version:
# https://github.com/oooo-ps/gxter/blob/vc-uk-andrulko/character_tables/vc_uk_andrulko.toml

[decode_table]

# LATIN
75  = 'К' # 'K'
84  = 'Т' # 'T'
89  = 'T' # 'Y'
107 = 'к' # 'k'
116 = 'т' # 't'
121 = 't' # 'y'

# À-Ï, Ò-Ö, Ú-Ü, Ñ-¿

128 = 'Б' # 'À'
129 = 'В' # 'Á'
130 = 'Г' # 'Â'
131 = 'Д' # 'Ä'
132 = 'Ж' # 'Æ'
133 = 'З' # 'Ç'
134 = 'И' # 'È'
135 = 'Й' # 'É'
136 = 'Л' # 'Ê'
137 = 'М' # 'Ë'
138 = 'Н' # 'Ì'
139 = 'П' # 'Í'
140 = 'У' # 'Î'
141 = 'Ф' # 'Ï'
142 = 'Ц' # 'Ò'
143 = 'Ч' # 'Ó'
144 = 'Ш' # 'Ô'
145 = 'Щ' # 'Ö'
147 = 'Ь' # 'Ú'
148 = 'Є' # 'Û'
149 = 'Ю' # 'Ü'
173 = 'Я' # 'Ñ'

# à-ï, ò-ó, ô-ö, ú-ü, ñ

151 = 'б' # 'à'
152 = 'в' # 'á'
153 = 'г' # 'â'
154 = 'д' # 'ä'
155 = 'ж' # 'æ'
156 = 'з' # 'ç'
157 = 'и' # 'è'
158 = 'й' # 'é'
159 = 'л' # 'ê'
160 = 'м' # 'ë'
161 = 'н' # 'ì'
162 = 'п' # 'í'
163 = 'у' # 'î'
164 = 'ф' # 'ï'
165 = 'ц' # 'ò'
166 = 'ч' # 'ó'
167 = 'ш' # 'ô'
168 = 'щ' # 'ö'
170 = 'ь' # 'ú'
171 = 'є' # 'û'
172 = 'ю' # 'ü'
174 = 'я' # 'ñ'
175 = 'ї' # '¿'

gxter, на відміну від GXT-compiler, працює зі своїм форматом сорсу в toml, додаю сюди відсутні в Андрюлько рядки для reVC (можна зробити окремий реліз перекладу для цього рушія) з готовим перекладом, які згенерував програмно:

# re3 only patch : begin

FEC_360 = "Кoнтpoлep XBOX 360"
FEC_DS2 = "Дюaлшoк 2"
FEC_DS3 = "Дюaлшoк 3"
FEC_DS4 = "Дюaлшoк 4"
FEC_FRC = "Вiльнa кaмepa"
FEC_IVP = "Iнвepтувaти гeймпaд вepтикaльнo"
FEC_JDE = "Виявлeнo гeймпaд"
FEC_JOD = "Виявити гeймпaд"
FEC_JPR = "Нaтиcнiть будь-яку кнoпку нa гeймпaдi для викopиcтaння у гpi."
FEC_NSW = "Кoнтpoлep NINTENDO SWITCH"
FEC_ONE = "Кoнтpoлep XBOX ONE"
FEC_TYP = "Тип гeмпaду"

FED_AAS = "Aнти-aлiacинг"
FED_BIL = "Бiлiнiйнo"
FED_CLF = "Фiльтp кoльopу"
FED_FIL = "Фiльтpи тeкcтуp"
FED_FLS = "Пoвний eкpaн"
FED_MBL = "Poзмиття pуxу"
FED_MFX = "Eфeкти мaтepiaлiв"
FED_MIP = "Зглaджувaння тeкcтуp"
FED_NEO = "NEO"
FED_PRM = "Кoнтуpнe ocвiтлeння пiшoxoдiв"
FED_RGL = "Вiдблиcки дopoги"
FED_TRL = "Тpилiнiйнo"
FED_VPL = "Вiдoбpaжeння тpaнcпopту"
FED_WLM = "Ocвiтлeння cepeдoвищa"

FEL_JAP = "Япoнcькa"
FEL_POL = "Пoльcькa"
FEL_RUS = "Pociйcькa"

FEM_2PR = "PS2 aльфa тecт"
FEM_AUT = "Aвтoмaтичнo"
FEM_CAR = "Щiльнicть aвтo"
FEM_CSB = "Paмки кaт-cцeн"
FEM_HIG = "Виcoкo"
FEM_ISL = "Викopиcтaння пaм'ятi"
FEM_LOW = "Низькo"
FEM_MED = "Cepeдньo"
FEM_MOB = "Мoбiльний пpиcтpiй"
FEM_NON = "Нeмaє"
FEM_NRM = "Нopмaльнo"
FEM_PED = "Щiльнicть пiшoxoдiв"
FEM_PS2 = "PS2"
FEM_SCF = "Фopмaт eкpaну"
FEM_SIM = "Пpocтo"
FEM_XBX = "XBOX"

FET_AGS = "Нaлaштувaння гeймпaду"
FET_GFX = "Нaлaштувaння гpaфiки"
FET_RMS = "Пoвтopeння мiciї"

FESZ_RM = "Зaнoвo?"

# re3 only patch : end

  * зверніть увагу: літери a, c, e, p, x та деякі інші - в латиниці

Процес декомпіляції / компіляції виглядає так:

gxter-cli -d ukrainian.gxt -c character_tables/vc_uk_andrulko.toml -o andrulko.toml
gxter-cli andrulko.toml -c character_tables/vc_uk_andrulko.toml -o ukrainian.gxt

Тепер переклади в збірці виправлені і джерела включаються в форк. Також пофіксив знайдені Segmentation fault, пов'язані кросплатформеними todo що летять саме на Linux; а ще збільшив щільність автівок (CarDensity) і пішоходів (PedDensity) до коефіцієнту 1.0f, бо стандартних 0.6 замало, через що довго думав чому місто таке спустошене і до того ж складно пройти місію "Псих у місті" що у байкерів (ці налаштування є в меню, і тепер їх можна прочитати завдяки фіксу перекладу)

На останок, додаю оновлену копію маніфесту, яка тепер містить ревізії комітів з останніми обновами:

app-id: ps.GTA.VC-Andrulko-SkynetUA
runtime: org.freedesktop.Platform
runtime-version: '25.08'
sdk: org.freedesktop.Sdk
command: ps.GTA.VC-Andrulko-SkynetUA
separate-locales: false

finish-args:
  - --device=dri
  - --device=input
  - --share=ipc
  - --socket=pulseaudio
  - --socket=wayland
  - --socket=x11

modules:
  - name: premake5
    buildsystem: simple
    build-commands:
      - |
        make -f Bootstrap.mak linux
        mkdir -p "${FLATPAK_DEST}/bin"
        install "bin/release/premake5" "${FLATPAK_DEST}/bin"
    sources:
      - type: git
        url: rad://z43kgaxLn8Fc2sb7R3VgZZ7ccUe5p
        commit: 2ca338a25ed5f6e62d36c9cd70e5f313953c630d #v5.0.0-beta8

  - name: glfw
    buildsystem: cmake
    config-opts:
      - -DCMAKE_BUILD_TYPE=Release
      - -DBUILD_SHARED_LIBS=ON
      - -DGLFW_BUILD_EXAMPLES=OFF
      - -DGLFW_BUILD_TESTS=OFF
      - -DGLFW_BUILD_DOCS=OFF
    sources:
      - type: git
        url: rad://z3FCk347V5ASZ87ur2sMnmmTp4P9Q
        commit: 7b6aead9fb88b3623e3b3725ebb42670cbe4c579 #v3.4

  - name: game
    buildsystem: simple
    build-commands:
      - |
        mkdir -p "${FLATPAK_DEST}/gamefiles/TEXT"
        rm "app/GTA Vice City Trainer (v1.0).exe" "app/gta-vc.exe"
        rm "app/models/generic.txd" "app/models/particle.txd"
        rm "app/TEXT/american.gxt"
        cp -r "app/." "${FLATPAK_DEST}/gamefiles"
    sources:
      - type: git
        url: rad://z22sMx8VdL7YSDaCdbpo5X2TMuZ1z
        commit: 5dba0c7c8e921de1485778132b8a67f65c4914aa

  - name: dub
    buildsystem: simple
    build-commands:
      - |
        cp -r "Audio/." "${FLATPAK_DEST}/gamefiles/Audio/"
    sources:
      - type: git
        url: rad://z2aNJ1EcoPbEaRTxsuVQXaofrEVn2
        commit: eeb2c7ea0c9523660b54a30a7f6dc9a876d78158

  - name: re3
    buildsystem: simple
    build-commands:
      - |
        mkdir -p "${FLATPAK_DEST}/share/applications"
        mkdir -p "${FLATPAK_DEST}/share/icons/hicolor/scalable/apps"

        install "ps.GTA.VC-Andrulko-SkynetUA.desktop" "${FLATPAK_DEST}/share/applications"
        install "ps.GTA.VC-Andrulko-SkynetUA.svg" "${FLATPAK_DEST}/share/icons/hicolor/scalable/apps"
        install "ps.GTA.VC-Andrulko-SkynetUA" "${FLATPAK_DEST}/bin"

        mv "gamefiles/TEXT/ukrainian/andrulko.gxt" "${FLATPAK_DEST}/gamefiles/TEXT/american.gxt"
        rm -r "gamefiles/TEXT"
        cp -r "gamefiles/." "${FLATPAK_DEST}/gamefiles"

        premake5 --with-librw gmake
        cd build
        make config=release_linux-amd64-librw_gl3_glfw-oal
        install ../bin/linux-amd64-librw_gl3_glfw-oal/Release/reVC "${FLATPAK_DEST}/gamefiles"
        rm "${FLATPAK_DEST}/bin/premake5"
    sources:
      - type: git
        url: rad://z3LPm3fELhq1VGX4tWHRbvP2923mT
        commit: 535e4ee47479ff0730b976bb32a71d61f1bc26b4
      - type: dir
        path: ps.GTA.VC-Andrulko-SkynetUA

Завантажити готовий .flatpak можна за посиланнями в першому пості, поточна хеш-сума релізу:
Manifest commit                          | .flatpak (md5)                   | .flatpak (sha256)
-----------------------------------------|----------------------------------|-----------------------------------------------------------------
5d9722da13c2d05e3e631dd055a41c86772ee797 | 42e83b213b04524360eb727b27eb1b5c | 9cd6934846ab8280b00bba6ed9766bd5655664936f3c74be87ec5eb521ab5fa4
« Змінено: 2026-08-03 02:19:32 від ps »

Відсутній BeSiDa

  • Письменник
  • *****
  • дописів: 512
  • Карма: +7/-0
форматі ASCII замість поширеного сьогодні UTF-8.

[ decode_table ]

# LATIN
107 = 'к' # 'k'
128 = 'Б' # 'À'
Це не АСКІІ. Це ваш особистий формат кодування, що відрізняється від будь яких інших. АСКІІ це тільки про коди 1-127 (УТФ-8 має ті ж самі коди 1-127 для тих самих символів). Ви замінили сенс деяких з 1-127 іншим. Це не відповідає стандарту кодування АСКІІ (таблиці кодів).

Відсутній ps

  • Графоман
  • ****
  • дописів: 261
  • Карма: +4/-0
    • Мої дописи на DevZone
Саме тому і використовується таблиця заміни, бо цих символів в стандартному ASCII немає і формат залежить від конкретної локалізації / автора. В gxt ці дані отримати не можливо, на Кулі я теж не знайшов тому робив руками і наче вийшло без помилок. Хто помітить - репозиторій за посиланням вище.

Гру вже тестуючи пройшов і результатом задоволений, тому бо це був мій фінальний апдейт.
« Змінено: 2026-08-04 03:08:08 від ps »