
Stellaris 4X-стратегия
Дневник разработчиков Stellaris №207 — Трудные происхождения
Всем привет!
На этой неделе мы хотели показать вам новые трудные происхождения, которые не стоит ждать в обозримом будущем.
Начнём с Surviving the Aftermath, разновидности «Жителей пустоты».
Происхождение Surviving the Aftermath начинается с предыстории о строительном и колониальном кораблях, пропавших без вести, когда государство кризиса активировало эфирофазную установку и уничтожило галактику, и теперь вы остались с орбитальным поселением, и вам предстоит возродить галактику.
Ваша родная система.
Поскольку галактика была уничтожена, и в ней не осталось ресурсов, мы думаем, что это будет увлекательное и трудное происхождение.
Местное скопление звёзд.
Галактика. Одиночество. Полное одиночество.
Далее на очереди происхождение Crusader King, где вы начинаете игру правителем примитивной цивилизации в эпоху позднего средневековья.
Жизнь в роскоши.
Это происхождение начинает со значительным отставанием по технологиям, но по результатам тестовых игр мы определили, что вы сможете выйти в космос через несколько столетий.
На случай, если другое государство решит просветить вашу цивилизацию, у вас будет несколько событий, а также мини-игра со сжиганием пришельцев на костре.
С уникальными дипломатическими опциями!
Победа в игре с происхождением Crusader King позволяет получить новое достижение Universe Universalis.
Происхождение Prison Architect доступно только взбунтовавшимся служителям и значительно меняет игровой процесс. Вместо того, чтобы развлекаться со своими органическими трофеями, они стремятся собрать всех органиков и, подобно преступному синдикату, получают бонусы от высокой преступности на планетах. Также они получают единство за каждое поселение, отобранное у преступных синдикатов.
Собери их всех!
Небольшие изменения для заповедника органической жизни.
Доступное всем государствам происхождение «Всё в порядке» добавляет игре огоньку — ваше государство любит погорячее и может колонизировать только звёзды.
Жарковато здесь, или мне кажется? Хотя зрелище очень яркое.
Каждый месяц ваши сооружения с некоторой вероятностью сгорают в адском пламени, но энергии у вас будет хоть отбавляй.
И наконец, самое сложное происхождение — «Опека над ИИ». При нём вы делите бразды правления государством с ИИ. Это происхождение также доступно всем и представляет раздробленное правительство или гештальт-сознание, в котором две силы борются за власть, порой отдавая противоречивые указания. ИИ будет следовать своим безупречным и безотказным алгоритмам, и несомненно приведёт государство к величию, если вам хватит смелости довериться ему.
У ИИ большие планы на мой столичный мир. Величайшие планы.
На этой неделе всё. Напоминаем, что обновление 3.0 «Дик» и Nemesis выходят через две недели, 15 апреля.
А какое происхождение создали бы вы, захотев особых испытаний?
Дневник разработчиков Stellaris №206 — Управление разработкой Nemesis
Всем привет!
Сегодня мы более подробно поговорим о процессе разработки дополнений вообще и Nemesis в частности.
Как мы уже обсуждали раньше, одной из самых важных задач является найти сильную тематику. Как только у нас появлялись идеи (а их было много), мы обычно раскладывали их по «коробкам». Каждое дополнение получало свои особенности из разных «коробок»: Utopia была про внутреннюю политику и настройку империи; Apocalypse изменил военные действия; Megacorp поменял экономику; Federations было посвящено дипломатии.
Обычно получалось так, что в «коробке» было больше идей, чем вписывалось в рамки дополнения, так что многие идеи, подходившие под прошлые дополнения, откладывались на будущее. Например, «коробка дипломатии» содержала слишком много хороших идей, над которыми нам хотелось поработать, так что в Federations мы уделили больше внимания «хорошей» дипломатии, тогда как Nemesis посвящено «плохой».
Очень важно придерживаться сильной тематики в рамках дополнения, ведь это даёт игрокам больший простор для фантазий и воодушевления идеями. И если дополнение сосредоточено на чём-то одном, то больше и возможностей для взаимодействия между его особенностями; это даёт игре те глубинные взаимосвязи, которые ценят многие игроки.
Однако, хоть и важно придерживаться единой тематики дополнения, мы всегда включаем что-нибудь, что понравилось бы разным группам игроков. К примеру, темой Federations была дипломатия и совместные действия, но мы посчитали хорошей идеей добавить в игру джаггернауты, чтобы игроки, предпочитающие более агрессивную манеру игры, тоже получили новые игрушки.
Nemesis.
Становление кризисом и создание Галактического империума через Галактическое сообщество являются примерами идей, так или иначе связанных с дипломатией. С появлением Галактического сообщества вполне логично дать игрокам возможность сыграть за «плохих парней» и попытаться уничтожить галактику. Это оправдывает наличие в игре механики для противодействия подобным угрозам.
Если дополнение Federations было посвящено сотрудничеству и дружелюбной дипломатии, Nemesis посвящено конфликту между противоположными сторонами. Мы очень хотели продемонстрировать, как кризис угрожает галактике, на защиту которой встаёт Хранитель.
Кроме того, мы хотели дать больше возможностей для изменения равновесия сил и развить идею хранителя и развращающей власти. Позволив Хранителю превратить Галактическое сообщество в Галактический империум, мы продолжили тенденцию появления различных типов галактических кризисов. Хотя в данном случае жизни в галактике ничего не угрожает, Галактический империум (и возможное восстание) всё равно планировался нами как своего рода дипломатический кризис.
Лично я крайне доволен, что мы сумели собрать эти ранние идеи и объединить их в дополнении Nemesis. Нечасто нам удаётся создать такой фантастический коктейль, поэтому мы рады, что там удалось сохранить целостность.
Шпионаж.
Я давно хотел сделать систему шпионажа, поскольку это было моей целью как дизайнера. Мне не нравятся слишком предопределённые системы шпионажа или те, когда просто сидишь и ждёшь заполнения шкалы, после чего получаешь сообщение об успехе или неудаче
.
Я хотел, чтобы наша система шпионажа была более повествовательной, и система археологии, которую я создал для Ancient Relics, стала отличной основой. Мне нравится, что эта система работает с фазами, подобно осаде в EU4, но куда более открыта для повествования благодаря случайным событиям и «основной истории».
Учитывая опыт создания системы археологии я хотел, чтобы наш шпионаж работал подобным образом. Будучи гейм-директором, я отвечаю не только за общее видение игры, но и за масштабы (насколько большой должна быть особенность и на что мы тратим время разработки). Я знал, что взяв за основу систему археологии, мы могли сэкономить время и потратить его с большей пользой. Создание интерфейса на движке Stellaris занимает довольно много времени, поэтому я считаю благоразумным сэкономить это время и не создавать всё с нуля. При повторном использовании также можно снизить риски, поскольку мы уже понимаем, чего ожидать от системы или особенности. Время, которое мы выигрываем на повторном использовании, можно потратить на полировку, исправление ошибок или добавление новых крутых интерфейсов для других особенностей. Однако всё не так просто, и надо хорошенько следить за всеми необходимыми доработками.
Что касается целей системы шпионажа, то я хотел, чтобы важное место занимало получение информации. Систему шпионажа сложно сделать правильной, потому что она может казаться слишком предсказуемой или скучной, и всегда нужно помнить об ощущениях, которые получаешь, становясь целью этого шпионажа.
При добавлении подобных новых систем мы также должны учитывать, что игроку ещё нужно следить и за прочими, уже существующими в игре системами. Нам надо создать систему, когда будет интересной и увлекательной, если игрок решит ею пользоваться, и помнить о том, как рискованно добавлять системы, обязывающие игрока использовать их. При создании глобальных стратегий многое нужно держать в голове. Мне кажется, что система шпионажа получилась не слишком навязчивой, но при этом весёлой и интересной, если вы захотите ею воспользоваться
.
Мы не смогли бы добавить всё желаемое: я бы очень хотел увидеть более интерактивную систему контршпионажа, но в целом я очень доволен нашим шпионажем. Пусть он не идеален, но то, что есть, и то, как оно работает, получилось хорошо.
Базовая система шпионажа, как и археологии, являются частью бесплатного обновления, благодаря чему нам и мододелам будет проще добавлять больше контента. Мы уже пробовали делать сами системы частью бесплатных обновлений и это очень помогло нам в прошлом — иногда мы даже делали бесплатными системы, полностью входившие в дополнение. Бонусы за стремление (добавленные в Utopia) изначально были частью Utopia, но нам очень хотелось использовать эту систему, поэтому мы добавили её в базовую версию игры и сделали так, что только некоторые бонусы (например биологическое вознесение) были частью Utopia. Нам очень нравится этот подход, и, надеюсь, вам тоже. Все в выигрыше!
Разведданные.
Мы хотели, чтобы сбор информации был важной частью системы шпионажа, так что новая система разведки оказалась необходимой для создания хорошего впечатления от сбора данных у игроков.
Мне никогда не нравилось, что как только устанавливалась связь с инопланетным государством, тут же вся информация о нём становилась доступной. Мне хотелось, чтобы инопланетные государства были более загадочными, и с изучением галактики приходилось также «изучать» инопланетян.
Целью новой системы разведданных было улучшить раннюю игру и её середину, взглянув на «изучение» под новым углом. Даже если вы не стремитесь воевать или сотрудничать, вам должно быть весело узнавать больше о галактике и её жителях. Поскольку система разведки затрагивала многие аспекты игры, а также взаимодействовала с другими особенностями, она должна была стать бесплатной. Таким образом, вся система разведданных является частью бесплатного обновления, а ещё её легко модифицировать.
Оценивая проделанную работу, внедрение системы разведданных точно оказалось более сложным, чем мы изначально предполагали, из-за множества крайних случаев и мелких деталей, при которых новая система взаимодействовала с уже существующими особенностями. Переработка интерфейсов с целью скрыть информацию также оказалась более трудоёмкой, особенно с учётом масштабов Stellaris.
Будучи гейм-директором, мне нужно отдавать себе отчёт в том, как я трачу время разработки. Если чересчур много окажется вложено в бесплатную особенность, такую как разведданные, то особенностей дополнения может оказаться слишком мало, и игроки посчитают дополнение пустым. Нужно соблюдать баланс между особенностями бесплатного обновления и платного дополнения, ведь они оба важны по своим причинам.
В заключение хочу сказать, что всё дополнительное время, потраченное на разработку системы разведданных, определённо стоило того.
Становление кризисом.
Мысль позволить игроку стать кризисом не нова, мы уже очень давно хотели сделать что-то такое. И вот, наконец нам представилась такая возможность, и дополнение Nemesis подошло для этого как нельзя лучше.
Суть этой возможности в том, чтобы игрок мог совершать «злые» деяния и открывать все более мощные награды на своём пути к галактическому превосходству.
Система неоднократно менялась, но ощущение, что мы двигаемся в верном направлении, появилось после добавления чёткой прогрессии с «уровнями кризиса».
Новый интерфейс становления кризисом ощущается бесподобно, и ещё лучше с отчётливой прогрессией в качестве явной цели. В игровом дизайне явная цель — это некая задача, которая ставится перед игроком (например квест), тогда как неявную цель игрок может придумать себе самостоятельно (например подружиться со всеми империями за блоргов).
Слабость, которая тянется через многие наши глобальные стратегии, заключается в малом количестве явных целей, из-за чего новичкам бывает трудно сориентироваться. Если игра для вас совершенно в новинку, придумать себе неявную цель может быть очень непросто. Национальные фокусы в HOI4, задания в EU4 и Imperator — вот примеры особенностей, при помощи которых мы добавили больше явных целей в эти игры. Неявные цели идут рука об руку с реиграбельностью, и могут быть более запоминающимися, ведь только игрок за них в ответе.
В становлении кризисом мы добавили цели, которые направят игрока на пути развитию все больше угрозы галактике. И хоть они не настолько явные, как в каком-нибудь задании, они должны сильно помочь и мотивировать игрока.
Изначально мы думали о возможности становиться разными видами кризисов (вроде разрушительной силы, как кризис конца игры, или заставляющей всех подчиняться, как мародёры), но из-за временных ограничений оказались перед выбором: один более сильный и интересный вариант, либо несколько менее проработанных. Сделать этот выбор выпало мне, и мне показалось логичнее сосредоточиться на одном, разрушительном варианте — по многим причинам, но основная в том, что именно этого все и ждут от «кризиса».
Теперь, глядя на итоги работы, я рад тому, какой получилась эта особенность, и надеюсь, вы все хорошенько повеселитесь, взрывая одну звезду за другой при помощи своих пожирателей звёзд.
Хранитель и Галактический империум.
Неудобно повторяться, но хотелось бы также отметить, что мне очень нравится этот цикл, как Хранителя избирают для борьбы с кризисом, и как сам он затем захватывает власть и становится новым, дипломатическим кризисом. Очень атмосферно и очень хорошо описывает подобный сценарий из поп-культуры (и, в какой-то степени, из истории).
Чего-то добавить по этим особенностям мне нечего — они почти полностью были разработаны одним из наших старших и очень опытных контент-дизайнеров. Идея и первые наброски Галактического империума родились вместе с Галактическим сообществом, и мы очень рады возможности добавить его в Nemesis.
И хоть Галактический империум — это не самая простая и обычная возможность, и не всегда вы сможете его создать, всё же это очень запоминающийся и захватывающий опыт для игрока.
Подведение итогов.
В конечном счёте я сомневаюсь, что создать безупречное дополнение в принципе возможно. Требуется большой опыт, чтобы понять, как лучше всего распорядиться имеющимися ресурсами. Во всём вышесказанномкроется ещё множество мелких деталей, но я надеюсь, что этот дневник хоть немного вас заинтересовал. Я попытался показать вам изнанку работы над дополнением, а также поделился своими мыслями на этот счёт.
Ещё я хотел бы поблагодарить свою команду за фантастическую работу над Nemesis. Без них ничего из этого не появилось бы на свет.
Дневник разработчиков Stellaris №205 — Анонс обновления 3.0 «Дик»
Всем привет!
Обычно дополнения выходят вместе с большим бесплатным обновлением, и на этот раз ничего не меняется!
Мы рады сообщить, что 15 апреля вместе с Nemesis выйдет обновление 3.0 «Дик»! Названо оно, разумеется, в честь писателя Филипа К. Дика, известного многими работами, среди которых вдохновившие фильмы «Бегущий по лезвию» и «Вспомнить всё» (который также является одним из моих любимых фильмов!).
Почему 3.0?
Нам показалось, что новая система разведки и переработка системы первого контакта имеют весомое влияние, чтобы оправдать это изменение. Теперь ранняя и средняя игра ощущается совсем иначе, в хорошем смысле. Другие государства кажутся куда более загадочными, а изучить всю галактику больше не будет так просто. Изменения системы роста населения и внедрение промышленных районов также оказались достаточно весомыми, чтобы сделать это изменение.
Забегая вперёд, мы также готовимся стать немного гибче и выпускать обновления немного чаще. Я пока не хочу давать громких обещаний, но 2021 год должен стать очень хорошим годом для Stellaris!
Особенности обновления 3.0 «Дик»
-Новая система разведки.
-Переработка первого контакта.
-Переработка роста населения.
-Новые промышленные районы и изменения производства сплавов и товаров массового спроса.
-Новая система шпионажа и операции по получению разведданных (другие операции будут входить в Nemesis).
-Множество исправлений ошибок и улучшений.
Обновление шпионажа.
Система шпионажа претерпела несколько изменений с выхода посвящённых ей дневников. Основываясь на тестах и множестве отзывов, мы упростили некоторые системы, которые необоснованно всё усложняли, были запутанными или странными. Взаимодействие шифрования, расшифровки и контршпионажа было одним из наиболее сложных для понимания, поэтому мы решили полностью переработать контршпионаж, переименовали расшифровку во взлом кодов и применили стандартизованные правила их использования:
Шифрование всегда используется как защита от шпионажа.
Взлом кодов всегда используется как мощь шпионажа.
В ранних вариантах, когда модификатор назывался по-разному в разных местах, это немного смешивало показатели и было сложно сказать, что будет больше полезно при попытке внедриться в государство. Мы переименовали расшифровку, чтобы избежать ещё большей путаницы. Относительная шифровка в этой системе используется часто, и теперь всегда будет сравнивать взлом кодов «нападающего» государства с шифровкой «защищающегося».
Подсказка относительного шифрования. В этом примере наш взлом кодов ниже вражеской шифровки, а их взлом кодов выше нашей шифровки.
Отполированный интерфейс операций. Сверху слева — посол, уровень внедрения (текущий и максимальный в виде полосы прогресса и значений. Категории разведданных вверху справа.
Мы сильно упростили интерфейс операций, убрав кучу чисел, связанных с сетью и самими операциями. На волне упрощений мы также удалили понятия шпионской силы и пропускной способности, так что теперь нельзя проводить несколько операций за раз против одного государства — только по одной. Это также решает возникшую на этапе тестирования проблему, что не всегда сразу было понятно, к какой именно операции относится случайное событие, поэтому следить за ходом операций теперь в целом легче.
По завершении операции теперь почти всегда наносят значительный удар по внедрению, что отражает потерю контактов и повышение бдительности государства. Операции также использовали различную сложность для глав — мы привели всё в единообразие, поэтому теперь можем показывать сложность в интерфейсе, и сообщать игроку, если какой-то из активов будет особенно полезен на конкретной операции.
Обновление первого контакта.
С первого показа этой системы в дневнике №193 мало что изменилось, но всё же есть пара интересных новшеств.
Законченный интерфейс первого контакта. Силуэт в нижнем правом углу должен быть общим, и изменится на портрет чужой расы, когда вы достаточно продвинетесь в цепочке событий первого контакта.
Ранняя враждебность теперь может привести к доконтактовому конфликту. Если вы разозлите соседнюю цивилизацию инопланетян, они могут нанести вам визит.
Более агрессивные империи, вроде поборников чистоты или пожирающего роя, тоже вряд ли обрадуются, если вы будете шнырять по их территории.
Похищение пришельцев теперь может оказаться рискованным мероприятием.
Похоже, им не особо понравились наши похищения…
Обновление планировщика.
Мы добавили несколько небольших улучшений, делающих работу с планировщиком более удобной. Одно из них позволит вам менять порядок планет в планировщике.
Планеты можно перемещать внутри списка сектора или всего списка планет, в зависимости от того, какая опция выбрана.
В планировщике также можно заменить значки классов планет на значки их категорий.
С помощью этих двух опций теперь можно упорядочить планеты как вам угодно, а также отображать их категории. Наш менеджер по продукту Саймон наконец-то сможет выстроить свои планеты «Добывающая 1», «Добывающая 2», «Добывающая 3» и т.д. в правильном и очень немецком порядке.
На этом всё! Надеюсь, что вы так же ждёте выхода дополнения Nemesis!
Дневник разработчиков Stellaris №204 — Язык скриптов и улучшения для моддинга
Всем привет!
Далее слово возьмёт Caligula.
С вами Caligula, здешний волшебник скриптовой магии. Я тесно работаю с нашим языком скриптов, ежедневно используя и улучшая его, а потому невероятно рад показать новые возможности, которые моддеры (и мы сами) смогут использовать после выхода следующего обновления.
Сперва пробежимся по новым особенностям.
- Шпионаж: моддеры могут добавлять новые операции, делается почти как археологические раскопки.
- Первый контакт: всё по скриптам, так что моддеры могут менять большую часть этой системы. Однако все первые контакты теперь являются одной длинной цепочкой событий, поэтому перезапись может стать проблемой. К счастью, чтобы сгладить её, у нас появился новый эффект fire_on_action, который мы теперь кое-где используем.
- Стать кризисом: особенности кода, например, интерфейс, целиком завязаны на скриптах. Поэтому в теории можно создать полностью новую систему какого-либо развития и достижения цели, если это будет нужно в моде.
- Император и хранитель: эта особенность создана самым опытным контент-дизайнером студии.
Вместе с ней добавилось множество сопутствующих улучшений скриптов, таких как повышенная гибкость резолюций Сообщества и возможность создавать флотилии федерации и Сообщества через скрипты.
Будет очень интересно посмотреть, что моддеры с этим сделают, но со времён выхода 2.8 мы сделали ещё очень много всего, так что...
Основные улучшения и стандартизация.
Не совру, если скажу, что язык скриптов Stellaris постепенно растёт в соответствии с ростом наших нужд. Это и не удивительно, ведь игра сама стала намного обширнее. Но в этом есть ложка дёгтя, ведь с проектом работает много разных людей, и неизбежно появляются несоответствия между разными особенностями. С точки зрения пользователи это может выражаться в том, что нечто работает в одном месте, но не работает в похожем другом.
Для будущего обновления мы уделили время, чтобы целостно взглянуть на картину и внести некоторые общие улучшения и стандартизацию.
Первым выиграло от этого то, что мы называем «скрипт-листами». Это система кода, которая создаёт объекты с припиской random/every/any/count из одного блока кода — так мы можем быть уверены, что построенный таким образом массив будет всегда одинаковым. То есть, что any_owned_pop будет проверять именно те поселения, на которых выполняется every_owned_pop. Мы их используем уже довольно давно, но для некоторых скоупов были совсем старые решения, которые появились ещё до скрипт-листов. По итогу возникали странности. Например, x_pop и x_planet порой делали совершенно разное, в зависимости от того, используешь every, random, any или count (при работе с разными скоупами иногда ссылки были на все объекты в игре, а иногда на те, что принадлежат текущему скоупу...). Самое неприятное — мы обнаружили, что any_ship ссылается на «все корабли в игре», и всё это время мы использовали его неправильно. А ещё бывало, что одна из версий (зачастую count) просто отсутствовала.
В новом патче почти все решения, придуманные до появления скрипт-листов, удалены и заменены скрипт-листами. В некоторых случаях мы использовали эту возможность, чтобы прояснить назначение скрипт-листа. Например, скрипт-лист planet теперь поделён на galaxy_planet и system_planet. (Это сломает некоторые моды, о чём я немного жалею, но не особо. Это определённо того стоило, и в списке изменений мы подробно укажем, что поменялось. В большинстве случаев пройтись автозаменой будет достаточно. Кроме того, из-за скрипт-листов немалое количество count_x триггеров потеряло букву S на конце, что несколько прискорбно с грамматической точки зрения). Также расширился функционал некоторых скрипт-листов, например, owned_pop, owned_planet и system_within_border теперь работают со скоупом сектора.
Ещё одна выбивавшаяся область, которую надо было улучшить — ссылки на скоупы в эффектах и триггерах, к примеру, create_pop = { species = <что-нибудь> }. Оказалось, что есть довольно большие расхождения в том, чем это <что-нибудь> может быть, в зависимости от эффекта или триггера. Иногда доступны были только расы, иногда расы, лидер, государство и поселение, иногда всё то же, но без поселений... А иногда мы даже использовали нечто под названием owner_main_species, которое работало только здесь (в отличие от owner_species, которое работало везде...). Решением было пройтись по каждому триггеру и эффекту и привести всё в единообразие, чтобы в каждом случае и во всех скриптах использовались одни и те же функции: расы, государства, планеты, лидеры и солнечные системы. Хватит терпеть, что нечто работает тут, но не работает там!
Благодаря этому мы также можем быть уверены, что ошибки всегда записываются правильно (и информативно), если в скриптах что-то пошло не так. (Примечание для моддеров, если кто-то не знает: лог ошибок можно найти в Documents/Paradox Interactive/Stellaris/logs/error.log). Сама запись ошибок тоже стала лучше по всему языку. Мы обновили множество сообщений об ошибках, которым не хватало важной информации (где лежит файл, например) — я как хранитель логов с наших ночных тестов лично отправился в крестовый поход против бесполезных сообщений об ошибках. Более того, мы исправили пугающее число случаев, когда что-то не работало, но не сообщало об этом, например, если в триггере что-то не так и он всегда будет возвращать false, или если в эффекте ошибка, из-за которой он ничего не будет делать. Не могу обещать, что такого больше никогда не повторится, но мы приложили немало усилий, чтобы избавиться от подобных случаев. Моддеры могут рассчитывать на то, что их лог ошибок заметно увеличится как при запуске игры, так и по ходу кампании. А ещё теперь нам легче исправлять баги скриптов, потому что большая их часть сразу всплывает в ночных тестах.
Переменные.
Поговорим теперь немного о другом. И наши разработчики, работающие со скриптами Stellaris, и моддеры давно завидуют возможностям более новых версий движков игр PDS, особенно способности работать с математикой внутри скриптов. Мы использовали переменные, но их возможности более ограничены, чем нам бы хотелось. На самом деле, я видел некоторые способы, которыми пользовались моддеры, чтобы обойти эти ограничения, и это послужило для нас сильной мотивацией устранить нужды в подобных ужасных скриптах.
В 2.8 с переменными можно было делать следующее:
- сравнивать, приравнивать, добавлять, отнимать, делить или умножать переменную на число, другую переменную в той же скоупе, или ту же переменную из другого скоупа;
- экспортировать различные настройки создания галактики в виде переменной;
- использовать переменные в локализации, но если значение переменной было 0, то она отображалась в виде пробела, потому что очищалась;
- использовать переменные в качестве параметра в некоторых случаях, например, как счётчик в эффекте while.
С тех пор мы многое усовершенствовали, и ещё есть планы на ближайшее будущее. В грядущем патче:
- можно сравнивать, приравнивать, добавлять, отнимать, делить или умножать переменную ещё и на другую переменную из другого скоупа;
- новые эффекты для получения остатка от деления (оператор %), округления вверх, вниз, и к ближайшему целому числу;
- новый триггер check_variable_arithmetic проверяет значение переменной, если бы вы произвели с ней какие-то арифметические операции, например, умножили на другое число или переменную (работает для сложения, вычитания, умножения, деления и остатка от деления);
- новые эффекты для экспорта различных игровых значений в переменные. За это отвечают: export_modifier_to_variable (check_modifier_value теперь тоже есть), export_resource_stockpile_to_variable и export_resource_income_to_variable;
- add_modifier, add_resource, resource_stockpile_compare теперь имеют параметры mult, в которых принимается переменная. Так что теперь можно масштабировать стоимости в ресурсах и бонусы от эффектов при помощи переменной;
переменные больше не очищаются при значении 0, для этого появилась команда clear_variable, и их можно свободнее использовать в локализации;
в некоторых случаях использование переменных будет создавать запись в логе ошибок, если вы вдруг попытаетесь использовать переменную, не определив её.
Кроме того, мы начали обеспечивать возможность использовать переменные чаще. Суть в том, что мы хотим изменить принцп работы простых числовых эффектов и триггеров (т.е., тех, что принимают в качестве параметра число и не имеют фигурных скобок):
- эффекты должны позволять вам использовать переменные, а также брать значение этих переменных;
- триггеры также должны позволять вам использовать переменные, а также сравнивать себя со значением этих переменных;
- триггеры должны позволять сравнение с другим скоупом, где они могли бы сработать. Таким образом, num_pops > from будет проверять, больше ли поселений в текущем объекте, чем в from;
- должна быть возможность экспортировать текущее значение триггера в переменную при помощи эффекта, т.е. чтобы export_trigger_value_to_variable = { trigger = num_pops variable = my_var } записывало в my_var количество поселений в текущем скоупе.
К сожалению, эти изменения стали возможны только недавно, и хоть основу мы заложили, они ещё не полностью введены в игру — завершение работы над Nemesis и сопутствующим обновлением было более приоритетной задачей (эти изменения не безопасны, мы изменили многие строки кода ради них). Так что считайте этот дневник анонсом того, как код начнёт работать в (надеемся) ближайшем будущем. Пока же по описанному принципу будет работать триггер fleet_power, и export_trigger_value_to_variable тоже включён в обновление, хотя и работает только с этим триггером.
Эффекты кнопок.
При разработке интерфейса мы прикрепляем функцию к кнопкам в исходном коде. Но есть также и поддержка кнопок интерфейса, которые вы можете добавить модами. В предыдущих версиях они не подхватывали скоуп объекта, к которому были прикреплены, поэтому кнопка у планеты применяла эффект для всего вашего государства, а не только лишь для планеты. Для ряда случаев мы это исправили: теперь кнопки способны распознавать, относятся ли они к планете, флотилии, кораблю, системе, фоновому объекту, мегасооружению, федерации, месту раскопок, месту первого контакта, агентурной сети или шпионской операции. И случайно так вышло, что консольные команды отладки, вроде «effect ...» и «trigger ...», теперь работают в тех же скоупах.
Уточнение: принцип работы этих эффектов не совсем честный, и систему можно ввести в заблуждение, открыв одновременно несколько окон. Я советую проверять строку is_scope_type = planet/что-нибудь в секциях allow и effect эффекта кнопки. Но, судя по всему, в большинстве случаев всё должно работать как надо, а это лучше, чем ничего.
Ещё больше приятных новинок.
- В большинстве мест, где ранее можно было использовать логические операторы >, >=, =<, <, теперь можно использовать != в значении «не равно».
- Типы сообщений получили собственную директорию, поэтому моды могут добавлять новые типы, не переписывая весь файл (отличная новость для совместимости модов, к тому же мододелы теперь смогут добавлять улучшения качества жизни, не мешая друг другу).
- Сообщения, вызываемые эффектом create_message, теперь поддерживают использование команд локализаций, например [This.GetName], где This является целью сообщения.
- А ещё из-за того, что нам много где пришлось исправлять Галактическое сообщество на Империум, переменные локализации теперь работают в некоторых новых местах.
- Добавлены эффекты add_victory_score = <число> и win = yes. Уверен, никто не станет ими злоупотреблять.
- Добавлены новые типы событий: leader_event, system_event, starbase_event, first_contact_event и espionage_operation_event. Однако среднее время срабатывания (MTTH) для них пока не работает. Исправление этого упущения не было для нас приоритетным, да и в целом лучше избегать использования MTTH.
- Прописанное в коде поведение джаггернаута теперь привязано к размеру корабля, являющегося мобильной космической базой, а не к ключу juggernaut. То есть теперь можно добавлять джаггернауты в модах, и они не будут страдать от критических ошибок.
- Теперь можно скрывать статичные модификаторы из списка модификаторов государства.
- Теперь можно проверять расстояние до объектов в пределах одной солнечной системы, добавив к триггеру расстояния строку same_system = yes.
- Появилось много новых on_action, и вы теперь можете делать свои с помощью эффекта fire_on_action.
И многое другое.
И последнее : я оставлю вам новую документацию по триггерам (по состоянию на сегодня), которые теперь можно найти в отдельном файле trigger_docs.log. В представлении они не нуждаются. Кроме того, не пропустите Paradox Insider, который пройдёт на канале в эту субботу в 22:00 МСК.
Дополнение Nemesis выйдет 15 апреля
К предзаказу оно доступно с пятнадцатого марта.
Дневник разработчиков Stellaris №203 — Спецэффекты в Nemesis
Всем привет!
А теперь слово возьмёт Эрик Форсстрём.
Меня зовут Эрик Форсстрём, и с релиза дополнения Lithoids я работаю в команде Stellaris художником по визуальным эффектам. Я отвечаю за всё, от небольших эффектов двигателей кораблей до целых систем, таких как туманности, которые мы добавили в игру в прошлом году. Если что-то двигается и не является 3D-моделью, то с высокой вероятностью это результат работы художника по визуальным эффектам.
Чем занимается художник по визуальным эффектам?
Мой рабочий процесс не такой, как у других художников, потому что по сравнению с 3D-художниками я обычно не работаю с 3D-моделями. Мой главный рабочий инструмент — частицы, которые по большому счёту представляют из себя плоскости, из которых я создаю крутые взрывы! Не буду углубляться в технические нюансы использования частиц, но попробую создать у вас представление о разнице между работой художников по визуальным эффектам и других: в то время как 3D-художники придумывают и создают 3D-модели, я занимаюсь симуляцией плоскостей, их движением, изменением размера и цвета со временем. Не могу сказать, что никогда не работал с 3D-моделями, но, как я упоминал ранее, они не являются моим основным рабочим инструментом, что видно из примеров ниже.
Всяким классным и интересным!
С деталями разобрались, время перейти к эффектам, которые мы добавим в Nemesis!
Начнём с кораблей. Я стремился с помощью эффектов сделать разные наборы кораблей более уникальными. Некоторые из вас заметили, что корабли литоидов и некроидов отличались особенными эффектами, начиная с двигателей и заканчивая взрывами. Я старался придать им всем хоть немного различный вид, и в то же время подходящий под общий стиль кораблей.
Обычно я использую разные формы, цветовые схемы или ещё что-нибудь интересное, что удаётся придумать, чтобы они выглядели неповторимо и в то же время однородно.
Титан из дополнения Nemesis, с новыми эффектами для гибельного луча и двигателей.
Большие, можно сказать, системные эффекты!
Ещё вы могли заметить, что за прошедший год мы добавили множество разных эффектов в системах, вроде туманностей, космических бурь и эффектов для систем, которыми владеет кризис конца игры. Мне всегда именно этого и не хватало в Stellaris — системы казались пустыми. В Nemesis мы добавили ещё несколько эффектов в системах, например, для каркаса эфирофазной установки, который мы упоминали в одном из предыдущих дневников.
Когда вы его улучшаете, эффекты в системе меняются от уровня к уровню, становясь всё масштабнее и мощнее на более поздних этапах. Я немного начитерил с ресурсами в скоростью строительства в видео ниже, чтобы показать вам это во всей красе, и вы можете воочию увидеть, как эффекты меняются на разных этапах строительства. От довольно жиденьких спецэффектов до мощных и накрывающих всю систему, со множеством деталей, обилием форм и движения, чтобы у вас по-настоящему создавалось впечатление грандиозности происходящего.
Как они создаются?
Системные эффекты — одни из тех эффектов, которые зачастую создаются путем смешения частиц и 3D-моделей. Их значительный размер требует более сложных фигур, чем можно создать с помощью одних только частиц. Эффект ниже создается с помощью мешей, которые видны на картинке ниже, после чего я применяю анимированные шейдеры. Таким образом создается движение текстур, которое можно наблюдать на видео. Добавьте частиц и получите готовый, полноценный эффект!
Меши, используемые для визуальных эффектов эфирофазной установки.
Каркас эфирофазной установки на разных стадиях улучшения.
Уничтожение звезды.
И моя любимая часть Nemesis! Уничтожение звёзд!
Процесс состоит из нескольких частей. Подготовка в основном представляет собой анимацию Пожирателя Звёзд со свечением посредине. Затем начинается этап выстрела — тут эффект довольно крупный. Как видите, мощность выстрела нарастает со временем и накапливается, пока не происходит большой взрыв.
На ранних этапах мощность сразу была максимальная, что выглядело круто, но не создавало ожидания выстрела. Вы смотрели на крутой эффект в течение «всего» 20 секунд без какого либо развития и без возможности понять по одним только спецэффектам, сколько ещё осталось до выстрела.
В конечном счёте мы решили разбить эффект на несколько этапов, кое-что добавить, кое-что переделать, чтобы в итоге вы буквально ощущали приближающийся взрыв звезды.
И последнее, но оттого не менее важное — сам взрыв звезды. Буду краток, поскольку взрыв не нуждается в пояснениях. Добавлю лишь, что это один из моих любимых, а возможно и самый любимый эффект из добавленных в игру.
Надеюсь, вам он понравится не меньше!
Гибель звезды.
И на этом у меня всё! Надеюсь, теперь вы лучше представляете, чем и как я занимаюсь. Спасибо, что прочитали!
На следующей неделе контент-дизайнер расскажет об улучшении скриптов в обновлении!