Портирование моделей 20-летней давности в современный космосим. Из X²: The Threat в X4: Foundations

от автора

Добрый день, меня зовут Сергей Цибульченко и я автор небольшого мода X2 Ship Pack для игры X4: Foundations. В этой статье я хотел бы описать процесс создания мода руками любителя игр.

Зачем я делал этот мод?

Игра X²: The Threat очень близка моему сердцу, в юности я провёл бесчисленное количество часов летая на пиратском транспортнике по закоулкам кремниевых шахт в поисках ящиков с яйцами космомух, мне очень хотелось увидеть модели кораблей из этой игры в X4: Foundations. В официальном дискорде разработчиков компании Egosoft после долгих упрашиваний местных модмейкеров я понял, что делать мод никто не будет, если этот мод мне нужен, придётся делать самому. На тот момент существовало только 2-3 корабля из X2 которые в качестве эксперимента были сделаны на движке X4, они были около бесполезные, авторы модов прямо писали что это их эксперименты которые никогда не будут доведены до рабочего состояния.

Меня отговаривали начинать это неблагодарное дело как сообщество модмейкеров, так и знакомые. Аргументы были в стиле «В Star Citizen разработчики тратят по миллиону долларов на разработку нового корабля, как ты сможешь в одиночку справиться?». Тем не менее, я решился сам не представляя сколько времени и сил на это уйдёт.

Каким я хотел сделать этот мод

Для тех, кто не знает что такое игры серии X, это гибрид космосима, экономической стратегии и Sci-Fi сюжета. Игры компании Egosoft всегда славились отличной поддержкой фанатсих модов и разрабатываются в первую очередь как фреймверки для модов чтобы каждый игрок смог изменить свою вселенную X до неузнаваемости.

  1. Корабли из X2 должны быть максимально функциональны на новом движке. Просто летающие текстуры для антуража меня не устраивали.

  2. Обязательно должны быть портированы мелкие корабли класса S в которых NPC и игрок смогут ходить по кабине и взаимодействовать с навигационными приборами.

  3. Корабли из X2 должны быть с одной стороны быть максимально похожи на оригинальные модели X²: The Threat, а с другой — как можно лучше вписываться в эстетику X4.

  4. Мод не должен ломать баланс игры, но при этом портируемые корабли должны иметь собственную нишу, у игрока должен быть смысл ими пользоваться, при этом, корабли самой X4 не должны терять смысла.

Технические трудности. Археология.

Для начала, было необходимо раздобыть эти самые модели кораблей из X2. На тот момент существовал только полуофициальный распаковщик файлов игр серии X, к счастью, он справился с распаковкой архивов X2. А дальше было сложнее. Мне был нужен доисторический плагин для Autodesk 3ds Max который умел работать с форматом файлов X²: The Threat. Такой плагин был только на сайте www.elite-games.ru, но все ссылки на скачивание плагина были нерабочие. Пришлось применить свои навыки программиста и системного администрирования чтобы найти этот файл на сервере ресурса и скачать.

X2 Editor

X2 Editor

Следующая проблема была неожиданной — плагин для 3ds Max был написан для версии Макса 20-летней давности и не хотел работать с последним на тот момент Максом. Найти совместимую версию Макса мне не удалось. Пришлось немного изучить структуру файлов плагинов Макса и подправить нужный мне чтобы он завёлся. Этот плагин позволил мне вытаскивать в рабочее пространство Макса модели кораблей вместе с текстурами.

Начало портирования в Blender.

Все гайды по созданию кораблей были написаны для Blender, все инструменты мододелов работали только с экспортированными из Блендера файлами, с Максом многое не дружило, советы по работе с Максом в дискорде Egosoft никто не давал. Я был знаком с Максом, но пришлось учить Блендер.

Начал я работу с моей любимой модели X2 — Argon Mercury. Опытные модмейкеры меня всячески отговаривали браться за этот корабль поскольку делать корабль с реальным, а не виртуальным кокпитом (кабиной) было крайне сложной задачей. С L и XL кораблями было всё гораздо проще — указал в конфигах корабля координаты капитанского мостика и игра сама его туда помещает. Прорезал дырку в корпусе, указал координаты дока для S или M кораблей — игра сама его приклеит к модели. А вот у маленьких кораблей кабины физические, игрок и NPC взаимодействуют с ними напрямую, все текстуры и коллизии надо было делать с нуля, никакой автоматизации.

