Категории публикаций
Подписка на рассылку по Email
новости (подписчиков: 4)
комментарии (подписчиков: 2)

Отменить подписку
Популярные публикации
Интересный опрос
Что вас больше всего интересует?

Заработок в интернете
Радиоэлектроника
Программирование
Операционные системы
Информационная безопасность
Саморазвитие, лайфхак
Спорт
Другое
Поблагодарить автора
donate
1B4ZZ2PXUd9E7AqEB82AqFnkpk2bt5hQG7

Сборка и запуск Wargus (Stratagus) на Linux снуля (WarCraft 2)

Размещено в категории: Linux

Показан процесс компиляции и настройки веселой игры Wargus (Stratagus) - клона WarCraft 2 под GNU Linux.
Статья написана с расчетом на начинающего пользователя Линукс, все описано достаточно подробно и с пояснениями чтобы смог разобраться каждый. Материал получился достаточно большой, сопровождается множеством картинок.

Что это за игра и как ее собрать в ОС Windows вы можете прочитать в публикации: Wargus - старая добрая игра WarCraft II в новом лице.

Чтобы получить готовую игру на Linux нам нужно будет скомпилировать из исходных кодов Stratagus + Wargus. Это увлекательный квест (приключение), который не только подарит вам интересную и обновленную старую игру-клон WarCraft II, но и научит некоторым базовым операциям в Linux, поможет сориентироваться что и где искать, даст толчек к использованию смекалки в подобных Линукс-делах и многое другое.

WarCraft 2, Wargus, Stratagus и Linux

Сразу оговорюсь что собрать эту связку было не просто, причиной всему - большое количество зависимостей и разнообразных подводных камней на пути к острову Wargus. В то же время мы будем все делать постепенно и по порядку - все обязательно получится!

Ну что, вы готовы к данному приключению? - тогда поехали...

Установка и сборка состоит из нескольких этапов:

  1. Подготовка
  2. Компиляция Stratagus;
  3. Компиляция Wargus;
  4. Конвертация и подготовка ресурсов из игры WarCraft II;
  5. Настройка и подготовка музыки.

Команды по поиску и установке пакетов лучше всего выполнять в отдельном окне терминала. Команды для компиляции и сборки Stratagus, Wargus также будем выполнять в своих отдельных окнах (или вкладках) терминала (консоли).
Для каждой задачи - свой терминал, это поможет не запутаться и сэкономить некоторое время и нервы.

Для удобства не ленитесь открывать дополнительные окна терминалов, к примеру если нужно что-то проверить или посмотреть в файловом менеджере MC (Midnight Commander).

 

Подготовка

В наличии у меня имеется чисто установленный Debian GNU Linux 8.1 (Jessie), на нем и буду показывать весь процесс компиляции и настройки с нуля. У вас же может быть готовая обжитая система Debian GNU Linux, Ubuntu или другая на основе Debian.
Что касается других дистрибутивов Линукс - то там все делается подобным образом, могут лишь только отличаться названия команд, путей и пакетов.

Все операции будем выполнять под обычным пользователем, а для критичных операций (установка пакетов и т.п.) будем предоставлять командам привилегии при помощи команды "sudo".


Первым делом обновим источники пакетов и сами пакеты в системе:

sudo apt-get update && apt-get upgrade

Теперь инсталлируемым вспомогательный софт, он будет нам полезен при работе, а также для более удобной навигации по файловой системе:

sudo apt-get install wget mc krusader p7zip p7zip-full zip lynx

Вот так выглядит запущенный в консоли MC(Midnight Commander) и файловый менеджер Krusader под Debian GNU Linux с графической оболочкой KDE:

MC and Krusader on linux

Откроем другой терминал (текущий у нас будет для поиска и установки пакетов и библиотек) и создадим временную папку где мы будем сохранять и распаковывать архивы, компилировать бинарные файлы, производить все манипуляции:

mkdir /tmp/game
cd /tmp/game

 

Компиляция Stratagus

Запускаем браузер и идем на сайт launchpad.net где размещается исходный код и файлы проекта Stratagus: https://launchpad.net/stratagus
Видим что на сайте проект Stratagus сейчас доступен в версии 2.3 - будем использовать самую свежую на данный момент версию.
Здесь нам нужен исходный код, качаем архив с исходниками, клацнув зеленую кнопочку скачивания исходников справа, как на рисунке:

Качаем исходный код Stratagus

Сохраняем скачанный файл в директорию /tmp/game, которую мы создали на подготовительном этапе.
Примечание: можно скопировать ссылку на файл и закачать его при помощи wget, пример для версии 2.3:

wget -c "https://launchpad.net/stratagus/trunk/2.3/+download/stratagus_2.3.0.orig.tar.gz"

Размер архива - порядка 1Мб, качается достаточно быстро, в зависимости от ширины вашего интернет канала.

