Dune 2
Было дело, наткнулся на youtube на проект OpenRa, демонстрировался геймлпей мода Dune II. Конечно, спустя столько лет хотелось бы более комфортного геймплея, а он там на C#, на ютупчике выглядело вкусненько. Сегодня, нашел это видео развернул все это дело. Однако, я сперва покажу как запустить OpenDune с 1.07 версией оригинальной игры для ПК. Потому как OpenRa мод дюны, не содержит миссий, можно мяситься по сети или с ботами, в режиме схватки. Но об этом проекте позже.
Если первый проект выбил из меня все д@4м0, то второй удалось воткнуть, запустить и поиграть достаточно быстро. Да, эта та дюнка, которую я точно не прошел за атрейдосов. Но уже английская версия, я же уже взрослый и что там пишут и говорят, меня не интересует.
Я ставлю на Ubuntu 22.04. Видится, мне, что это легко на любой *nix встанет.
Подготовка
Ставим себе проект OpenDune, куда не важно.
Я буду использовать git, вы можете скачать и распаковать архив, по той же ссылке, в выпадающем меню на кнопке code, будет Download ZIP. Или ставим гит.
$ sudo apt install git
И переходим к загрузке проекта.
git clone https://github.com/OpenDUNE/OpenDUNE
cd OpenDUNE
Установка зависимостей
У вас же все зависимости установлены? Я уже ставил другие проекты и решал проблемы с зависимостями, возможно у вас чего-то еще не хватит еще. С этим проектом я словил такую ошибку.
/usr/bin/ld: gui/gui.o: in function GUI_Mouse_SetPosition
gui.c:(.text+0x6d94): undefined reference to Video_Mouse_SetPosition
/usr/bin/ld: opendune.o: in function PrepareEnd
opendune.c:(.text+0x6b3): undefined reference to Video_Uninit
/usr/bin/ld: opendune.o: in function main
opendune.c:(.text.startup+0x1db): undefined reference to Video_Init
К слову, это частичный вывод. Тут можно обратить внимание на то, что проблемы со всякими Video_* функциями. У меня уже поставлена одна (libsdl2) библиотека, ошибка из-за отсутствия dev версии, но мы ставим обе.
$ sudo apt-get install libsdl2 libsdl2-dev
Так, давайте, еще убедимся, что у нас установлены библиотеки для сборки.
$ sudo apt-get install
build-essential autoconf automake libtool
Установка проекта
Почти готово! Компилим бинарник. Нужно находится в директории с проектом OpenDune, мы туда перешли на шаге загрузки проекта.
./configure
make
Отлично! Осталось скачать саму игру и закинуть в проект в директорию bin/data (путь, если мы попрежнему в корне). Там будет файлик с именем put_dune2_here.txt
Файлы оригинальной игры я брал тут (видел еще тут), нужно скачать и распаковать все файлы в указанную директорию, английской версии 1.07 (Dune II: The Building of a Dynasty).
Добавлю ссылку, на загрузку файла, если она поменяется, то нужно будет найти файл по предыдущей ссылке.
Мой make завершился с кодом 1, что не совсем хорошо, но бинарник скомпилился игра запустилась.
Запуск игры
cd bin
./opendune
Поздравляю! Теперь должно свести олдскулы. У меня, какое-то дикое разрешение экрана, линукс наормально не умеет масштаб увеличивать, но даже у меня играбельно.
Вот список хоткеев из документации проекта. Или, жмем F11 для разварота на весь экран.
- F1 - open Mentat Screen
- F2 - open the option menu
- F3 - open the menu of the selected structure (construction yard/factory/etc.)
- F8 - Toggle FPS display
- CTRL-ENTER or F11 - Toggle full screen
И что, всё? Нет, не всё. Есть еще патч, который фиксит баг, из-за которого ИИ не может отправить группу в натагу, а шлет одиночные юниты по мере их производства. Патч там еще правки/фиксы делает... но этим мы займемся позже.
Обнаружена проблема, за атрейдосов, мне нужно было ответить на вопрос, чтобы перейти к третьей миссии. Вопросы про юниты, ответ я нашел тут. Уже к следующей миссии вопросов не было.
Переходим к OpenRa
Как я уже сказал, для Dune 2 нет миссий, только разовые битвы. К тому же, это не ремастер дюнки, это что-то похожее, динамика другая, оно похожее, но не такое.
Бонусом, мы получаем следующие игры.
- Command & Conquer: Red Alert
- Command & Conquer: Tiberian Dawn
- Dune 2000
В Red Alert, я играл в компьютерном клубе, с удовольствием бы прошел, тряхнул бы стариной, так что движок мне интересен, не только из-за Dune 2.
Понеслась
Вот тут описаны зависимости для установки.
Забегая вперед. Игра не запустилась, по следующей причине:
You must install or update .NET to run this application.
App: /home/treecode/Downloads/OpenRA/bin/OpenRA.dll
Framework: 'Microsoft.NETCore.App', version '6.0.0' (x64)
Но у меня есть SDK версии 8.0.1 и я решаю не парится с установкой версии, которая уже не поддерживается. Чуть позже решим данную проблему.
Распаковываем архив или клонируем мод.
git clone https://github.com/OpenRA/d2
cd d2
Установка зависимостей
Устанавливаем свеженький dotnet sdk. Так сказать не паримся. libsdl2 мы поставили при установке OpenDune выше. lua5 не обязательная библиотека, я так же решил не ставить устаревшую версию, оно потом может боком вылезти. Make, мы так же устанавливали выше
sudo apt install dotnet-sdk-8.0
Следующие опциональные зависимости у меня уже были установлены: FreeType, OpenAL.
sudo apt install -y libfreetype6 libfreetype6-dev
sudo apt install -y libopenal1 libopenal-dev
И остальные. Следующие 2 ставим обе, хотя нужна любая из них, но они часто нужны. В хозяйстве, как говорится и curl веревка.
sudo apt install -y curl
sudo apt install -y wget
sudo apt install -y unzip
sudo apt install -y xdg-utils
Теперь, согласно READ.me репозитория, запускаем
make all
Будет скачан движок в директорию engine. Когда всё скачалось, мы не торопимся запускать игру. Идем, решать проблему с версией dotnet и еще пару нюансов.
Нашел, где задается требуемая версия dotnet sdk, просто поиском по файлам.
engine/OpenRA.Game/Directory.Build.props
Просто заменяем это
<TargetFramework Condition="'$(MSBuildRuntimeType)'!='Mono'">net6.0</TargetFramework>
На это
<TargetFramework Condition="'$(MSBuildRuntimeType)'!='Mono'">net8.0</TargetFramework>
Ощущение, что ты хакер, вряд ли больше покинет тебя.
make all
Заново всё соберем. Теперь вывалятся предупреждения, оно и понятно. Благо, для нас всё обратно совместимо.
Подготовка к запуску
Переходим в директорию с движком и запускаем Dune 2000. Dune 2 mod использует оттуда всякие ништяки. Будет предложено скачать content, я выбирал quick install, если будет ошибка, просто повторяем процедуру.
cd engine
./launch-game.sh
Это должно создать директорию с контентом игры, у мне создалась тут ~/Documents/.config/openra/Content, если не создалась то возвращаемся в mod и стартуем его.
cd ..
./launch-game.sh
На нас должно наорать, что не хватает какого-то файла, вероятно это будет IBM.PAL.
Теперь, подсунем оригинальные файлы игры, но они там по всей видимости не нужны, но нужны файлы, которые я уже был готов сам воспроизвести. Извлекаем отсюда (dunelegacy) папку data.
Допустим, теперь файлы dunelagacy лежат тут ~/Downloads/dunalegacy.
mkdir ~/Documents/.config/openra/Content/d2
cp -r ~/Downloads/dunalegacy/data/* ~/Documents/.config/openra/Content/d2
Запуск игры
./launch-game.sh
Запускаем игру и....
"Кайфуйте" - Ольга Б.