Перейти к содержимому
Zone of Games Forum
Tericonio

Руководство по русификации игр от Adventure Game Studio

Рекомендованные сообщения

Программы для работы с файлами

agsutils, Любой HEX-редактор, Photoshop, Notepad++

 

Скрытый текст

 

Поддержка версии Adventure Game Studio (2.0 + /3.0 +)

Для распаковки исполняемого файла нам понадобится agsutils

Скачиваем с репозитория и извлекаем архив в удобное место к примеру на диск D:\

Переносим в папку agutils —  исполняемый файл с которым будем работать и запускаем из этой директории CMD

Команда распаковки исполняемого файла: agstract file.exe folder1

Команда распаковки AGS файла: agstract file.ags folder1

Если имя исполняемого файла с пробелом то закомментируем в кавычки, так же и Папку куда распаковывать, если у папки будет пробел

Скрытый текст

acsprset.spr // Спрайты игры

*.wfn //Информация о шрифте

*.ttf //Шрифт

agspack.exestub // Игровой Player или исполняемый файл самого движка

agspack.info //Информация о распакованных файлах

*.ogg //Внутренние файлы диалогов персонажей или комментариев разработчиков либо ещё музыка может быть

*.dta //Информация с текстами на кнопки, расположение текста и т.д.

*.pcx //Загрузочный экран — открывается в Photoshop

room*.crm //Комнаты в которых тоже присутствует текст и часть скриптов за их вывод

sprindex.dat // Всякие данные о спрайтах

 

 

Скрытый текст

 

agscriptxtract -oblf folder1 folder2

Редактирование *.s скриптов в folder2

Открываем в Notepad++ и находим через поиск li ax, "

В строке li ax, " — Будет текст диалогов

Ниже строк __NEWSCRIPTSTART — операнды диалогов из li ax 

Всё что ниже __NEWSCRIPTSTART  вырезаем в другой файл и сохраняем чтобы не мешало, пока переводим, а когда переведёте, верните назад в файл

Текст замещаем только в li ax, ",  а также смотрим на регулярки внимательно : \? & \’  \”

Пример 1: What…\? — Что\?.. = Что?..  ← Итог

Пример 2: &What… — &Что... = Что...  ← Итог

Пример 3: \’ What\’ … — \’ Что\’... = ‘Что’... ←  Итог

Теперь преобразовываем в кодировку ANSI и сохраняем

 

Скрытый текст

agssemble folder2/script.s

 

Скрытый текст

 

К примеру, мы распаковали игру и у нас вышли такие *.s скрипты

dialogscript.s / gamescript0.s /gamescript1.s /globalscript.s /room1.s /room2.s

Упаковка будет такая:

agsinject 0 RU_s/globalscript.o RU/game*.dta   //(0 — первый скрипт на упаковку в *.dta) (Первый глобальный)
agsinject 1 RU_s/dialogscript.o RU/game*.dta  //(1 — второй скрипт на упаковку в *.dta) (Второй диалоговый)
agsinject 2 RU_s/gamescript0.o RU/game*.dta  //(2 — третий скрипт на упаковку в *.dta) (Третий внутриигровой)
agsinject 3 RU_s/gamescript1.o RU/game*.dta  //(3 — четвёртый скрипт на упаковку в *.dta) (Четвёртый внутриигровой)

и т.д. если gamescript2 то уже будет после:  agsinject 4

Для комнат всегда будет 0
agsinject 0 RU_s/room1.o RU/room1.crm  //(0 — первый скрипт на упаковку в *.crm поскольку скрипт в комнате всегда будет один)
agsinject 0 RU_s/room2.o RU/room2.crm  //(0 — первый скрипт на упаковку в *.crm поскольку скрипт в комнате всегда будет один)

 

Поскольку текст не весь распаковывается из скриптов то часть остаётся ещё в *.crm и *.dta

 

Скрытый текст

После того как уже перевели в скриптах диалоги и вставили обратно в *.crm

Открываем в HEX-редакторе *.crm поэтапно

Первые 3 байта заголовок комнаты 21 00 01

2-3 байта размер секции или смещение (будем править после перевода до секции SCOMS/SCOMZ — самого скрипта)

с 5/6 байт по 0a — 0 байты

Со смещения 0x0b начинается первый отрезок комнаты и будет начало первого отрезка указанное в смещении 0x03

Теперь переходим к смещению 0x101, если первый текст объекта No hotspot или Hotspot*, то такие не переводим, а ищем между ними или же бывает объекты начинаются для перевода со смещения 0x101 (сам текст) а размер на смещении 0xFD

