LINUX.ORG.RU
ФорумGames

Aquaria: Русская версия от 1С/Snowball под Linux


0

2

**** Предыстория ****

Однажды мне в руки попала русифицированная версия «Акварии» от 1С/Snowball, которой я весьма заинтересовался. Сама игра была достаточно привлекательна, а перевод субтитров и русская озвучка были очень качественными и приятными. По сравнению с ужасной неофициальной русификацией, которая встречалась мне раньше, эта была просто прекрасна.

В силу профессиональной специфики и личных предпочтений я использую в качестве десктопа Linux, и постоянно перезагружаться в Windows, чтобы поиграть часок-другой, мне совсем не улыбалось. Посему первое, что я сделал, это собрал клиент «Акварии» под Linux. К моему неприятному удивлению, ничего хорошего из этого не вышло, игра запустилась, но толком не работала - текста не было, половина игровой механики не функционировала. Обидевшись от такой несправедливости я сел разбираться, в чем засада.

Засада заключалась в нескольких моментах. Во-первых, родной клиент «Акварии» ни о каких символах, кроме ISO-Latin-1, ничего знать не знает. Посему клиент от 1С был доработан по части шрифтового движка, строковых и символьных операций, и прочих языковых моментов, чтобы поддерживать в ресурсах русский язык в кодировке CP-1251. Мне пришлось дописать все необходимые места в своей версии клиента до аналогичного функционала. Во-вторых, пришлось продублировать в коде английские имена объектов русскими, иначе не работали рецепты и еще кое-какие моменты. Ну а в-третьих, ребята из 1С провели, в некотором роде, обфускацию, применяя различные странные коэффициенты к параметрам ресурсов, вероятно, чтобы было неповадно эти ресурсы использовать с альтернативными сборками клиента. Коэффициенты пришлось вычислить и встроить в код.

В итоге у меня получился патч, который изменяет исходный код клиента «Акварии» до вида, позволяющего ему правильно работать с русскими ресурсами от версии 1С/Snowball. Ну а вследствие желания поделиться этим патчем и методологиями сборки с общественностью, я и пишу этот пост.

**** Подготовка ****

Сначала нужно добыть русские ресурсы от 1С. Можно установить игру в Windows, и скопировать получившийся каталог оттуда. А можно установить прямо в Linux с помощью wine, этот способ прекрасно работает :

mount /dev/sr0 /mnt/cdrom
cd /mnt/cdrom
wine setup.exe
Потом необходимо добыть исходники клиента по 97-му changeset'у. Более свежие версии брать не советую, т.к. не будут работать скрипты из ресурсов, плюс появятся различные глюки и тормоза :
hg clone http://hg.icculus.org/icculus/aquaria -r 633b2b55a667
Мой патч называется ones_snowball_rus_cp1251.diff, и добывается по адресу http://files.mail.ru/AX7GC3. А потом накладывается :
cd aquaria
patch -p1 < ../ones_snowball_rus_cp1251.diff

**** Сборка нормального клиента под свой дистрибутив ****

Для сборки нам понадобятся следующие зависимости :

freetype-devel
lua-devel
libogg-devel
libvorbis-devel
SDL-devel
openal-soft-devel
tinyxml-devel
libpng-devel
zlib-devel
Я привел названия пакетов из своей Fedor'ы, думаю, в других дистрибутивах они называются похоже. Чтобы клиент точно собирался с devel-пакетами из дистрибутива, а не со своими встроенными версиями, мы, на всякий случай, удалим лишнее :
rm -rf ExternalLibs/AL
rm -rf ExternalLibs/freetype2
rm -rf ExternalLibs/glpng/png
rm -rf ExternalLibs/glpng/zlib
rm -rf ExternalLibs/iprof
rm -rf ExternalLibs/libogg-1.2.0
rm -rf ExternalLibs/libvorbis-1.3.1
rm -rf ExternalLibs/lua-5.1.4
rm -rf ExternalLibs/SDL12
rm -rf BBGE/GL
rm -rf BBGE/glext
rm -f ExternalLibs/tinyxml*
Далее нужно скомпилировать клиент :
cmake CMakeLists.txt
make
Скопировать его в папочку с ресурсами :
strip aquaria-rus.cp1251
cp aquaria-rus.cp1251 /My/Aquaria/Installed/Dir/
И можно играть :
cd /My/Aquaria/Installed/Dir/
./aquaria-rus.cp1251

