Компиляция и сборка Wargus (Warcraft 2) на Debian 9 GNU/Linux, пошаговое руководство
Краткое руководство по компиляции и сборке Wargus + Stratagus (улучшенный Warcraft 2) на операционной системе GNU/Linux Debian 9 (Stretch). Как сконфигурировать и скомпилировать бинарные файлы игры, извлечение ресурсов из оригинального Warcraft II, конвертации и подготовка музыкальных файлов, как это все собрать до кучи и запустить легендарную игру-стратегию под GNU/Linux.
В одной из прошлых статей было рассказано о проекте Wargus (Warcraft II), позже вышла достаточна большая статья с подробным пошаговым описанием компиляции Wargus на GNU/Linux Debian 8 (Jessie).
Прошло время и появилась новая версия Debian - 9 (Stretch). Игра, собранная под 8-ю ветку операционной системы (ОС), на 9-й версии уже не запускается - проблемы с совместимостью и поиском некоторых библиотек.
В этом мануале постараюсь более кратко изложить пошаговый план компиляции и сборки Wargus + Stratagus под операционной системой GNU/Linux Debian 9 Stretch.
Язык интерфейса игры - английский! В версии "2.3" под GNU/Linux кириллические шрифты пока что не отображаются.
Содержание:
- Подготовка ОС и инструментов
- Компиляция Stratagus
- Компиляция Wargus
- Распаковка ресурсов из игры Warcraft II
- Собираем все до кучи
- Музыка для игры - конвертация и настройка
- Запуск игры
- В завершение
Подготовка ОС и инструментов
Все операции будут выполняться под операционной системой GNU/Linux Debian 9, установленной в вирутальной машине VirtualBox, что в свою очередь позволило провести все необходимые эксперименты с возможностью отката действий используя снепшоты (snapshots) образа с установленной ОС, а также не засорять основную рабочую ОС.
Вывод команды "uname -a" в виртуальном машине:
Linux debian 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64 GNU/Linux
Вывод команды "lsb_release -a":
Debian GNU/Linux 9.1 (stretch)
Предполагается что у вас уже установлена операционная система с удобной, по вашему выбору, графической оболочкой (KDE, Gnome и т.п.).
Выполним установку всех необходимых инструментов и библиотек (список команд для запуска из консоли):
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install mc p7zip
sudo apt-get install liblua5.1-0-dev zlib1g-dev libpng-dev libsdl1.2-dev libtolua++5.1-dev
sudo apt-get install libvorbis-dev libtheora-dev libfluidsynth-dev libmikmod-dev libbz2-dev libmng-dev
sudo apt-get install ffmpeg2theora libcdparanoia-dev libstorm-dev libgtk2.0-dev
sudo apt-get install timidity vorbis-tools fluid-soundfont-gm
Этот набор команд установит следующие инструменты и ресурсы:
- компиляторы, скрипты и утилиты для компиляции программ из исходных кодов;
- консольный файловый менеджер и универсальный архиватор;
- набор библиотек для компиляции Stratagus;
- набор библиотек для компиляции Wargus;
- программы для работы с музыкальными файлами в форматах MIDI и OGG.
Создадим директорию, в которой будет выполняться вся работа по компиляции и сборке игры:
mkdir /tmp/game
Компиляция Stratagus
Stratagus - это движок для построения стратегических 2D-игр, работающих в реальном времени. Для получения исходных кодов движка переходим на сайт https://launchpad.net/stratagus и качаем архив с самой свежей версией. На момент написания статьи последняя доступная версия - 2.3. Размер скачиваемого файла - примерно 2,5МБ.
Скачивание архива выполним при помощи "wget", потом он будет распакован в рабочую директорию, а в этой поддиректории создадим каталог "build" для компиляции проекта. В конце выполняем конфигурацию (cmake) и саму компиляцию (make).
Для осуществления всего этого процесса нужно выполнить следующие команды (помним что в моем случае версия проекта - 2.3):
cd /tmp/game
wget -c "https://launchpad.net/stratagus/trunk/2.3/+download/stratagus_2.3.0.orig.tar.gz"
tar -xf stratagus_2.3.0.orig.tar.gz
cd stratagus_2.3.0.orig && ls -la
mkdir build && cd build
cmake ..
make
Все должно успешно сконфигурироваться и скомпилироваться.
Рис. 1. Успешная компиляция Stratagus в GNU/Linux.
Двигаемся дальше...
Компиляция Wargus
На данном этапе нам необходимо скачать файлы с исходным кодом проекта Wargus (отличная реализация игры Warcraft II на основе движка Stratagus).
Необходимо скачать архив с исходными кодами Wargus той же версии, что и скачанный нами на предыдущем этапе Stratagus (в моем случае - 2.3). Архивы и ресурсы проекта размещены здесь: https://launchpad.net/wargus . Размер скачиваемого архива - примерно 43МБ.
Команды для скачивания, распаковки, создания директории сборки проекта и для теста конфигурации:
cd /tmp/game
wget -c "https://launchpad.net/wargus/trunk/2.3/+download/wargus_2.3.0.orig.tar.gz"
tar -xf wargus_2.3.0.orig.tar.gz && cd wargus_2.3.0.orig && ls -la
mkdir build && cd build
cmake ..
Теперь, чтобы Wargus успешно прошел этап конфигурации, нужно выполнить замены в трех файлах:
- CMakeLists.txt: find_package(Stratagus REQUIRED) -> #find_package(Stratagus REQUIRED)
- CMakeCache.txt: STRATAGUS_INCLUDE_DIR-NOTFOUND -> /tmp/game/stratagus_2.3.0.orig
- wargus.cpp: #include <stratagus-game-launcher.h> -> #include "stratagus-game-launcher.h"
Выполняем эту задачу используя "sed" (stream editor):
sed -i 's/find_package(Stratagus REQUIRED)/#find_package(Stratagus REQUIRED)/g' /tmp/game/wargus_2.3.0.orig/CMakeLists.txt
sed -i 's/STRATAGUS_INCLUDE_DIR-NOTFOUND/\/tmp\/game\/stratagus_2.3.0.orig/g' /tmp/game/wargus_2.3.0.orig/build/CMakeCache.txt
sed -i 's/#include <stratagus-game-launcher.h>/#include "stratagus-game-launcher.h"/g' /tmp/game/wargus_2.3.0.orig/wargus.cpp
Осталось скопировать заголовочный файл из стратагуса в варгус и запустить процесс конфигурации с последующей компиляцией:
cp /tmp/game/stratagus_2.3.0.orig/gameheaders/stratagus-game-launcher.h /tmp/game/wargus_2.3.0.orig
cmake ..
make
Процесс компиляции займет некоторое время и должен завершиться успешно:
Рис. 2. Удачное завершение компиляции Wargus в GNU/Linux.
Распаковка ресурсов из игры Warcraft II
Для выполнения работ на данном этапе нужно создать две директории:
- war2data - для файлов-архивов ресурсов игры Warcraft II;
- data - для извлеченных ресурсов, что будут использоваться в Wargus.
Делаем это с помощью следующих команд:
cd /tmp/game/wargus_2.3.0.orig/build/
mkdir war2data && mkdir data && ls -la
Для распаковки ресурсов нам нужны все файлы-архивы (*.ins, *.war ...) из папки "DATA" от оригинальной игры Warcraft 2 Tides of Darkness с дополнением Beyond The Dark Portal.
Допустим что все файлы игры (War2 под DOS/WIN95) уже доступны нам из директории "/mnt" (подмонтирован компакт-диск или сетевая папка с игрой на другом ПК, файлы скопировали в папку из флешки и т.п).
В таком случае копирование нужных файлов данных для Wargus можно выполнить вот такой командой:
cp /mnt/DATA/* /tmp/game/wargus_2.3.0.orig/build/war2data
Рис. 3. Копируем ресурсы из оригинальной игры Warcraft 2 в Linux.
Запускаем процесс извлечения ресурсов:
cd /tmp/game/wargus_2.3.0.orig/build/
./wartool war2data data
Распаковка пройдет достаточно быстро:
Рис. 4. Извлечение ресурсов из игры Warcraft 2 для сборки Wargus под Linux.
Собираем все до кучи
Пришло время собрать все результаты нашей работы в одной директории, создадим папку для игры:
mkdir /tmp/game/Wargus
Выполним копирование бинарных файлов:
cp /tmp/game/stratagus_2.3.0.orig/build/stratagus /tmp/game/Wargus/
cp /tmp/game/stratagus_2.3.0.orig/build/png2stratagus /tmp/game/Wargus/
cp /tmp/game/wargus_2.3.0.orig/build/wargus /tmp/game/Wargus/
cp /tmp/game/wargus_2.3.0.orig/build/wartool /tmp/game/Wargus/
cp /tmp/game/wargus_2.3.0.orig/build/pudconvert /tmp/game/Wargus/
Добавим файлы данных и настроек для скомпилированного Варгуса:
cp -R /tmp/game/wargus_2.3.0.orig/campaigns/ /tmp/game/Wargus/
cp -R /tmp/game/wargus_2.3.0.orig/graphics/ /tmp/game/Wargus/
cp -R /tmp/game/wargus_2.3.0.orig/maps/ /tmp/game/Wargus/
cp -R /tmp/game/wargus_2.3.0.orig/mods/ /tmp/game/Wargus/
cp -R /tmp/game/wargus_2.3.0.orig/music/ /tmp/game/Wargus/
cp -R /tmp/game/wargus_2.3.0.orig/scripts/ /tmp/game/Wargus/
cp -R /tmp/game/wargus_2.3.0.orig/sounds/ /tmp/game/Wargus/
Скопируем извлеченные из игры Warcraft II ресурсы:
cp -R /tmp/game/wargus_2.3.0.orig/build/data/* /tmp/game/Wargus/
Смотрим получившуюся структуру файлов и директорий в файловом менеджере Midnight Commander:
cd /tmp/game/Wargus && mc
Рис. 5. Смотрим содержимое папки с игрой Wargus после сборки.
Для выхода из "mc" и возврата в консоль жмем F10 (Quit).
Музыка для игры - конвертация и настройка
Добавим в программный MIDI-синтезатор timidity поддержку набора инструментов Fluid (R3) General MIDI SoundFont (GM).
sudo sed -e 's|^source|#source|' -i /etc/timidity/timidity.cfg
sudo sed -e '$a source /etc/timidity/fluidr3_gm.cfg' -i /etc/timidity/timidity.cfg
sudo systemctl restart timidity
Выполним конвертацию и сжатие музыкальных файлов: MIDI -> WAV -> OGG -> OGG.GZIP.
cd /tmp/game/Wargus/music
for f in *.mid; do timidity "$f" -Ow -o "${f%.mid}.wav"; done
for f in *.wav; do oggenc "$f"; done
rm ./*.mid && rm ./*.wav
for f in *.ogg; do gzip "$f"; done
ls -la
Изменяем расширение музыкальных файлов в настройках игры:
- wc2-config.lua: wargus.music_extension = ".mid" -> wargus.music_extension = ".ogg".
sed -i 's/wargus.music_extension = ".mid"/wargus.music_extension = ".ogg"/g' /tmp/game/Wargus/scripts/wc2-config.lua
Задаем музыкальный файл играющий при старте игры, для этого откроем в текстовом редакторе файл настроек:
nano /tmp/game/Wargus/scripts/guichan.lua
Для поиска по тексту в редакторе нажимаем комбинацию клавиш CTRL+W и помещаем в строку запроса ранее скопированный в буфер обмена (CTRL+C) искомый кусок текста (правая клавиша миши, потом Paste и ENTER в редакторе).
Текст для поиска:
function BuildProgramStartMenu
Под этим текстом ищем строчку:
PlayMusic("music/Main Menu" .. wargus.music_extension)
Приводим ее к следующему виду:
PlayMusic("music/Orc Briefing.ogg")
Для выхода из редактора жмем CTRL+X, на запрос сохранять ли файл - подтверждаем с помощью Y и ENTER.
Запуск игры
Запускать игру нужно с помощью бинарного файла "stratagus":
cd /tmp/game/Wargus
./stratagus
Рис. 6. Заставка Warcraft 2 при запуске Wargus на GNU/Linux.
Должна зазвучать музыка, когда заставка исчезнет можно покопаться в настройках игры. В меню настроек можно задать нужные возможности, к примеру включить отображение наносимых юнитами повреждений (для применения нужен перезапуск) и многое другое:
Рис. 7. Меню настроек игры Wargus на GNU/Linux.
Игра содержит мощный редактор карт, в котором доступны все постройки и юниты, можно создавать карты огромных размеров и на много игроков.
Рис. 8. В игре Wargus присутствует мощный редактор карт.
Теперь, убедившись в работоспособности игры, можно перенести ее на основную рабочую систему или другой компьютер с установленной ОС GNU/Linux Debian 9.
Создать файл-архив с игрой можно используя одну из команд:
tar -zcf wargus-linux-debian-9.tar.gz /tmp/game/Wargus/
7z a wargus-linux-debian-9.7z /tmp/game/Wargus/
Несколько скриншотов игры с разрешением экрана 1280х800 (рисунки кликабельны):
Рис. 9. Играем в Wargus за орков, режим Skirmish (против компьютера), карта 64x64.
Рис. 10. Играем в Wargus за людей, режим Skirmish (против компьютеров), карта 128x128.
В завершение
Используя аналогичный алгоритм можно выполнить компиляцию и сборку игры на других версиях GNU/Linux (CentOS, Fedora, Arch...) и на других платформах. Для примера, можно попробовать собрать игрушку на Raspberry Pi 2/3.
Ниже вы можете посмотреть видео с процессом сборки Wargus на GNU/Linux Debian 9, который был освещен в данной статье:
Музыка в видео: Computer Music All-Stars - Albatross v2.
Wargus содержит множество настроек игры и игровых режимов, позволяет играть как по сети, так и в одиночку на прохождение миссий или сражения с компьютером. Сборник-архив с большим количеством переконвертированных карт (pud в sms) для Варгуса вы можете найти в моих предыдущих статьях.
Удачной компиляции и приятной игры! )