Включаем режим вставки, чтобы текст не замещался а вставлялся в кодировке ANSI (А  — С0) и перед объектом-текста за минусом 4 байта длина текста

Пример: 04 00 00 00 54 65 78 74 00 00 00 00 (04 — размер  3 байта нулевых поскольку предложение даже не превышает значение ff  и дальше пошёл текст 54 65 78 74 — Text)

Когда всё перевели между No hotspot и Hotspot* и заменили размер байтов перед текстом, ищем Начало следующей части комнаты, а именно SCOMZ или SCOMS,  и слева от SCOM через -9 байт будет начало первого нашего отрезка, сразу же после разделителя 07 (ID Скрипта) — И теперь выделяем с этой части и до 0x0b и будет наш размер или смещение на первую часть, и вписываем в смещение с 0x03 в перевёрнутом виде : 1с20 = 201с или 10020 = 200001

 

Как только заменили первый участок, ищем следующий через текст юКпѕ — сразу после него будет разделитель комнаты — 1 байт, а после будет уже размер отрезка — начало отсчёта 8 байт (количество объектов) после смещения и будет отрезок до следующего разделителя, и переводим так же как и в начале *.crm файла и после перевода и исправления размера перед текстом правим размер этого отрезка и сохраняем и так проделываем со всеми скриптами *.crm

 

Скрытый текст

После того как упаковали все скрипты обратно в *.dta 

Открываем в HEX-редакторе в 3 частях файла

 

Первая часть

После смещения 1800 будет первый текст на объекты или предметы, который надо переводить

Здесь не включаем Режим вставки, а просто замещаем текст 

Размер общего блока под объект/предмет 44 байта, под текст где-то 16 байт 

Править смещения не надо или размер общего файла

 

Вторая часть

Теперь переходи к последнему скрипту SCOM по поиску через юКпѕ

И после этих строк до btn или lbl находим имена персонажей, оставшиеся диалоги выбора или какой либо ещё текст

Для имён персонажей 24 байта для вариантов ответов или вопросов или диалогов 94 байта

Так же вставляем текст как и в первой части

 

Третья часть

Это оставшаяся часть с редактированием текста в btn  или lbl, и сам размер перед текстом  -4 байт и с включённым режимом вставки

В этом же месте можно изменить расположение текста и кнопок по осям X и Y (позднее напишу)

 

Скрытый текст

agspack -e folder1/ file.exe

Под обновление

Изменено пользователем Tericonio
  • Спасибо (+1) 2

Поделиться сообщением


Ссылка на сообщение

@Amigaser 

Такой движок использую для Квестов — бродилок, с небольшим ACT или TBS

Это не Unity где тебе надо упаковать шрифт и текст в файлы, в этой игре все комнаты подхватываются как и шрифты

 

Изменено пользователем Tericonio

Поделиться сообщением


Ссылка на сообщение
36 минут назад, adm-244 сказал:

Возможно у нас отличаются версии игры, тут нужно разбираться.

А вы откуда взяли игру? Может у вас это демо со стима?

Поделиться сообщением


Ссылка на сообщение

@Tericonio ну, тогда тем более непонятно, почему у него работает изменение на кнопках меню в простейшем tra, а у меня нет.

Поделиться сообщением


Ссылка на сообщение

@Amigaser 

Что-то я не увидел где было переведено меню o_O

Текст диалогов да, но меню — Нет

Скриншоты в студию — в чёрном ящике :laugh:

Текст чёрный слева от кнопок — Текстуры, разбираются так же, на github есть команды по разбору спрайтов в png

Изменено пользователем Tericonio

Поделиться сообщением


Ссылка на сообщение
11 минут назад, Tericonio сказал:

Что-то я не увидел где было переведено меню

 В кнопке TEST написано, вместо Neues Spiel

Поделиться сообщением


Ссылка на сообщение

@Amigaser 

У меня блокирует скриншоты с imgur.com

Поэтому не видно было

У него версия новее и со Steam скорее всего

И файлы скорее всего были выкинуты отдельно а не в сам файл *.ags

 

Поделиться сообщением


Ссылка на сообщение

@Amigaser у меня версия из steam v1.02.

Взял на проверку версию из GOG v1.00.1 и проверил на ней тот же tra файл — тоже работает:

YTBIbju.jpeg

Как вариант почистить содержимое папки “%HOMEPATH%\Saved Games\Rosewater”. Магии не бывает, что-то значит отличается :unknw:

