среда, 24 февраля 2010 г.

JA2 во FreeBSD

Много лет назад, когда я ещё жил в общежитии университета, у нас ещё не было ни локальной сети, ни Интернета. Тогда мы с соседями убивали время за играми... Мне особенно нравились различные RPG и пошаговые стратегии. Одной из таких игр была Jagged Alliance 2. Довольно неплохая игра для того времени.

Я обнаружил её в портах FreeBSD, и что интересно, сейчас она уже распространяется с открытым исходным кодом. Захотелось посмотреть, как она будет выглядеть сейчас. Установка игры из порта games/jaggedalliance2 не вызвала никаких сложностей. Проблему вызвало только отсутствие файлов ресурсов игры - карты, озвучка, ролики и т.п. Они в состав порта не входили. Нужны были оригинальные диски с игрой. Диски когда-то у меня были (я покупал 1С-овскую "Gold" версию), но вот найти их мне не удалось, смутно припоминалось, что возможно я подарил их племяннику жены...

Ну что ж.. После успешной установки сдаваться так просто не хотелось, немного погуглив :) я нашёл нужные мне исошники. Скачал, но опять же на них ресурсы были запакованы инсталлятором. Пришлось
воспользоваться компьютером жены с Windows, где я и установил игру. :)

После этого я создал на своём ZFS пуле новый датасет установиви свойство casesensitivity в значение insensitive для того чтобы не возникло проблем с регистром символов в именах файлов и каталогов:
> sudo zfs create -o casesensitivity=insensitive -o mountpoint=/usr/local/share/ja2 zroot/data
И скопировал с компьютера жены каталог Data в созданный датасет. После этого запустил из коммандной строки ja2, игра тут же закрылась и в домашнем каталоге создался подкаталог ~/.ja2 в котором я отредактировал файл ~/.ja2/ja2.ini и указал там путь к файлам ресурсов:
#Tells ja2-stracciatella where the binary datafiles are located
data_dir = /usr/local/share/ja2
Но игра и в этот раз не запустилась, ругнувшись на файлы ресурсов... Посмотрев в содержимое архива с исходниками я обнаружил, что там в параметрах make упоминается RUSSIAN_GOLD, которого нет среди опций порта. А ведь ISO'шки с игрой у меня были именно версии Gold. Я быстренько поправил Makefile порта добавив ещё одну опцию RUSSIAN_GOLD и пересобрал игру. Запустив новый бинарник игра запустилась в окошечке и вполне неплохо выглядела. По Alt+Enter она может разворачиваться на полный экран и обратно.


После этого я решил оформить патч и отправить PR для внесения изменений в порт. Патч получился таким:
--- jaggedalliance2/Makefile     2009-06-14 12:41:39.000000000 +0400
+++ jaggedalliance2/Makefile     2010-02-01 08:27:31.825416359 +0300
@@ -7,6 +7,7 @@
 PORTNAME=       ja2
 PORTVERSION=    0.12
+PORTREVISION=   1
 CATEGORIES=     games
 MASTER_SITES=   http://deponie.yamagi.org/freebsd/distfiles/ \
                 http://tron.homeunix.org/ja2/
@@ -34,7 +35,8 @@ OPTIONS=       DUTCH   "Compile for Dutch versio
                 GERMAN  "Compile for German version (choose ONE)"       Off \
                 ITALIAN "Compile for Italian version (choose ONE)"      Off \
                 POLISH  "Compile for Polish version (choose ONE)"       Off \
-                RUSSIAN "Compile for Russian version (choose ONE)"      Off
+                RUSSIAN "Compile for Russian version (choose ONE)"      Off \
+                RUSSIAN_GOLD "Compile for Russian Gold version (choose ONE)"    Off
 .include 
@@ -52,6 +54,8 @@ MAKE_ARGS+=    LNG=ITALIAN
 MAKE_ARGS+=     LNG=POLISH
 .elifdef WITH_RUSSIAN
 MAKE_ARGS+=     LNG=RUSSIAN
+.elifdef WITH_RUSSIAN_GOLD
+MAKE_ARGS+=     LNG=RUSSIAN_GOLD
 .else
 IGNORE= no language has been chosen. Please choose the appropriate language for your game CD
 .endif
Вроде все изменения тривиальные и объяснять нечего... Сам PR можно посмотреть здесь. Через три недели патч был одобрен и изменения были внесены. Такая большая задержка получилась из-за ожидания ответа мэйнтейнера, который так и не ответил...

1 комментарий: