Как стать автором
Обновить

Сборка OpenTTD на MacOS X

Здравствуй, хабраюзер!
Захотелось мне на днях вспомнить детство и поиграть в знаменитый экономический шедевр девяносто-бородатого года от великолепного, по тем временам, игростроителя Microprose. Конечно же речь идет о Transport Tycoon Deluxe.
Гугл, недолго думая, оповестил меня о том, что в мире давно уже существует его OpenSource версия под вполне логичным именем OpenTTD, релиз которой произошел совершенно недавно, и это не может не заинтересовать поклонников. Значит проект благополучно развивался и вобрал в себя если не все самое лучшее, то очень много интересного, а наличие исходных кодов недвусмысленно намекает на мультиплатформенность. Ну что ж, интригует!
На англоязычном сайте проекта размещен список платформ на которых произошел удачный порт, в нем не числятся разве что блендеры и микроволновки. В разделе Download русскоязычного ресура я нашел предыдущую скомпилированную под МакОСь версию 1.0.0, что характерно — меня это не устраивает, когда есть сырцы 1.0.1, соберу сам.
Изучение разделов Вики, а также различных ссылок привело к следующему руководству, которое фактически писал для себя, но рука не поднялась удалить, с некоторыми поправками и дополнениями выкладываю.
Нам потребуется:
  • XCode 3.1~4.* (в зависимости от породы кошечек)
  • MacPorts
  • lib's (которые получим из предыдущего)
  • src OpenTTD

Offtop: Мысль которая пришла уже в процессе подготовки рабочего материала — страшно то, что для веса исходников игрушки в ~180мб со всеми дополнениями, приходится качать 800Мб инструментария разработчика в лице XCode 3.2, не говоря о мелочевке aka MacPorts + lib's, ну да ладно, я за идею.
Кто не знает: XCode — IDE для MacOS в составе имеет GCCб, CC и что-то там еще, оно нам надо для самого ответственного процесса — для компиляции, поэтому качаем безоговорочно, причем пользователям обоих Leopard'ов и ниже придется поискать версии не ниже 3.1-3.2 для своей системы, та что находится в AppStore имеет версию 4 и предназначено для Лёвушки о чем оно нам, при попытке установить, не стесняется напомнить. Значит просторы интернета вам в помощь, я качал с популярных трекеров.
Для установки библиотек нам понадобятся MacPorts (подобие портов FreeBSD). Скачать их можно gzip или bz2.
В терминале добираемся до архива и распаковываем.
tar xzvf MacPorts-2.0.3.tar.gz
Затем
cd MacPorts-*
./configure && make && sudo make install

Напоминаю — вы должны знать пароль root, сами понимаете sudo требует.
По завершении можно снести исходники, они нам больше не понадобятся.
cd ../
rm -rf MacPorts-*

Адаптируем свои переменные окружения для работы с портами.
  • редактируем /etc/paths с добавлением строчек /opt/local/bin и /opt/local/sbin в НАЧАЛО файла — таким образом программы установленные с помощью MacPorts будут иметь приоритет перед общесистемными программами с таким же названием.
  • редактируем /etc/manpaths с добавлением строчек /opt/local/share/man (ну или в папке manpaths.d создаем произвольный документ содержащий эту строку пути)
  • до Тигрей включительно: добавляете соответствующее значения к переменной DISPLAY что необходимо для запуска X11-зависимых программ, Леопарды проверяют выполнение этого требования. (я не выполнял, Снежный Барс)

Заключительный аккорд
sudo port -v selfupdate
N.B. Переменные окружения необходимо перечитать либо заново открыть терминал.
По завершению обновления, MacPorts становятся юзабельными и мы ставим необходимые нам библиотеки.
sudo port install libpng
sudo port install liblzma
sudo port install libiconv
sudo port install fontconfig
sudo port install freetype (должен установится по зависимостям от предыдущего)
sudo port install icu
sudo port install zlib +universal
Все последующие манипуляции я провожу в каталоге с будущей игрой:
mkdir -p /Users/myapple/games/openttd/
cd /Users/myapple/games/openttd/

Забираем исходники OpenTTD с оффсайта:
wget http://open.ttdrussia.net/get.php?src-openttd-1.0.1-rt.tar.gz
tar xzvf src-openttd-1.0.1-rt.tar.gz
cd 1.0.1

Отдельно надо бы отметить что пакет lzo2, установленный из портов, ./configure по неизвестным науке причинам не видит, но мы же можем ткнуть носом:
./configure --with-liblzo2=/opt/loclal/lib/liblzo2.a --CFLAGS=-I/opt/local/include --LDFLAGS=-L/opt/local/lib
make && make bundle

У меня при make bundle, ругался на права доступа:
[BUNDLE] Constructing bundle
/bin/sh: /Users/myapple/games/openttd/1.0.1/os/macosx/plistgen.sh: Permission denied
make: *** [bundle] Error 126

Странно, конечно, единственный файл из всего архива к которому не оказалось прав, даём и снова повторяем:
chmod 755 os/macosx/plistgen.sh
make bundle

В результате, мы получим openttd.app находяшийся в bundle. Я предпочитаю складывать игры непосредственно в папку, поэтому:
mv bundle/openttd.app ../
Мне лично исходники больше не нужны:
cd ..
rm -rf 1.0.1

При первом запуске создаются папки для контента и конфигурационный файл, который я рекомендую отредактировать — указать свои шрифты и кегль, предпочтение лучше отдать полужирным:
small_font = meryobold.ttf
medium_font = meryobold.ttf
large_font = meiryobold.ttf
small_size = 8
medium_size = 14
large_size = 16

При этом в конфиге необходимо указать полный путь до шрифта, хотя я предпочел положить его в папку.
Вот такой получился конечный результат:
image
Думаю, на этом закончим. Приятного времяприпровождения!
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.