Поделиться сообщением


Ссылка на сообщение

@adm-244 

У меня тоже заработало, без чистки

Надо писать немецким первым, а русским вторым

Neues Spiel — 1 строка

Новая игра — 2 строка

А вот если писать

New Game — 1 строка

Новая игра — 2 строка

То не будет работать ни на Английской, не в Немецкой

@Amigaser @adm-244 

Почему-то игра берёт German первый, а не English

Изменено пользователем Tericonio

Поделиться сообщением


Ссылка на сообщение

@adm-244 

Забыл про папку сохранений

Так что можно спокойно делать файл Russian.trs

В той папке по пути %HOMEPATH%\Saved Games\Rosewater в файле acsetup.cfg прописываешь за место Emglish — Russian

В итоге файл подхватывается Russian.tra и текст английский тоже переводится

@Amigaser 

agsfnt4.ttf — Главное меню и Дополнительные настройки

agsfnt1.ttf — Диалоги / Титры

Изменено пользователем Tericonio

Поделиться сообщением


Ссылка на сообщение

@Amigaser 

Через Notepad++ создаём чистый Russian.trs

Вписываем в Russian.trs в первую строку //#Encoding=UTF-8

Дальше вставляем текст с какого языка будет подхватываться текст

К примеру с английского:

2 строка — New Game

3 строка — Новая игра

Удаляем как писал @adm-244  по пути %HOMEPATH%\Saved Games\Rosewater все файлы

Компилируем через AGSUnpacker — *.tra

Через программу winsetup.exe выставляем в Game language: Russian и нажимаем Save

Запускаем игру и радуемся жизни

Глянул файлы по этой игре, комнат вообще нет, так что текст легко весь переведётся, кроме тккстур

Текстуры через AGSUnpacker , можно вытащить и положить рядом с исполняемым файлом и они подхватятся

Изменено пользователем Tericonio
  • Спасибо (+1) 1

Поделиться сообщением


Ссылка на сообщение

@Tericonio да, спасибо. У меня тоже всё сдвинулось с мёртвой точки. Разобрался что у меня не так. Я распаковывал ресурсы той же утилитой AGSUnpacker, и они распаковались из Rosewater.ags в папку Rosewater рядом. И, видимо, приоритетно текст берётся движком оттуда. Удалил эту папку, и текст из tra-файла стал подхватываться. Шрифт в папку с игрой можно положить любой ttf с поддержкой кириллической таблицы, переименовав его в agsfnt0.ttf. Затем скопировать этот же файл несколько раз с именами agsfnt1.ttf, agsfnt4.ttf, agsfnt5.ttf, agsfnt6.ttf, agsfnt8.ttf и agsfnt14.ttf 

Изменено пользователем Amigaser

Поделиться сообщением


Ссылка на сообщение
1 час назад, Tericonio сказал:

Текстуры через AGSUnpacker , можно вытащить и положить рядом с исполняемым файлом и они подхватятся

А в каком виде они там должны быть? Я вытащил утилитой png-картинки из acsprset.spr. Там они под номерами sprХХХХХ.png. Просто под таким же именем кинуть в папку с игрой? Так они у меня не подхватываются.

Изменено пользователем Amigaser

Поделиться сообщением


Ссылка на сообщение

@Amigaser 

Напишу чуть позднее по текстурам

Поделиться сообщением


Ссылка на сообщение

@Amigaser 

Извлекать весь acsprset.spr и упаковывать также в acsprset.spr + sprindex.dat

И если потом перекинуть в корневую папку Rosewater/ — то тогда только будет загружаться спрайты, но это дополнительные 3 гб + 

Если упаковать только тот спрайт что перерисовал, то другие спрайты подгружаться не будут и игра не запуститься

Лучше всего так:

Распаковал с помощью agstract.exe Rosewater.ags

Распаковал с помощью AGSUnpacker acsprset.spr (поскольку на выходе будут *.png)

Перерисовал текстуры

Запаковал с помощью AGSUnpacker и на выходе получил acsprset.spr + sprindex.dat новый в папке packed

Перекинул в папку где распаковал Rosewater.ags и заменил, а с помощью agsutils упаковал файлы в новый Rosewater.ags

Создал патч на основе патча Visual Patch или схожих программ для создания патча и пропатчить оригинальный Rosewater.ags

Такой способ единственный

Изменено пользователем Tericonio

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас



Zone of Games © 2003–2025 | Реклама на сайте.

×