"Помогая будущим моддерам, мы также помогли самим себе": разработка TROY с учётом поддержки моддинга

«Помогая будущим моддерам, мы также помогли самим себе»: разработка TROY с учётом поддержки моддинга

Перевод блога разработчиков

Те из вас, кто неравнодушно относится к модостроительству, будут рады тому, что A Total War Saga: TROY на данный момент является одной из самых легко модифицируемых игр в серии. Но почему так? Что же заставило нашу команду разработать игру, уделяя внимание модам?

Мы поговорили с Антоном Чолаковым, Михаилом Балабановым и Радославом Борисовым, сотрудниками Creative Assembly Sofia, о их личных взглядах о модостроительстве, и о том, как TROY стала доступнее для мододелов. Также они поделились классными советами по созданию модов, которые будут интересны как бывалым мододелам, так и новичкам.

CA: Привет! Для начала, не могли бы вы представиться?

Антон Чолаков: Всем привет! Меня зовут Антон Чолаков и я работаю в студии Creative Assembly Sofia программистом геймплея и ИИ для игр Total War.

Михаил Балабанов: Привет, Меня зовут Михаил Балабанов и я – ведущий программист геймплея в Creative Assembly Sofia

Радослав Борисов: Привет, Меня зовут Радослав Борисов. В Софийском филиале Creative Assembly я работаю гейм-дизайнером для игр серии Total War.

CA: Расскажите нам немного о своём личном опыте в моддинге различных игр.

Антон Чолаков: Сам я модификаций не делал, только в паре игр изменял параметры в файлах конфигураций. Наверно, это тоже считается за «моддинг».

Михаил Балабанов: Сам я не моддер, только игрался с редакторами для стратегических игр вроде StarCraft и Battle of Wesnoth, что сильно мне помогло в будущем в плане разработки игр.

Радослав Борисов: Мой личный опыт в моддинге в основном ограничен написанием скриптов для игр Blizzard. Сначала я помогал в создании пользовательских карт для Warcraft III, а затем стал писать аддоны для World of Warcraft.

CA: А что вы вообще думаете о модифицировании игр? Считаете ли вы, что для некоторых игр это является одним из важнейших элементов игрового процесса?

Антон Чолаков:  Я полностью поддерживаю модифицирование игр, ведь это предоставляет разнообразие и позволяет игроком подделывать игровой процесс под свои вкусы. Мне очень нравились мутаторы в играх Unreal Tournament, как и дополнительные опции «Вторая волна» для XCOM:Enemy Within. Эти моды изначально поставлялись с игрой, и я считаю, что больше игр должны предоставлять подобные опции. Следующей ступенью являются фанатские модификации. Они предлагают игрокам идеальное количество изменений, чтобы игровой процесс стал для них ещё интереснее – можно сделать игру полегче, потруднее или просто немного отличной от оригинала. Моды также могут разительно изменить игру. Я много играл в Counter-Strike и DotA, которые изначально были просто модификациями для Half-Life и Warcraft III. Это два идеальных примера модов, которые смогли продлить жизнь играм-оригиналам. Ведь все хотели приобрести базовые игры, чтобы играть в популярные моды.

Михаил Балабанов: Абсолютно верно! Моды могут улучшить или разнообразить игровой процесс при одиночном прохождении или в онлайн-матчах. Они позволяют ознакомиться с уже знакомой игрой в совершенно ином свете. В некоторых случаях моды продляли жизнь оригинальным играм и расширяли их аудиторию в таких масштабах, о которых разработчики и не могли подумать. Некоторые игры и даже отдельные жанры игр начинались как модификации.

Радослав Борисов: Мне очень нравится, когда в играх есть поддержка модов. Хоть я и понимаю, что некоторые игры не предназначены для модифицирования, пользовательский контент надо поощрять. Столько замечательных игр изначально были модами: DayZ. DotA, Counter-Strike и т.д.

CA: Уже долгое время модостроительство считается важным элементом для предыдущих игр серии Total War. Какие вы выводы сделали из обилия модов в прошлых играх?