Сейчас уже есть официальные инструменты для модмейкинга от программистов Egosoft, но даже с ними делать маленькие корабли это очень тяжелая задача. Когда я работал над модом, никаких официальных инструментов не было, разработчики Egosoft использовали проприетарное ПО и не могли им поделиться с сообществом, а их советы из-за NDA по этому проприетарному софту всегда были недостаточными.

Выбор масштаба.

Передо мной стоял вопрос принципа — какого размера должен быть Argon Mercury?

Транспортник людей из игры X²: The Threat. Материал взят с https://www.elite-games.ru/

Транспортник людей из игры X²: The Threat. Материал взят с https://www.elite-games.ru/

В X2 есть модели кораблей, но нет моделей людей. Было сложно определиться с масштабом. То ли это корабль размером с современный грузовик, то ли он по размеру как десантный корабль из фильма Aliens 1986 года.

Выбор масштаба определился техническими ограничениями. Чтобы создать кокпит для нового корабля, модмейкеры обычно берут уже существующий с похожей по форме кабиной, отрезают от модели всё лишнее и уже вокруг этого куска выстраивают новую модель. К кокпитам из X2 лучше всего подходила кабина от теладианского скаута Kestrel, именно с его кабиной были выполнены эксперименты других людей. Я тоже решил использовать кабину этого скаута и выстраивать вокруг неё тело моего транспортника.

В итоге получился корабль очень нестандартного размера — в S док он не помещался, корабль был где-то в 1.5-2 раза больше S кораблей из X4. Поэтому я присвоим ему класс M, он использует M док, но при этом кабина от S корабля, M корабли обычно в 15-20 раз крупнее S кораблей.

Получилось то, что получилось

Получилось то, что получилось

Пришлось отказаться от задней турели. В X2 у всех транспортников есть задняя защитная турель, но в X4 турели начинаются только с размера M, в моём случае турель была бы больше самого корабля. Когда проблема с кокпитом была решена, я его переиспользовал и для других кораблей, благо, в X2 кабины у многих мелких истребителей одинаковы.

Teladi Harrier

Teladi Harrier
Teladi Buzzard

Teladi Buzzard

Корабли прошли множество итераций в ходе которых материалы сначала улучшались на основе оригинальных текстур 20-летней давности, а позже заменены на стандартные материалы из библиотек X4 чтобы сделать компромиссную эстетику.

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

Многое из этого в последствии легло в основу официальных инструментов от разработчиков Egosoft.

Баланс игры. Слишком много контента из модов.

Долгое время я не мог настроить нужные мне пропорции спавна моих кораблей. Мне хотелось чтобы NPC их использовали, но в небольшом количестве. Настройки игры в свою очередь предоставляли два варианта: либо NPC не используют их вообще, либо 50% всех кораблей в космосе будут из мода. А если установлено несколько модов, то оригинальные корабли вообще не появлялись в космосе.

Эту проблему мне удалось решить только совместно с другими авторами шип-паков. Мы дружно начали закидывать просьбами изменить конфиги базовой игры, в одном из патчей разработчики всё же добавили необходимое. Теперь мои корабли встречаются примерно в 2-10% случаев от общего количества, именно как я это и планировал.

Баланс игры. Как не сломать, а добавить полезное.

