Процесс перевода 2D Hard Time
softbieДля тех, кому интересно, как делался перевод к Android версии Hard Time
Итак, вот мы загораемся идеей перевести игру на русский язык, с чего начать? В первую очередь ее нужно скачать. Сделать это можно разными способами, например, воспользоваться специальными сайтами или скачать ее из Google Play и достать APK из установленной игры с помощью инструмента APK Extractor
Теперь начинается самая сложная часть - декомпиляция. Нам нужно достать исходный код игры. В этом нам поможет инструмент apktool. Я не буду расписывать каждый отдельный инструмент и то как с ним работать, в случае чего, информацию можно найти в открытых источниках
Итак, игру декомпилировали, что дальше?

После декомпиляции нам нужно проанализировать исходный код и выяснить, где лежат все диалоги и строки в игре. Сделать это можно поиском по всем файлам через проводник Windows или аналогичным образом в любой другой ОС. И на этом этапе узнаем, что строк здесь нет :)
Чуть покопавшись в файлах, обнаруживаем подозрительный файл Game.swf - это то что нам и нужно (находится в папке assets).
SWF - старый формат для флеш анимации, раньше почти все браузерные игры были написаны на флеше и представляли из себя подобного рода файлы, но после прекращения поддержки они переехали на HTML, но об этом как ни будь в следующий раз
Так, мало нам было декомпилировать apk файл, так теперь еще придется декомпилировать swf, замечательно...
В этом нам могут помочь множество инструментов, но лично я остановился на JPEXS. Просто указываем путь до swf файла и ждем декомпиляции.

Теперь вся остальная работа будет производиться в этой программе. Я пытался сделать из этого файлы проекта для Adobe Flash, что бы работать в ее родной среде, но у меня не вышло...
Работать в этой программе то еще удовольствие, поэтому будьте терпеливы. Здесь все разделено на папки и все подписано, модифицировать можно все что угодно, даже внешний вид NPC в игре.

Но пока нас интересуют строки и диалоги в игре. Можно воспользоваться поиском по всему SWF файлу, но сразу скажу, что диалоги лежат в скриптах, но есть и другие строки, они раскиданы по другим директориям. Поэтому переходим в основной скрипт игры и идем заваривать чай, процесс декомпиляции скрипта займет какое-то время

Итак, теперь перед нами самая проблемная часть всего процесса перевода. Имеем два окна, первое - исходный код в формате ActionScript 3 (родной язык SWF файла, то как его в теории писал разработчик), второе - дизассемблированный P-код (что то вроде ассемлерного, но это не точно). Проблема заключается в том, что редактировать напрямую ActionScript у нас не выйдет, хотя это возможно (скорее всего дело в объеме файла ~ 75к строк), у нас остается только один вариант - править P-код и это печально :)
Это проблема, потому, что одна строка в AS это примерно 4 строки в P-коде. Даже на мощном железе работать в любой IDE становится сложно, не говоря уже о JPEXS.
Так, допустим, мы внесли изменения в код, что дальше? Спойлер, если попытаться собрать APK прямо сейчас - игра крашнется на этапе запуска. Дело в шрифтах. Нужно добавить или изменить родной шрифт, добавив в него кириллицу.

Я взял штатный шрифт и добавил в него кириллицу в похожем шрифте Comic Sans. Теперь проблем точно не будет.
Далее, сохраняем SWF файл и переходим к сборке APK файла.
Для компиляции декомпилированного APK воспользуемся инструментом buildapp - он нам соберет APK и автоматически подпишет его (без этого apk просто не установится)
Вот и все, теперь остается только отправить готовый APK файл на устройство и установить. Таким образом, любой может как угодно модифицировать игру на свое усмотрение, приятного пользования :)