Распакуем скачанный архив и перейдем в его директорию командами:

cd /tmp/game && tar -xf stratagus_2.3.0.orig.tar.gz && ls -la
cd stratagus_2.3.0.orig

Вот как выглядит мой терминал после этой операции:

Stratagus скачивание и распаковка исходных кодов

Хорошо, теперь будем разбираться как нам собрать Стратагус из исходных кодов. Если посмотреть структуру каталогов в распакованных исходниках то можно заметить директорию "doc" - в ней можем найти что-то полезное, давайте взглянем что там:

cd doc
ls -la

Stratagus содержимое директории doc

Как видим там есть разная документация, а наиболее нам интересен документ install.html, посмотреть его мы можем открыв в любом веб-браузере который у вас установлен или же в консоли (вначале мы установили консольный браузер Lynx):

lynx install.html

Сразу бросается в глаза список Software Requirements - это список тех библиотек и зависимостей, которые должны быть установлены в системе для корректной компиляции Stratagus:

Stratagus список требуемых библиотек и зависимостей
     
Пролистав немного ниже мы увидим инструкции по инсталляции:

Stratagus инструкция по установке

Итак, начнем с установки библиотек и зависимостей.
Установим CMake, для этого посмотрим в кеше пакетов что у нас есть по ключевому слову "cmake" наиболее близкое к тому что нам нужно:

apt-cache search cmake

Получим списочек, в котором можем увидеть что есть строчка:

cmake - cross-platform, open-source make system

Пожалуй это то что нам нужно и наиболее точно соответствует нашему запросу. Установим пакет "cmake" командой:

sudo apt-get install cmake

Вместе с собой пакет также установит некоторые необходимые дополнительные пакеты.
Идем дальше, будем устанавливать SDL. Что с ним делать и откуда устанавливать - не понятно... Попробуем посмотреть в кеше пакетов что у нас есть по ключевому слову "sdl":

apt-cache search sdl

Огого...хороший списочек получился на несколько страниц, там есть и  "libsdl-gfx1.2-5",  "libsdl1.2-dev" и  "libsdl2-dev" и еще очень много самых разных файлов. Что же с этим списком делать если мы не знаем точно что нам нужно и какой версии? - ответ прост: пока что, ничего!

От этого момента пойдем немного другим путем. Попробуем запустить подготовку пакета Stratagus, а там будем внимательно смотреть чего ему не хватает для сборки и тогда уже будем искать и устанавливать.

Следуя инструкции по установке - перейдем в каталог с распакованными исходными кодами и создадим там папку "build", а также перейдем в только что созданную папку:

cd /tmp/game/stratagus_2.3.0.orig && mkdir build && cd build

Примечание: команда выше - это по сути три отдельные команды, каждая из них разделена от другой двумя символами "&" и выполняться такие команды будут по очереди в том порядке как написано слева направо.
Запускаем команду для конфигурации(подготовки) Stratagus:

cmake ..

Процесс быстро оборвется и оповестит нас о ошибке, вот на что обращаем свое внимание:

Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)

Эта строчка говорит что не хватает запускаемого бинарного файла PkgConfig. Ищем в кеше пакетов что у нас имеется по ключевым словам "pkg config":

apt-cache search pkg config

В списке явно выделяются строчки что сходны с нашим запросом:

pkg-config - manage compile and link flags for libraries
pkgconf - manage compile and link flags for libraries

Возьмем и поставим первый пакет "pkg-config", єтого должно біть достаточно:

sudo apt-get install pkg-config

Хорошо, теперь возвращаемся к подготовке исходных кодов и повторяем команду "cmake .." в том же окне. После запуска получаем опять ошибку:

Could NOT find Lua51 (missing: LUA_LIBRARIES LUA_INCLUDE_DIR)

Строчка говорит о том что не хватает библиотеки Lua51 для будущей компиляции Stratagus, также у нас в списке необходимого ПО есть пункт "Lua 5.1 (required)" - будем искать и ставить этот пакет.
Смотрим список пакетов что есть по запросу "lua 5"(как это сделать вы уже знаете из предыдущего опыта), видим что есть вот такие пакеты наиболее сходные к нашему запросу:

liblua5.1-bitop-dev - Transitional package for lua-bitop-dev
liblua5.1-iconv0 - Transitional package for lua-iconv
liblua5.1-0 - Shared library for the Lua interpreter version 5.1
liblua5.1-0-dbg - Debug symbols for the Lua shared library interpreter
liblua5.1-0-dev - Development files for the Lua language version 5.1

Почему в названии пакета спереди есть lib - потому что это библиотека, а нам нужна именно она (missing: LUA_LIBRARIES), осталось только разобраться какой из этих пакетов ставить. Можно конечно же установить все, но зачем захламлять лишнее пространство - нам ведь нужна библиотека для сборки из исходных кодов, а значит нужны dev-файлы(файлы для разработки), поэтому нам наиболее  подойдет пакет с названием "liblua5.1-0-dev".
Устанавливаем пакет:

