LINUX.ORG.RU

Нативная Arma: Cold War Assault под FreeBSD

 , , ,


0

1

Как только узнал о том, что Cold War Assault выпустили (ни много ни мало!) под GPL-3.0-or-later (с некоторыми дополнительными условиями про торговые марки, правда), немедленно побежал разбираться, что там к чему.

Как и водится в таких случаях, на гитхабе никаких ассетов нет, но их можно абсолютно бесплатно скачать из Steam под лицензией Arma Public License Share Alike (APL-SA), которых там около 250 Мб. Вместе с ними идут бинари PoseidonGameDemo.exe (под винду) и PoseidonGameDemo (соответственно, под линукс, glibc 2.38+, пришлось обновлять чрут с Ubuntu 22.04 до 24.04), из которых можно запустить демо‐миссию и ничего больше, как я понял. К моему удивлению, первое через Wine вместо изображения показывает мне чёрный экран и, иногда, невероятных размеров шакальный курсор, а второе через Linuxulator зависает примерно через минуту; при этом проприетарная CWA из стима прекрасно работала как через Wine, так и через Linuxulator.

На гитхабе инструкции только для винды и линукса, ничего больше разработчики, собственно, и не предусматривали, но меня это совсем не испугало. Зависимости предлагают подтягивать через vcpkg, вместо чего я героическим образом всё ставил собственными руками. При этом нужно обратить внимание на версии некоторых библиотек, которые указаны в vcpkg.json; в частности, не хотело собираться со свежими CLI11 и mimalloc, нужны именно версии 2.4.0 и 2.2.4 соответственно (или, может быть, слегка новее, не проверял). Также споткнулся на том, что opus, libogg, libvorbis, enkiTS и, возможно, некоторые другие библиотеки, которые у меня подтянулись из системы, нужно собирать с -fPIC (ну то есть с -DCMAKE_POSITION_INDEPENDENT_CODE=ON) и что mimalloc из vcpkg по умолчанию устанавливается с -DMI_OVERRIDE=OFF, но цмейком по умолчанию собирается с -DMI_OVERRIDE=ON (с -DMI_OVERRIDE=ON при сборке армы возникают дубликаты при линковке, так что это нужно выключать).

Линукс‐специфичного кода во всём огромном репозитории почти не оказалось. Из обнаруженного:

  1. Хидер linux/sysinfo.h, подключение которого оказалось достаточно тупо закомментировать.
  2. PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP, который заменяется на PTHREAD_MUTEX_INITIALIZER и вызов pthread_mutexattr_settype в конструкторе.
  3. Неоднократные жалобы линкера на undefined reference to 'backtrace', что решается дописыванием -lexecinfo везде, где это необходимо.
  4. В imgui из репозиториев FreeBSD обнаружилось отсутствие imgui_freetype.h, который я просто прилинковал ручками.
  5. В engine/Poseidon/World/Viewer.cpp ругалось на неизвестные переменные major и minor, которые определены парой строк выше. Решилось переименованием major в majorColor, а minor — в minorColor; но вообще не знаю, связано ли это с FreeBSD.

После пары часов ковыряний получил работающий без всяких нареканий самый настоящий нативный бинарь PoseidonGameDemo с самой настоящей армой. В дополнение к нему после сборки вы получите:

  1. PoseidonGame, из которого можно открыть всеми любимый редактор.
  2. PoseidonServer, с помощью которого можно запустить, собственно, игровой сервер, из консольки.
  3. PoseidonStudio, в которой можно разглядывать ассеты.
  4. PoseidonEvaluator, которым можно запускать SQS- и SQF-скрипты.
  5. И даже тетрис PoseidonTetris, и ещё всякого по мелочи.

Помимо всего прочего, в CONTRIBUTING.md указан комьюнити‐форк, в котором открыты пул‐реквесты.

Ну и да, на скриншотах WindowMaker и полтора докаппа.



Проверено: hobbit ()
Последнее исправление: JeanPierreDubois (всего исправлений: 2)
Ответ на: комментарий от JeanPierreDubois

Пытался играть как-то в Gold версию стимовскую. Что-то вообще не зашло, хотя 3ая на ура. Расскажите чем там заниматься при нулевом онлайне? Есть ли какой-то ugc для развлечения?

Berliner
()
Ответ на: комментарий от Berliner

Gold Edition — это же первая вроде, Armed Assault которая?

Расскажите чем там заниматься при нулевом онлайне? Есть ли какой-то ugc для развлечения?

Я, в целом, в основном только в редакторе беснуюсь, но ничто не мешает найти людей и играть совместно на любой из тысяч кастомных миссий. Ну и модов за столько лет создано полно. В опенсорс‐версии менюшка «MODS» даже показывает список паков, которые можно по клику скачать, прямо как в Minetest.

JeanPierreDubois
() автор топика
Ответ на: комментарий от JeanPierreDubois

но ничто не мешает найти людей и играть совместно

Ну вот это как раз таки проблема. Из-за того что игра старая, там достаточно кривое (по современным меркам) управление и уже явно устаревшая графика найти кого-то, кто согласится хотя бы попробовать, достаточно трудно. А по поводу редактора – как раз таки в тройке я именно там основное время провёл, но не делая карты и миссии, а делая всякие постеры, поэтому вряд ли для этого подойдёт Armed Assault или Cold War Assault в виду графики.

Berliner
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.