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/OpenDUNEcd OpenDUNE

Установка зависимостей

У вас же все зависимости установлены? Я уже ставил другие проекты и решал проблемы с зависимостями, возможно у вас чего-то еще не хватит еще. С этим проектом я словил такую ошибку.

/usr/bin/ld: gui/gui.o: in function GUI_Mouse_SetPositiongui.c:(.text+0x6d94): undefined reference to Video_Mouse_SetPosition/usr/bin/ld: opendune.o: in function PrepareEndopendune.c:(.text+0x6b3): undefined reference to Video_Uninit/usr/bin/ld: opendune.o: in function mainopendune.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, мы туда перешли на шаге загрузки проекта.

./configuremake

Отлично! Осталось скачать саму игру и закинуть в проект в директорию 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.dllFramework: 'Microsoft.NETCore.App', version '6.0.0' (x64)

Но у меня есть SDK версии 8.0.1 и я решаю не парится с установкой версии, которая уже не поддерживается. Чуть позже решим данную проблему.

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

git clone https://github.com/OpenRA/d2cd d2

Установка зависимостей

Устанавливаем свеженький dotnet sdk. Так сказать не паримся. libsdl2 мы поставили при установке OpenDune выше. lua5 не обязательная библиотека, я так же решил не ставить устаревшую версию, оно потом может боком вылезти. Make, мы так же устанавливали выше

sudo apt install dotnet-sdk-8.0

Следующие опциональные зависимости у меня уже были установлены: FreeType, OpenAL.

sudo apt install -y libfreetype6 libfreetype6-devsudo apt install -y libopenal1 libopenal-dev

И остальные. Следующие 2 ставим обе, хотя нужна любая из них, но они часто нужны. В хозяйстве, как говорится и curl веревка.

sudo apt install -y curlsudo apt install -y wget
sudo apt install -y unzipsudo 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/d2cp -r ~/Downloads/dunalegacy/data/* ~/Documents/.config/openra/Content/d2

Запуск игры

./launch-game.sh

Запускаем игру и....

"Кайфуйте" - Ольга Б.