Дневник разработчиков Stellaris №149 — Улучшение технической стороны


"Всем привет, Moah на связи. Я являюсь техническим руководителем Stellaris и сегодня мы поговорим о бесплатном обновлении 2.3 «Вульф», сопровождающем Ancient Relics, и том, что оно привнесёт в техническом плане.

Stellaris станет 64-битным.

Народ требовал этого на протяжении уже долгого времени, а различные факторы наконец привели нас к этому изменению. Тем не менее, я должен понизить ваши ожидания: хотя многие из вас заявляли, что 64 бита будут волшебной таблеткой от всех болезней Stellaris, в реальности всё куда скромнее.

Что это значит?

Одно важное преимущество — снятие ограничения на 4ГБ ОЗУ: Stellaris больше не будет крашиться в ситуациях, когда достигает этого предела. Для людей, играющих на огромных галактиках, с большим числом империй, большим количеством модов или до четвёртого тысячелетия и дальше, это будет настоящим благословением.

Что касается производительности, тут особых изменений не произошло. Без погружения в технические детали скажу, что некоторые вещи стали быстрее, потому что теперь можно держать в памяти больше данных, а некоторые — медленнее, потому что теперь в памяти нужно держать больше данных. В итоге, наши измерения не показали каких-либо заметных отличий.

Наконец, последним эффектом перехода на 64 бита будет невозможность запустить игру на компьютерах с 32-битными операционными системами. Мы не думаем, что это затронет много людей, но всё же.

Что насчёт производительности?

Я знаю, что это любимый вопрос сообщества, так что мы делаем всё возможное. Во-первых, позвольте мне развеять миф, всплывающий повсюду в разных формах — Stellaris действительно использует несколько потоков, и мы постоянно ищем новые вещи для распараллеливания. Между 2.2.0 и 2.2.7 были вложены большие усилия в распараллеливание обработки должностей и населения, что являлось главным источником улучшения производительности между этими версиями.

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

-Расчёт ежедневной регенерации для кораблей с полным здоровьем;

-Обновление значков за пределами экрана;

-Выполнение необитаемыми планетами тех же расчётов, что и обитаемыми.

Откуда взялись эти, на первый взгляд, бессмысленные вещи? Что ж, мы чаще уделяем большее внимание геймплею и работаем быстро, чтобы наши контент-дизайнеры могли быстрее перебирать варианты, и некоторые вещи порой ускользают от нашего взора. Некоторые из этих систем, к тому же, довольно запутаны, и масштаб нового когда не всегда очевиден. Иногда отсутствие ограничений в выборе целей — удовлетворительный вариант, потому что позволяет сократить объём работы, но потом, месяцы спустя, кто-то добавляет больше вычислений, или число объектов резко возрастает по иным причинам, и внезапно у вас появляется проблема с производительностью.

Модификаторы

Одна вещь, отличающая Stellaris от других игр DPS — масштаб использования (или злоупотребления) модифиакторов. Всё вокруг — модификаторы. Модификаторы модифицируются другими модификаторами, которые модифицируются третьими модификаторами. За этим трудно уследить, и получается так, что любое значение может измениться в любое время без вашего ведома.

Когда обсуждение касается этой темы, часто задают вопрос: «Почему бы вам не вычислять должности при появлении новой?». Что ж, краткий ответ — тяжело узнать, когда появляется новая должность. Вы можете получить их от любых модификаторов, будь то империя, планета или население. На каждый их этих модификаторов могут повлиять принципы, традиции, бонусы за стремление, события, здания, должности, империя, планеты, население, технологии и т.д.

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


Скажем "нет"!

Для обновления 2.3 «Вульф» мы перешли на систему модификаторных узлов, где каждый узел регистрирует, за каким узлом он идёт, и пересчитывается при использовании, следуя по этой цепочке самостоятельно. К тому же, у нас есть более современные модификаторы, которые рассчитываются только при необходимости. Это уменьшает количество бессмысленных вычислений.

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

Итак, каков вердикт?

Согласно нашим тестам, производительность обновления 2.3 «Вульф» стала от 10% до 30% выше, чем в патче 2.2.7 сейчас. Надеюсь, что это не изменится до релиза, но природа вещей такова, что подобная оптимизация может сломать некоторые вещи в игре, а их исправление сводит на нет оптимизацию, поэтому мы не можем ничего обещать.


ИИ

Другим фаворитом форумных дискуссий стали различные улучшения ИИ. Во-первых, с разрешения @Glavius мы использовали его весовые коэффициенты, чтобы улучшить общее распределение должностей ИИ. Мы также отполировали и улучшили поведение ИИ, а главное, научили его использовать все наши новые функции.

Что ещё нового?

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

Ладно, хватит моей болтовни. Это начинает превращаться в романы Джорджа Мартина по продолжительности, и хотя мы можем охватить ещё много разных областей, этого пока будет вполне достаточно."