**** Сборка клиента с встроенными библиотеками ****

Если нет возможности, или желания использовать devel-пакеты своего дистрибутива, то можно использовать библиотеки, идущие с клиентом. Для этого не надо стирать соответствующий каталог, а для cmake нужно указать встраивание. К примеру, для использования встроенных версий freetype и libpng, это будет выглядеть так :

Не стираем ExternalLibs/freetype2 !
Не стираем ExternalLibs/glpng/png !
cmake -DAQUARIA_INTERNAL_FREETYPE=TRUE -DAQUARIA_INTERNAL_PNG=TRUE CmakeLists.txt
make
Определены следующие макросы :
AQUARIA_INTERNAL_FREETYPE
AQUARIA_INTERNAL_LUA
AQUARIA_INTERNAL_OGGVORBIS
AQUARIA_INTERNAL_TINYXML
AQUARIA_INTERNAL_PNG
AQUARIA_INTERNAL_ZLIB
А вот макросы AQUARIA_INTERNAL_SDL и AQUARIA_INTERNAL_OPENAL не работают, т.к. не имеют встроенных аналогов. Для них придется ставить devel-пакеты (или добывать библиотеки с заголовочными файлами другим, свойственным вашему дистрибутиву, методом) в любом случае.

**** Для тех, кому все вышеописанное - темный лес ****

Ну а для людей, далеких от репозиториев Mercurial, патчей и компиляции, я сделал универсальную бинарную сборку. Называется она aquaria-rus.cp1251_static.tar.bz2, и добывается по адресу http://files.mail.ru/0XSS4J. Эта сборка должна работать на любом дистрибутиве Linux с glibc >= 2.3.2 (это любой дистрибутив моложе 10 лет), и не требовать дополнительных зависимостей. Достаточно распаковать архив в папку с ресурсами и запустить обертку для клиента :

tar jxf aquaria-rus.cp1251_static.tar.bz2 -C /My/Aquaria/Installed/Dir/
cd /My/Aquaria/Installed/Dir/
./aquaria-rus.cp1251_static.exe

Вот и все. Захватывающего прохождения!

Отлично! Я с 1го индибандла так и не прошел - засел на многоножке из механического дворца, может теперь на нормальном языке поиграю когда дойдут руки допройти. Может патчи отправить куда-нибудь поближе к основному дереву исходников типа там бранчи или чего-то типа того, ато ведь через год по этим ссылкам будет сплошное 404.

bender ★★★★★
()

Будет время - обязательно проверю.

Dominat ★★
()

Какой интерес вот так вот возиться, да ещё и отдавать деньги 1С за непредоставленный клиент?

Gary ★★★★★
()
Ответ на: комментарий от Gary

Ваши дети играют исключительно под линуксом в англоязычные версии nethack? Я считаю, что эта локализация стоит своих 300р, особенно в условиях отсутствия альтернатив.

А интерес возится есть, как и во многих других начинаниях - just for fun.

Salieff
() автор топика

Огромное спасибо. Саму игру я получил в Humble Bundle, но так и не начал играть. Русская версия мне поможет.

А я надеялся, что 1С/Snowball сделал это официально. Уже надеялся на появление Trine и Amnesia.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от bender

Насчет бранча - даже не знаю. Во-первых, клиент, собранный таким образом, не будет работать с обычными ресурсами, а только с 1С-ными. Ну а во-вторых, этим же заняться надо :)

Сэйвы таким образом не проверял, но по идее должны, вроде они хорошо абстрагированы.

Salieff
() автор топика

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

Не легче ли было перезагрузиться в венду? :)

bsdfun ★★★★★
()
Ответ на: комментарий от bsdfun

Ну, на самом деле, просто зацепило :) Я это дело бросал пару раз, но недавно все-таки доделал.