Антон Чолаков: Моды – очень важная часть в играх Total War, ведь так много игроков пользуются ими. В серии Total War великое разнообразие модификаций, от изменяющих сложность игры и искусственного интеллекта до добавляющих совершенно новые кампании, фракции, юнитов. Есть даже радикальные конверсии, в которых действие игры переносится из исторических эпох и вселенной Warhammer в миры Властелина колец и Песни льда и пламени (вселенная «Игры престолов»). Это невероятный объём контента, который мы, разработчики, не создавали, но который находится в открытом доступе для игроков. И мне кажется, что самим мододелам это приносит много удовольствия. Они с гордостью показывают свои детища, а игроки выражают им признательность за креативность и проделанный труд.

Михаил Балабанов: Мы выяснили, что некоторым людям нравится делать моды, а другим – играть в них! Но если говорить серьёзно, мы уже давно знаем, что моды являются важной частью игрового процесса в серии Total War, и что нам необходимо её поддерживать. Мы заметили, что в некоторых случаях хватает лишь небольших усилий со стороны разработчиков, как например сделать доступным некоторый функционал интерфейса и игровых механик через скрипты Lua. Такие мелочи помогают решить давние препятствия, которые мешали моддинг-сообществу. Поэтому мы старались обнаружить и разобраться с подобными проблемами.

Радослав Борисов: Важнейшим уроком для нас стало то, насколько огромным и умелым стало моддинг-сообщество за все эти годы. Моды для игр серии Total War существуют уже много лет, это позволило сообществу разрастись и стать лучше. Сейчас так много талантливых моддеров, делающих высококачественный контент для наших игр.

CA: Раньше вы уже говорили, что хотите сделать для TROY настолько значительную поддержку модификаций, насколько это возможно. Какие меры для этого вы приняли во время разработки игры?

Антон Чолаков: С самого начала разработки игры, мы старались делать всё таким образом, чтобы людям вне студии было как можно проще вносить изменения. Так как игроки не могут поменять скомпилированный исходный код, мы сделали так, чтобы как можно больше ресурсов нужно было загружать из внешних источников. Конечно же, это принятая в индустрии практика для игровых ресурсов и звуковых файлов. Иногда это относится и к изменениям в параметрах (например, очки здоровья и повреждения юнитов), которые в некоторых играх хранятся в конфигурационных файлах .ini. В играх Total War такие параметры хранятся в базе данных.

Мы пытались сделать TROY гораздо более ориентированной на данные. Многие значение, которые раньше были закреплены в исходном коде, теперь загружаются через базу данных. В качестве примера можно привести подсчёт стоимости на действия агентов. Тоже самое относится и к нововведениям вроде многообразия ресурсов, образующих экономическую составляющую TROY. Все типы ресурсов (всего их пять) прописаны в базе данных, но с помощью модов можно запросто их удалить, оставив только один, чтобы играть как и раньше в стиле «Деньги движут миром». Можно и наоборот, поменять или добавить новые типы ресурсов, что сделает игру ещё сложнее и разнообразнее.

Ещё один ключевой элемент нашего подхода – использование скриптов Lua для божественных даров и кар, триггеров мотивационных черт, интерпретаций троянского коня как ловушки Одиссея и землетрясения. Даже уникальные механики для 11 из 15 фракций были имплементированы в основном с помощью скриптов. Код Lua отличается от С++, на котором написаны остальные элементы игры, тем, что все скрипты хранятся в обычных текстовых файлах. Моддеры могут открыть их любым текстовым редактором, поменять нужные параметры и сразу увидеть изменения в игре, без всякой необходимости разбирать-пересобирать код. Таким образом можно сделать как небольшие изменения игровых конфигурациях (опять же, большая их часть хранится в текстовых файлах), коррекции в существующих игровых механиках, так и вовсе создать совершенно новые механики.

Писать механики с нуля довольно трудно, но моддеры могут во всём разобраться, руководствуясь уже существующим кодом, который написали разработчики. Например: хотите узнать, победил ли игрок в битве с определённой фракцией? Просто посмотрите на одну из множества проверок участников битв, которые мы использовали. Хотите проследить когда количество определенного ресурса у игрока достигает заданного порога? У нас такой код тоже прописан. Мы написали более 30,000 строк кода Lua для одной лишь кампании TROY, не считая скриптов битв, скриптов для интерфейса, а также нашу собственную общую Lua-библиотеку. Моддеры могут использовать наш код в качестве источника вдохновения для создания собственного Lua-кода. Опять же, как и с особым подходом к коду C++ и базе данных, при написании скриптов мы стремились к удобной расширяемости кода. Можете брать пример с нас и сделать так, что ваши собственные модификации мог бы легко изменить любой другой моддер!

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