sudo apt-get install liblua5.1-0-dev

Пробуем снова подготовить Стратагус командой "cmake ..":

cd /tmp/game/stratagus_2.3.0.orig/build && cmake ..

Отлично, теперь у нас новые ошибочки:

Could NOT find ZLIB (missing:  ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR)

В списке необходимого ПО у нас есть "libpng (required)" и "zlib (required)" - все верно, будем искать и ставить нужные пакеты пока данные ошибки не исчезнут.
Поискав в кеше пакетов претенденты для ZLIB однозначно выделяем строчку:

zlib1g-dev - compression library - development

Ставим данный пакет и пробуем запустить подготовку Стратагуса (команда "cmake .."), теперь строка с ошибкой о ZLIB пропала а на ее месте появилась:

Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.8") 

Строчка говорит что библиотека ZLIB найдена и ее версия "1.2.8" - все отлично, мы движемся в правильном направлении.

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

Отлично, вы отдохнули, а значит продолжим...
Будем устанавливать библиотеку PNG - это набор инструментов для работы с рисунками графического формата PNG (Portable Network Graphics).
Пройдясь по списку найденных в кеше (команда apt-cache search) по ключевому слову "png" пакетов находим те что есть библиотеки (начинаются как правило со слова lib).

Поскольку мы знаем что нам нужен именно dev-вариант библиотеки то можем отсеять все рузульаты в списке найденных пакетов при помощи фильтра, вот как это делается:

apt-cache search png | grep dev

Из списка можем выделить:

libpng12-dev - PNG library - development
libpnglite-dev - lightweight C library for loading and writing PNG images

Здесь мы будем устанавливать именно первый пакет, поскольку второй - это облегченная версия библиотеки PNG (lite), а в требованиях к ПО явно не указано что нужен PNG Lite.

sudo apt-get install libpng12-dev

Установили "libpng12-dev"? -  хорошо, мы двигаемся к победе!

Запускаем снова процесс подготовки и видим что появилась новая ишибка:

Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR)

Что с ней делать мы уже знаем - ищем и устанавливаем библиотеку для SDL!

apt-cache search sdl | grep dev

Вот что можно выделить в списке:

libsdl1.2-dev - Simple DirectMedia Layer development files
libsdl2-dev - Simple DirectMedia Layer development files

Здесь видим что есть версия 1.2 и версия 2. Какую ставить? - пробуем сначала 2-ю.

sudo apt-get install libsdl2-dev

После запуска "cmake .." для стратагуса снова видим сообщение об ошибке что библиотека SDL не анйдена. Значит "libsdl2-dev" - это не тот пакет что нужен, удалим его и установим пакет "libsdl1.2-dev":

sudo apt-get remove libsdl2-dev
sudo apt-get install libsdl1.2-dev

Пробуем снова запустить подготовку стратагуса командой "cmake .." - ошибки с SDL уже нет но вылезла очередная, к которой мы уже готовы и знаем что делать:

Could not find library or program tolua++

Смотрим в список необходимого ПО и видим что там есть пункт "Tolua++ (required)", также ищем в кеше пакетов что у нас есть по ключевому слову "tolua" в наличии:

libtolua-dev - Tool to integrate C/C++ code with Lua - development files
libtolua++5.1-dev - extended tool to integrate C/C++ code with Lua (devel)

Всего две позиции, ставить будем "libtolua++5.1-dev" потому что в требованиях у нас указано "Tolua++":

sudo apt-get install libtolua++5.1-dev

Теперь после запуска "cmake .." у нас все пройдет отлично, вот отрезок начала и конца из выдачи результатов что свидетельствуют об удачной подготовке (конфигурации) к компиляции:

-- checking for module 'maemo-version'
--   package 'maemo-version' not found
-- Found program tolua++: /usr/bin/tolua++5.1
-- Found library tolua++: /usr/lib/libtolua++5.1.a
-- Could NOT find BZip2 (missing:  BZIP2_LIBRARIES BZIP2_INCLUDE_DIR) 
-- Could not find FluidSynth
-- Could not find StackTrace
-- Could not find Mikmod
-- Could not find MNG
-- Could NOT find OggVorbis libraries
.................... много текста................
Theora: Not Found
X11: Found and enabled (Disable by param -DWITH_X11=OFF)
Renderer: OpenGL (Disable by param -DWITH_RENDERER=NativeSDL)
==================================
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/game/stratagus_2.3.0.orig/build 