По ЛОРу игры события X4 происходят через несколько десятилетий после событий X2, да и модели кораблей выглядят устаревшими. Надо было обосновать присутствие такого раритета в космосе.

  • Баланс по ресурсам. Я посчитал для каждого класса кораблей в пределах каждой игровой расы баланс по цена/качество по разным характеристикам — скорость, HP, манёвренность. Старые корабли (мои из мода) имели соотношение цена/качество на 20% хуже, а цена примерно на 20% дешевле.

  • Баланс потребности. Зачем покупать старый хлам когда есть более эффективные корабли? Кроме цены, которую я уже упомянул, я снизил требования по репутации и необходимым лицензиям для покупки старых кораблей. Хочешь купить истребитель, но NPC считают тебя недостаточно надёжным чтобы продавать тебе последнюю модель? Вот тебе жигули вместо мерседеса на первое время. Хочешь играть в пирата, но NPC-торговцы больно отбиваются? Выискивай тех, кто летает на старом хламе.

  • Мне очень хотелось портировать TP-транспорты, это пассажирские корабли, но в X4 такой роли кораблей нет в принципе. В итоге, я портировал их как масс-траффик, это маленькие корабли, они летают между модулями одной и той же станции и используются жителями станций в личных целях.

  • Нишевость. Я постарался добавить уникальные особенности моим кораблям. Например, истребителям расы Телади я сделал вместительный трюм чтобы их можно было использовать не только как старые истребители, но и как старые транспорты. Подобная особенность была прописана в самом ЛОРе X2, а вот в последующих играх разработчики стали забывать про такие мелочи.

  • Визуальные особенности. Везде, где только мог, я добавил ротаторы. Это гондолы с двигателями, которые могут вращаться вокруг одной из осей и реагируют на изменение импульса движения корабля. Если корабль пытается тормозить, то гондолы разворачивают двигатели вперёд и тормозят корабль. Это оригинальная механика игры, но крайне мало задействованная, я использовал её по полной, даже для некоторых авианосцев.

  • Нестандартные позиции в доке. Дизайнеры моделей X2 никогда не думали, что их корабли когда-то будут приземляться на твёрдую поверхность и пилоты будут по лестницам карабкаться в кабину. Пришлось постараться чтобы и корабли сидели на поверхности дока, и пилоты могли вылезти из кабины. Меня очень часто просили перенести пушки Бастера с днища на крышу корабля чтобы Бастер сидел ровно, но я решил, что Бастер будет парковаться наклонившись на бок на 20 градусов из-за орудий. Историзм превыше всего.

Ротаторы в действии

Ротаторы в действии
Паранидский Персей из-за геометрии корпуса паркуется носом вниз. Промежуточная итерация материалов и текстур.

Паранидский Персей из-за геометрии корпуса паркуется носом вниз. Промежуточная итерация материалов и текстур.
Финальный вариант паранидского Персея

Финальный вариант паранидского Персея
X3 mercury XL super freighter может парковаться только так

X3 mercury XL super freighter может парковаться только так

На момент написания статьи вы вряд ли сможете посмотреть корабли в игре поскольку я ещё не успел обновить мой мод под последний патч игры. Постараюсь обновить все мои моды для X4 как только появится на это время.

Я портировал более 30 кораблей от S до XL размера. Не могу сказать что мой мод пользовался особой популярностью, в основном, те, кто играл в X2 и в эстетических целях хотели бы добавить старые корабли в новую вселенную, именно поэтому я прорабатывал баланс чтобы мой мод легко сочетался с любыми боевыми модами игры. Как побочный эффект, мой мод послужил толчком для разработки других модмейкеров и повлиял на полезность официальных инструментов от разработчиков Egosoft.

Возможно, некоторые знают, что Egosoft набирает штат как правило из числа активных модмейкеров. В последний раз когда проводился набор в их ряды, мне приглашение не приходило, но я и сам не стал подавать своё резюме хотя многие из активных участников сообщества были уверены, что скоро увидят меня в рядах разработчиков игры. В арт-отдел я точно не хотел бы попасть, у меня для этого слишком низкие навыки работы с 3D и 2D. А в отдел программистов я бы не смог попасть — у Egosoft есть свой собственный скриптовый язык и я не горю желанием его изучать, особенно после рабочего дня программиста учить программирование как хобби это не очень приятный досуг. Моё взаимодействие с этой студие пока что ограничивается обсуждением идей — тз для программистов для новых скриптовых миссий, багрепорты в арт-отдел, некоторые концепты, которые будут учтены при разработке X5.

ссылка на оригинал статьи https://habr.com/ru/articles/1067876/