Многие новые механики были добавлены через Lua, чтобы было легче вносить какие-либо изменения. Это привело к созданию функций, для которых можно написать скрипты, а также триггер-события, которые можно использовать в модах. Можно создавать кампании с разными наборами ресурсов или создавать новые ресурсы для совершенно новых механик (например, мы использовали эти скрипты для написания уникальных механик для Сарпедона и амазонок). Также мы добавили новые события для кампании, включая события с выбором, что расширяют список возможностей, которые доступны через скрипты и базу данных.

Радослав Борисов: Самым первым и важным шагом для нас было добавить настолько значительную поддержку модификаций, насколько это было возможно. Мы следили, чтобы все команды разработчиков это понимали и работали над этим сообща. Это решение было принято на ранней стадии разработки и всё это время мы старались его придерживаться.

CA: Что, по вашему мнению, было наибольшими трудностями при разработке поддержки модов для TROY?

Антон Чолаков: Сложнее всего было объяснить всем членам команды о сути подхода «ориентированный на данные, удобный для расширяемости» – что это значит и как нам этого добиться? Не все сразу поняли, что им надо было делать и с какой целью. Но в конечном счёте, мне кажется, что мы вполне справились с этой задачей.

Ещё одной трудностью была необходимость избегать «наспех сварганенных» решений для проблем, с которыми наша команда сталкивалась при разработке игры. Мы уже упоминали расчёт стоимости действий агентов: нам нужно было адаптировать эту механику под новую систему экономики, использующую множество ресурсов. В предыдущих играх подобные расчёты были жёстко закреплены в коде, поэтому самым простым решением было бы взять базовую стоимость в монетах и поменять на несколько ресурсов. Вместо этого мы добавили в базу данных 3 компонента, составляющих эту стоимость, при этом позволив действиям от разных агентов иметь индивидуально заданные стоимости. Как видите из этого примера, наш подход занял больше времени и усилий, но в итоге мы получили более гибкую систему, которую легко подстроить под себя.

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

Михаил Балабанов: Для меня самым важным было найти баланс между гибкостью, производительностью и затраченными усилиями разработчиков во время осуществления каждой новой механики. Если имплементация вышла негибкой, то для неё легче написать заданный код, но из-за этого гораздо труднее потом изменять его для модификаций или обновлений. Если мы сделаем механику слишком ориентированной на данные, то ей совсем неудобно будет пользоваться и понадобиться либо написание слишком сложного кода, либо слишком большая нагрузка на гейм-дизайнеров при работе с базой данных.

Радослав Борисов: Первым большим препятствием для нас была необходимость сделать механики из предыдущих игр более долее доступными для моддеров. В качестве примера можно привести систему событий (инциденты, дилеммы, миссии), которая уже давно существует в играх Total War, но не была достаточно открыта для сторонних модификаций. Нашей задачей было расширение поддержки пользовательских событий, что в итоге превратилось в нынешнюю систему цепочек событий, которые в TROY используется при обучении и эпичных миссиях. Даже сейчас, после выхода игры, мы добавляем новые функции для системы цепочек событий.

Кроме того, нам надо было удостовериться, что мы чётко понимаем, в чём заключаются нужды и желания моддинг-сообщества. В сотрудничестве с коллегами, имеющими различный опыт в моддинге, и членами сообщества, мы составили список проблем и потенциальных улучшений. Некоторые из этих улучшений были связаны с Assembly kit, набором инструментов для моддинга: больше документации, больше функций для редактора карт Terry, больше разных примеров для создания персонажей и зданий и т.д.

CA: Какой совет вы бы дали моддерам, которые хотели бы попробовать заняться модостроительством для TROY?

Антон Чолаков: В общем так: возьмите игру и Assembly Kit, наш набор инструментов для моддинга, и проверьте, что вы можете поменять, добавить и т.д. Посмотрите на базу данных, конфигурации в скриптах Lua (мы старались вставить их в самое начало файлов, перед самим кодом). Просто посмотрите на доступные настройки и подумайте, что можно поменять. Возможно, после этого к вам придёт вдохновение. А теперь попробуйте поменять какой-нибудь параметр, изменить значение и посмотрите, что поменялось в самой игре, поменяйте другой параметр, проверьте в игре и т.д. Этот процесс называется итерацией, и мы как раз им пользуемся при разработке игр.