В принципе уже можно компилировать Стратагус командой "make", но прежде мы все же доставим еще некоторые библиотеки, которые есть рекомендуемыми и опциональными:
Немного распишу что мы будем ставить:

  • libvorbis (recommended) - библиотека для поддержки декодирования и проигрывания звуковых файлов формата *.ogg.
  • libtheora (recommended) - библиотека кодека для поддержки проигрывания формата Theora Video.
  • libfluidsynth (recommended) - библиотека программного MIDI-синтезатора, пригодится для проигрывания музыки в формате *.mid.
  • libmikmod (optional) - библиотека для проигрывания звуковых файлов *.mod (помните чиптюнзы, звуки приставки денди и т.п.).
  • libbzip2 (optional) - пригодится для упаковки звуков, карт и других ресурсов.
  • libmng (optional) - библиотека для работы с графическими файлами *.mng, *.jng, установим ее пусть будет раз о ней упомянули.

Все эти библиотеки были найдены мною в кеше пакетов командой "apt-cache search" так же как и предыдущие, установим их все сразу одной командой:

sudo apt-get install libvorbis-dev libtheora-dev libfluidsynth-dev libmikmod-dev libbz2-dev libmng-dev

Вот что мы выполнили из списка необходимого ПО:

  • CMake (required).
  • SDL (required).
  • libpng (required).
  • zlib (required).
  • Lua 5.1 (required).
  • Tolua++ (required).
  • libogg (recommended).
  • libvorbis (recommended).
  • libtheora (recommended).
  • libfluidsynth (recommended).
  • libmikmod (optional).
  • libbzip2 (optional).
  • libmng (optional).

Все готово к компиляции,  переходим в директорию "/tmp/game/stratagus_2.3.0.orig/build", где мы выполняли команду подготовки "cmake .."

cd /tmp/game/stratagus_2.3.0.orig/build && cmake ..

Запускаем компиляцию Стратагуса:

make

В зависимости от мощности вашего компьютера процесс компиляции займет порядка от 2 до 10 минут, слева в процентах мы можем наблюдать прогресс.

Stratagus успешная компиляция

На этом пока что все, стратагус готов, об этом свидетельствуют бинарные файлы что появились в директории "build". Оставляем терминал открытым, можно окно на время свернуть чтобы не мешало.

 

Компиляция Wargus

Ну вот, Стратагус у нас скомпилирован, теперь займемся Wargus'ом.
Открываем браузер и заружаем сайт где размещается содержимое проекта Wargus: https://launchpad.net/wargus

Версия Варгуса должна точно совпадать с версией Стратагуса, как мы помним Стратагус у нас версии 2.3.0 и на страничке с Варгусом версия такая же - значит все хорошо.

Здесь нам также необходим исходный код, поэтому качаем архив с исходниками, клацнув справа зеленую кнопочку скачивания исходников, как на рисунке:
Wargus скачивание исходных кодов программы для компиляции под Linux
Сохраняем файл в директорию /tmp/game
Для скачивания через WGET выполним команды:

cd /tmp/game
wget -c "https://launchpad.net/wargus/trunk/2.3/+download/wargus_2.3.0.orig.tar.gz"

Размер архива - порядка 45Мб. Распакуем скачанный архив и перейдем в его директорию командами:

tar -xf wargus_2.3.0.orig.tar.gz && cd wargus_2.3.0.orig && ls -la

Вот так выглядит окно консоли с выполненными командами:

Распаковка тарбола для Варгуса и список файлов в в нем

В директории с распакованными исходными файлами и ресурсами мы видим много разных папок и файлов, пробежаться и осмотреться по ним можно в файловом менеджере Midnight Commander или же консольными командами, а также используя графический файловый менеджер Krusader.

Сразу бросается в глаза знакомый уже нам из Стратагуса каталог "doc" но там нет информации по инсталляции и установке Wargus, она собрана в файле README - смотрим его содержимое:

cat README

В разделе "Build depends" нам указаны какие библиотеки нужны для сборки Варгуса, а в разделе "Installation Instructions" - инструкции по установке.
Начнем с библиотек:

  • Gtk+ - необходим, что именно нужно ставить - узнаем потом, при подготовке к компиляции.
  • Hildon - нам не нужен для PC, это для платформы MAEMO (Nokia N900 и т.п.)
  • ffmpeg2theora - нужен для конвертации аудио и видео ресурсов.
  • cdparanoia - нужен для рипа музыкальных CD-треков, в принципе можно и не ставить.
  • cdda2wav - нужен если мы под Windows, значит оно нам не нужно.

Сейчас мы установим две из необходимых библиотек:

sudo apt-get install ffmpeg2theora libcdparanoia-dev

Остальные необходимые библиотеки установим по ходу подготовки к компиляции, приступим...

Переходим в директорию с распакованными исходными кодами Варгуса и создаем в ней директорию "build":

cd /tmp/game/wargus_2.3.0.orig && mkdir build && cd build

Запускаем подготовку:

cmake ..

Видим ошибку:

Could not find stratagus