Salieff
() автор топика
Ответ на: комментарий от ZenitharChampion

Скачать - возможно, насчет легально - сомневаюсь :) Ведь наши берут деньги именно за локализацию, все остальное как бы там было и без них...

Salieff
() автор топика

чем хороши игры под лить так тем, что пока их запустишь уже «наиграешся» и вроде как сама игра уже не нужна:)

TheMixa ★★★
()
Ответ на: комментарий от Salieff

Вот именно, файлы данных для Quake и Unreal Tournament я вот покупал. А бинарники игры скачиваются официально

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

А я надеялся, что 1С/Snowball сделал это официально. Уже надеялся на появление Trine и Amnesia.
Для этого нужно:
1. Переделывать матрицу для печати дисков (чтобы были бинарники для Linux и MacOS).
2. Делать кросплатформенный инсталлятор для Windows, Linux и MacOS, который будет уметь использовать один архив с файлами данных при установке на различные ОС. Готового такого я пока не видел.
3. Оказывать техподдержку по версиям для Linux и MacOS.
4. Издание цифровой версии в российских Интернет-магазинах может (с юридической точки зрения) потребовать разработки средств DRM для Linux.
Продажи MacOS- и Linux-версий каждой из этих игр в России просто не окупят затраты на всё перечисленное - смиритесь. Тем более Aquaria и Trine многие уже купили по Humble Bundle и второй раз покупать отказались бы, а Amnesia:

> Возможно ли легальнос скачать файлы локализации и задействовать с легально приобретённой английской игрой?
Локализованная версия в данном случае отдельный продукт. Если нужна локализованная Amnesia - покупайте английскую для Linux, накатывайте патч 1.2 - появится русская локализация.

RussianNeuroMancer ★★★★★
()

У меня вопрос к автору порта. Ты сильно далеко играл? У меня сайт создаётся, там всего несколько десятков игр пока. Ты бы мог сделать краткий обзор со скриншотами?

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Ну, достаточно далеко. Верхнюю половину карты разгреб, дошел до бездны, там пока застрял на битве с королем медуз. Насчет обзора не уверен, могу выдать сэйвы. Еще можно попастись вот тут : http://aquaria.x64it.ru/forums/

Salieff
() автор топика

Мэн!
Спасибо, сделал маленькой школьнице.

amorpher ★★★★★
()
21 ноября 2011 г.

Хочу Data-файлы от русской игры, английская уже есть и легально приобретена. Возможно ли? Поиск по слову «русификатор» ничего не даёт, кроме переведённых субтитров. А дело в том, что как пишет автор темы, код игры немного обфусцирован 1С-ом, и DATA-файлы с английской версией для Windows не заработают.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от ZenitharChampion

Невозможно. Отечественные локализаторы считают объектом торговли непосредственно сами локализованные ресурсы. В принципе, имеют полное право.

Для работы с английскими ресурсами достаточно просто собрать клиент акварии, безо всяких моих патчей, и все будет работать.

Salieff
() автор топика
Ответ на: комментарий от Salieff

Мне бы просто сами русский файлы, без полной копии игры... Ну да ладно. Как ты думаешь, твой патч скомпилируется в Windows? А то на все посещённые мной ресурсы можно будет поместить, наконец, русификацию плюс патченный бинарник вместо английского, а то только локализация субтитров не так классно.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от lmtea

Мне или vovans в jabber. А я переводил по нему статью на Википедии, с нуля. Можно в «Истории» посмотреть.

То, что ты хочешь написать статью на наш с vovans сайт, напомнило мне один пул совместной генерации биткойнов. Постоянных пользователей около семи, но никто не уходит туда, где их много, хотя смысла собираться в таком маленьком количестве нет. Так же и здесь: столько разных проектов, а отправить обзор ты предложил мне. Я не против.

ZenitharChampion ★★★★★
()
3 апреля 2012 г.

Где покупать игру Aquaria для Linux тем, кто не застал Humble Bundle? Здесь только для Windows и Mac OS.

ZenitharChampion ★★★★★
()

Переводы не нужны, а вот акварию надо бы пройти.

vurdalak ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.