Я как программист считаю, что следующим этапом можно попробовать поучиться писать код Lua. Это на самом деле легко и интересно (не говоря о том, что хотя бы базовое владение языками программирования становится повсеместно почти что обязательным навыком). Как я уже говорил, писать с нуля довольно трудно будучи новичком. Но первый шаг – это понимание кода, который читаешь, даже если не готов писать свой собственный. Неплохих результатов можно добиться, просто копируя и немного изменяя уже существующий код. Скажу по секрету, что очень много профессионально написанного кода на самом деле копипаста (с небольшими правками) откуда-то ещё – мы всё время так делаем!

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

Михаил Балабанов: По сути говоря, моддинг в TROY мало чем отличается от моддинга в предыдущих играх серии: скачайте Assembly Kit, просмотрите основные таблицы в базе данных на наличие изменений, загляните в папки со скриптами для поиска вдохновения. И не забудьте почитать документацию!

Радослав Борисов: Для начала, советую скачать Assembly Kit, содержащий множество инструментов и утилит для нужной игры. Также стоит почитать документацию.

Помимо этого, стоит найти единомышленников. Есть множество сообществ, крупных и малых, связанных с моддингом. Там можно найти множество руководств и обучающих материалов.

CA: А как насчёт моддеров-новичков (т.е. тех, кто вообще раньше этим не занимались)?

Антон Чолаков:  Самый лучший вариант для новичков – это присоединиться к команде моддеров. В наше время очень редко игры создаются в одиночку – наша собственная команда состоит из дизайнеров, программистов, художников, саунд-художников и т.д. Также у нас есть руководители, чьи обязанности в малых командах могут исполняться ранее упомянутыми сотрудниками. Кроме того, есть и группа контроля качества, т.е. тестеры. Роль последних при создании мода обычно выполняют игроки, которые просто пробуют мод из любопытства. В крупных моддинг-группах иногда бывают свои специализированные команды тестеров. Что я хочу до вас донести, это в мод-команде необходимы знатоки во множестве аспектов разработки, а у новичков нет необходимых навыков, чтобы в одиночку создать интересный мод. Поэтому свяжитесь с командой моддеров, узнайте, чем им можно помочь, и совсем скоро вы начнёте набираться знаний и опыта. Рекомендую начать с форумов на Nexus Mods.

Михаил Балабанов: Да, простейшим способом начать моддинг скорее всего будет вступление в уже существующую команду моддеров, где вы можете начать с небольших задач и набраться знаний. Изучите основы программирования на Lua (функции, таблицы с ключевыми значениями, переменные, циклы, ветви) и работы с базой данных (таблицы БД, поля, ключи, отношения между полями, столбцы подстановки) – вам скорее всего понадобятся оба навыка. Попробуйте изучить и подредактировать уже существующие модификации, оригинальные скрипты и базы данных. Подумайте о том, что конкретно вы хотите сделать, и спросите совета у более опытных мододелов. Найдите элементы существующих скриптов, которые делают нечто похожее на то, что вы хотите сделать, и соедините их. Изучение методом проб и ошибок очень интересно. Когда вы создаёте что-то, что приносит радость другим, ощущения просто непередаваемые. Главное – не сдаваться!

Радослав Борисов:  Найдите что-то, что вас истинно увлекает! Моддинг –это творческий процесс, благодаря которому ваши абстрактные идеи становятся реальностью.

CA: Спасибо за уделённое нам время! Скажете что-нибудь напоследок про модостроительство в Total War Saga: TROY?

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

И кстати, вышесказанное относится не только к видеоиграм, а к играм вообще – подвижные игры, ролевые игры, настольные игры и т.д. Не ограничивайте себя в творческом плане!

Михаил Балабанов: С нетерпением ждём ваших творений!

Радослав Борисов: С энтузиазмом жду великолепных модов от нашего замечательного сообщества. Напоследок хочу напомнить всем моддерам, новичкам и ветеранам, что если вам нужна помощь или вы хотите предложить что-то интересное, дайте нам знать!

Хоть я и не могу обещать, что сбудутся абсолютно все ваши пожелания, нам всё равно важно знать, в чём нуждается наше моддинг-сообщество.

А ещё я с нетерпением жду в игре моделей Брэда Питта и Орландо Блума.

На старт, внимание, марш делать моды!

Подписаться
Уведомление о
0 комментариев
Inline Feedbacks
Показать все комментарии