Все верно, мы скомпилировали стратагус но не установили, устанавливать его мы не будем, а просто отучим Wargus просить этот файл, сделаем небольшой хак, открываем для редактирования файл CMakeLists.txt что лежит в папке /tmp/game/wargus_2.3.0.orig :

nano /tmp/game/wargus_2.3.0.orig/CMakeLists.txt

Появится простой редактор текстовых файлов NANO (название не связано с нано-технологиями, хотя...), в нем мы клавишами-стрелками листаем вниз и ищем строчку:

find_package(Stratagus REQUIRED)

Ставим в начале этой строчки знак решотки "#", то есть закомментируем данное требование, вот как будет выглядеть эта строка:

#find_package(Stratagus REQUIRED)

Для выхода из редактора нажимаем комбинацию клавиш CTRL+X и на запрос о сохранении изменений жмем клавишу "y".
Отлично, теперь запускаем подготовку:

cmake ..

В результате работы команды идим вот что:

-- Could not find StormLib
-- Some or all of the gtk libraries were not found. (missing:  GTK2_GTK_LIBRARY
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/game/wargus_2.3.0.orig/build

CMake говорит что не удается найти StormLib - это библиотека, которая нужна для работы с файлами-архивами в формате MPQ от Blizzard. В кеше пакетов ее не удастся найти, пробуем найти что-нибудь по этой библиотеке в поисковых системах.

К примеру в Google вбиваем запрос "linux StormLib" и на первой же позиции странице результатом видим:


Linux Stormlib SERP


Переходим по ссылке из результатов поиска: https://github.com/ladislav-zezula/StormLib
Открываем еще один отдельный терминал и переходим в нашу рабочую директорию:

cd /tmp/game/

Качаем в эту папку архив с сайта:
Stormlib скачивание исходных кодов

 

wget -c "https://github.com/ladislav-zezula/StormLib/archive/master.zip"

Распаковываем архив и переходим в распакованную новую папку:

7z x master.zip && cd StormLib-master

Создаем директорию "build", переходим в нее, запускаем подготовку и компиляцию StormLib:

mkdir build && cd build
cmake ..
make

Процесс должен завершиться успешно:

Компиляция StormLib

Теперь в этом же терминале запускаем установку библиотеки  с правами суперпользователя:

sudo make install

Отлично, теперь можно закрыть терминал где мы собирали StormLib-master и возвращаемся к терминалу в котором мы работали с Варгусом.
Пробуем запустить подготовку теперь:

cd /tmp/game/wargus_2.3.0.orig/build && cmake ..

Видим что с StormLib теперь все ОК:

-- Found StormLib: /usr/local/lib/libstorm.so

Осталось установить GTK, об этом нам говорит сообщение:

Some or all of the gtk libraries were not found. (missing:  GTK2_GTK_LIBRARY...

Набрав в поисковике (Google) запрос "missing:  GTK2_GTK_LIBRARY GTK2_GTK_INCLUDE_DIR" буквально сразу нашел ответ - нужно установить пакет "libgtk2.0-dev":

sudo apt-get install libgtk2.0-dev

Осталось еще разобраться с сообщением об ошибке:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
STRATAGUS_INCLUDE_DIR

Для этого откроем для редактирования файл CMakeCache.txt командой:

nano /tmp/game/wargus_2.3.0.orig/build/CMakeCache.txt

В редакторе нажмем сочетание клавиш для поиска строки текста CTRl+W, введем текст "STRATAGUS_INCLUDE" и потом жмем Enter - редактор перебросит нас к найденной строке:

STRATAGUS_INCLUDE_DIR:PATH=STRATAGUS_INCLUDE_DIR-NOTFOUND

Вот здесь и содержится наша проблема, путь к исходным файлам Stratagus не указан, отредактируйте строчку чтобы она местила полный путь к папке "stratagus_2.3.0.orig", вот так выглядит исправленная строка:

STRATAGUS_INCLUDE_DIR:PATH=/tmp/game/stratagus_2.3.0.orig

Теперь выходим из редактора (CTRL+X) и на запрос о сохранении подтверждаем (Y).

Сейчас, запустив "cmake .." там где мы готовим Wargus (/tmp/game/wargus_2.3.0.orig/build/), мы увидим вот что:


Wargus подготовка к компиляции успешна!

Все Ок и все на месте, запускаем компиляцию Варгуса:

make

И что вы думаете...вот что у вас должно получиться:
Wargus compilation error stratagus-game-launcher.h

Да, опять ошибка и чего-то не хватает, а именно: сборщик CMake не знает где лежит заголовочный файл stratagus-game-launcher.h для Stratagus, об этом свидетельствует строчка:

wargus.cpp:34:37: fatal error: stratagus-game-launcher.h: No such file or directory

В свое время мне пришлось помучатся в экспериментах как же это чудо связать, расскажу как это сделать.
Сначала был найден графический конфигуратор CMAKE GUI (cmake-qt-gui) и с помощью его я подключал stratagus-game-launcher.h, но потом нашел более простое решение, оно состоит из двух действий:
1) Копируем stratagus-game-launcher.h в директорию с Варгусом, выполняем:

cp /tmp/game/stratagus_2.3.0.orig/gameheaders/stratagus-game-launcher.h /tmp/game/wargus_2.3.0.orig

2) Редактируем файл wargus.cpp:

nano /tmp/game/wargus_2.3.0.orig/wargus.cpp

и приводим в нем строчку "#include <stratagus-game-launcher.h>" к вот такому виду:


Wargus правим файл wargus.cpp
 
Теперь возвращаемся в директорию где мы собираем Wargus и пробуем запустить компиляцию:

cd /tmp/game/wargus_2.3.0.orig/build
make

Теперь все должно собраться:

Wargus удачно скомпилирован на Линукс

Отлично, Stratagus и Wargus у нас скомпилированы, бинарные файлы лежат в папках "build" для каждого из проектов. Идем дальше...

 

Конвертация и подготовка ресурсов из игры WarCraft II

Ну вот, пожалуй самое сложное позади. Осталось подготовить пак с ресурсами для нашей игры. Вытягивать эти ресурсы мы будем из файлов от оригинальной игры WarCraft II.

Где найти файлы оригинального WarCraft II, а это порядка 50-120Мб, думаю не составит для вас проблемы - возможно остался еще лицензионный диск с игрой, в ином же случае Google вам поможет найти эту старую игру для MS-DOS и Win95.

Отмечу что нужен WarCraft II  Tides of Darkness с дополнением Beyond The Dark Portal и желательно на английском языке, на русском не пробовал но думаю что все также будет хорошо.

Создаем папку куда будем распаковывать оригинальные файлы от WarCraft II:

cd /tmp/game/wargus_2.3.0.orig/build/ && mkdir war2data && ls -la

Вот так выглядит результат данных команд:

Wargus создаем папку для распаковки ресурсов WarCraft 2

Также создадим папку где у нас будут готовые извлеченные ресурсы:

mkdir data

Копируем в папку /tmp/game/wargus_2.3.0.orig/build/war2data все файлы из папки "DATA" установленной оригинальной игры WarCraft II, вот к примеру как виглядит содержимое этой папки у меня:


Папка с подготовленными файлами от WarCraft II

Запускаем распаковку и подготовку файлов командой:

cd /tmp/game/wargus_2.3.0.orig/build/ && ./wartool war2data data

Длительность распаковки зависит от мощности компьютера и длится несколько минут, вот как выглядит результат работы:
 @ wargus-warcraft-2-files-extraction-ready.jpg

Посмотрим что у нас есть в директории /tmp/game/wargus_2.3.0.orig/build/data
Распакованные ресурсы после работы команды wartool

Все отлично, теперь все ресурсы и файлы можно собирать в кучу.

Создаем папку где у нас будет готовая игра:

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

Копируем ресурсы из оригинальной игры 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

Теперь смотрим что у нас получилось:

cd /tmp/game/Wargus && mc

Вот так выглядит директория /tmp/game/Wargus в файловом менеджере MC:


Wargus все ресурсы и бинарные файлы игры в сборе

Также можно посмотреть сколько места занимает вся получившаяся игра командой:

du -h --max-depth=1 /tmp/game/Wargus

Вывод команды виглядит примерно вот так:

Размер папки с готовой игрой Wargus под Linux

Не очень то и много - примерно 102 МегаБайта.

Пробуем запускать игру, запуск нужно осуществлять именно при помощи файла "stratagus":

/tmp/game/Wargus/stratagus

Окно приветствия при старте Wargus:
Wargus на Linux запущен и работает!

Вы справились, поздравляю Вас!

 

Настройка и подготовка музыки

Все хорошо, но почему-то не играет на старте бодрая музыка в стиле ВарКрафт, да и при игре ее может не оказаться - давайте это исправим!
Музыки может не быть потому что нет установленного ПО для программного MIDI-синтезатора.

Набор пакетов данного ПО весит не мало и для портабельной (переносной) версии игры каждый раз на новой системе все это устанавливать - не очень хорошая идея.
Будем конвертировать музыку из формата *.mid в формат .*ogg.

Установим необходимые утилиты:

sudo apt-get install timidity vorbis-tools

Переходим в директорию с музыкой:

cd /tmp/game/Wargus/music

Перекодируем MIDI в WAV:

for f in *.mid; do timidity "$f" -Ow -o "${f%.mid}.wav"; done

В итоге размер всех музыкальных файлов вышел около 300 МБ.
Вот что у меня получилось, конвертированные файлы wav можно прослушать через плеер VLC или другой:
Wargus converting music mid to wav

Перекодируем WAV в OGG:

for f in *.wav; do oggenc "$f"; done

В папке должны появиться музыкальные файлы в формате *.ogg. Мы также можем прослушать их при помощи плеера VLC.
Теперь удалим ненужные нам MIDI и WAV файлы:

rm ./*.mid && rm ./*.wav

В папке останутся только файлы, сумарный размер - примерно 24 МБ.
Wargus конвертация музыки в формат OGG готово!

Поскольку Wargus поддерживает сжатые ресурсы - карты, звуки, музыку, то почему бы не попробовать сжать звуковые файлы. Помните при подготовке Stratagus мы устанавливали библиотеку "libbzip2 (optional)" - так вот она нам и пригодится для поддержки сжатых ресурсов.

Сожмем все звуковые файлы *.ogg GZIP'ом:

for f in *.ogg; do gzip "$f"; done

Вот что получится после сжатия:
Музыкальные файлы OGG сжатые при помощи GZIP

В итоге сэкономили примерно 200КБ, что есть очень не много. К примеру при сжатии карт коэффициент сжатия будет достаточно высоким и можно сэкономить много места на диске.
Ок, идем дальше...

Открываем редактором NANO для редактирования файл wc2-config.lua - это скриптовый файл на языке LUA, в нем описаны основные параметры для запуска игры.

nano /tmp/game/Wargus/scripts/wc2-config.lua

Заменяем в этом файле строчку

wargus.music_extension = ".mid"

на вот такую:

wargus.music_extension = ".ogg"

Закрываем редактор и сохраняем. Здесь мы изменили формат музыкальных файлов на OGG Vorbis (*.ogg).

Открываем редактором NANO для редактирования файл guichan.lua -  в данном файле описаны настройки интерфейса.

nano /tmp/game/Wargus/scripts/guichan.lua

Файл открылся? - ок, теперь нажимаем CTRL+W (от слова: where, где) и пишем туда кусок кода который будем искать:

function BuildProgramStartMenu

Жмем ентер и редактор переместит нас к найденному фрагменту.


Wargus - исправление стартовой музыки в меню

Заменяем строчку

PlayMusic("music/Main Menu" .. wargus.music_extension)

на вот такую:

PlayMusic("music/Orc Briefing.ogg")

Выходим из редактора и сохраняем файл: CTRL+X, "y".

Все, пробуем запускать наш Варгус:

cd /tmp/game/Wargus/ && /tmp/game/Wargus/stratagus

В игровом меню, а также в процессе игры теперь везде будет играть музыка, причем треки можно менять в настройках!

Приведу несколько скриншотов работающего Wargus под Debian GNU Linux:


wargus меню с настройками разрешения экрана


Wargus настройки режима игры Modern Skirmish

Настройки игрового процесса в Wargus

Заключение

Подготовленную таким образом игру можно переносить на Flash-накопителе на другие компьютеры с Линукс. К примеру, при переносе игры на другой компьютер с Debian GNU Linux может потребоваться установка всего лишь одного пакета - liblua5.1-0-dev, если он не установлен то выполним его установку командой:

sudo apt-get install liblua5.1-0-dev

Как и раньше я вам прилагаю свой собранный из разных уголочков интернета пак карт для Wargus, где вы найдете и сетевые карты и очень много карт для одиночной игры против ИИ (Искусственный Интеллект) - Кампаний.

Скачать подборку карт для Wargus (zip, 10 MB)

 Для того чтобы можно было использовать эти карты их нужно распаковать в директорию Wargus/maps/skirmish/. В этой директории можно создать подпапки, а при игре в режиме Skirmish потом можно будет выбрать нужную вам карту из нужной папки.

 (5/5) голосов: 1   просмотров: 758


Тематика:  игра  linux  warcraft  wargus

Комментарии к публикации (7)
darkness 1 darkness 
27 Октябрь 2015 21:45

Доброго времени суток, очень детально все написано, но у меня возникла другая проблема, почему-то манипуляции с CMAKE не дали должного результата. Вот лог:
prouser@ocean-pc:~/Загрузки/wargus_2.3.0.orig/build$ cmake ..
-- checking for module 'maemo-version'
-- package 'maemo-version' not found
-- Found ZLIB: /usr/lib/i386-linux-gnu/libz.so (found version "1.2.8")
-- Found PNG: /usr/lib/i386-linux-gnu/libpng.so (found version "1.2.50")
-- Found BZip2: /usr/lib/i386-linux-gnu/libbz2.so (found version "1.0.6")
-- Looking for BZ2_bzCompressInit in /usr/lib/i386-linux-gnu/libbz2.so
-- Looking for BZ2_bzCompressInit in /usr/lib/i386-linux-gnu/libbz2.so - found
-- Found StormLib: /usr/local/lib/libstorm.so
-- Looking for XOpenDisplay in /usr/lib/i386-linux-gnu/libX11.so;/usr/lib/i386-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/i386-linux-gnu/libX11.so;/usr/lib/i386-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/i386-linux-gnu/libX11.so
-- checking for module 'freetype2'
-- found freetype2, version 17.1.11
-- Found Freetype: /usr/lib/i386-linux-gnu/libfreetype.so (found version "17.1.11")
-- Found GTK2_GTK: /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
STRATAGUS_INCLUDE_DIR
used as include directory in directory /home/prouser/Загрузки/wargus_2.3.0.orig
used as include directory in directory /home/prouser/Загрузки/wargus_2.3.0.orig
used as include directory in directory /home/prouser/Загрузки/wargus_2.3.0.orig

-- Configuring incomplete, errors occurred!
See also "/home/prouser/Загрузки/wargus_2.3.0.orig/build/CMakeFiles/CMakeOutput.log".
Буду признателен, если поможете разобраться, система Lubuntu 14.04.

0 
ph0en1x 2 ph0en1x 
28 Октябрь 2015 00:11

Доброго времени суток! В приведенном вами логе CMake нашла переменную STRATAGUS_INCLUDE_DIR, которая не содержит значения. Это значит что CMake не может найти папку где содержатся исходные файлы Stratagus или переменная не установлена.
Для того чтобы ошибка пропала в файле /build/CMakeCache.txt правим путь:
"STRATAGUS_INCLUDE_DIR:PATH=STRATAGUS_INCLUDE_DIR-NOTFOUND"
на полный путь(ПУТЬ_К_ПАПКЕ - заменить на реальный полный путь):
"STRATAGUS_INCLUDE_DIR:PATH=/ПУТЬ_К_ПАПКЕ/stratagus_2.3.0.orig".
После этого попробовать запустить cmake снова.

Упустил этот момент поскольку при сборке тестировал графическую утилиту cmake-qt-gui, где и была установлена эта переменная (STRATAGUS_INCLUDE_DIR). Проверил еще раз все по пунктам снуля на чистом Debian - все собралось.

Обновил статью!

0 
darkness 3 darkness 
28 Октябрь 2015 14:32

ph0en1x спасибо за помощь, все собралось и отлично работает. Остался лишь один вопрос, зачем был нужен диск Beyond_the_Dark_Portal, ведь с него мы не брали никаких ресурсов, или я что-то упустил?

+1 
ph0en1x 4 ph0en1x 
28 Октябрь 2015 17:07

Приведу сравнение WarCraft II Tides of Darkness и Beyond The Dark Portal Expansion Set:

WarCraft II Tides of Darkness

WarCraft II Tides of Darkness

Дата выхода: декабрь 1995 года.

Разработчик: Blizzard Entertainment.

Системные требования: Pentium 166, 32 Мб, Direct3D 5.

Кампании: 2 кампании по 14 миссий.

Игра по сети: модем, нуль-модем, LAN(IPX).

Стратегия реального времени (RTS), добыча ресурсов (золото, лес, нефть), строительство, развитие и сражения. В игре присутствуют две рассы - Люди(Альянс) и Орки(Орда).

WarCraft II Beyond The Dark Portal

WarCraft II Beyond The Dark Portal Expansion Set

Дата выхода: 30 апреля 1996 года.

Кампании: 2 кампании по 12 миссий.

Дополнение к игре WarCraft II Tides of Darkness, которое содержит 2 отдельные уникальные кампании за Альянс и Орду, а также по 5 новых юнитов(герои) для каждой рассы.

В дополнении присутствуют также несколько карт для многопользовательской игры.

Для данного дополнения нужна установленная игра WarCraft II Tides of Darkness.

В примерах для статьи я извлекал ресурсы из установленной игры, которая содержала в себе как оригинальную версию, так и установленное дополнение (Expansion Set).

Таким образом у меня доступны 14 + 14 + 12 + 12 оригинальных миссий + еще пару штук из самого Варгуса. Вот так выглядит меню Campaign Game:

Wargus Campaign Game menu

+1 
darkness 5 darkness 
28 Октябрь 2015 19:27

Благодарю за разъяснения, а то я играл лишь Warcraft 2 BNE. Значит мне нужно еще и ресурсы с WarCraft II Beyond The Dark Portal Expansion Set ставить.

+1 
daramoner 6 daramoner 
11 Ноябрь 2016 18:49

вобщем почитал но конешно проше просто скачать виндос эмулятор а на него уже и через торрент вот2 3 1 а так спасибо

0 
ph0en1x 7 ph0en1x 
12 Ноябрь 2016 01:06

Если не хочется возиться с компиляцией под Линукс то можно поступить так: качаем скомпилированные установочные файлы для Windows, выполняем установку и распаковку ресурсов, добиваемся работоспособности игры под Windows. Потом запускаем игру под операционной системой Linux используя Wine или PlayonLinux.

0 

Добавить комментарий captcha