Анализ производительности Stellaris №1

Шико

Барон
Техподдержка
Сообщения
1,175
Карма
1,124 57
#1
Всем привет и добро пожаловать в "Анализ производительности Stellaris #1". В этом выпуске мы рассказываем о философии тестирования, собираем кое-какую справочную информацию и проводим несложное исследование.

Предмет исследования
Производительность "Стеллариса" - довольно популярная тема для обсуждения, однако большинство большинство участников описывают свои проблемы с уровнем точности "ааа, какого чёрта всё так адски лагает под конец игры!"

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

Метод исследования
Специальный регистратор данных (далее - data logger) используется, чтобы отслеживать:
  • Изменение даты в игре;
  • Изменение статуса игры (пауза/снятие с паузы/изменение скорости).
Каждое изменение записывается в лог с отметкой времени. Обработка этого лога позволяет рассчитать, сколько времени длится один игровой день.

Коэффициент выборки data logger'а установлен в 1 кГц.

Кроме того, параллельно работает ещё один инструмент - save watcher, который выполняет резервное копирование сохранений, если потребуется подробное исследование. Наконец, активируется AutoIt скрипт, отключающий переход в "ждущий режим".

Влияние data logger'а и save watcher'а на производительность PC продемонстрированы ниже:


Ограничения
Чтобы минимизировать влияние data logger'а на производительность, данные записываются в бинарном формате. Для обработки логов используются PowerShell-парсеры, преобразующие двоичный код в csv и рассчитывающие длительность одного игрового дня (в миллисекундах). Этот метод позволяет исключить моменты, в которые игра поставлена на паузу, однако, он же не позволяет оценить влияние паузы на производительность игры.

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

Тестовый стенд
Все партии были запущены на следующей конфигурации:
  • Core i5-3570K
  • 16 GB RAM
  • GeForce GTX 1060 6 GB
  • Win10
Последовательность подготовки к тестированию:
  • PC перезагружается перед каждым сеансом записи логов;
  • игра запущена из Plaza launcher'а и настроена следующим образом:
    • желаемая комбинация ползунков;
    • желаемая игровая скорость;
    • игра сохраняется вручную;
    • игра остаётся на паузе.
  • запускается data logger;
  • запускается save watcher;
  • запускается AutoIt скрипт;
  • игра снимается с паузы.
Обработка данных
Для построения графиков используется MATLAB. Типичный график:


Однако, учитывая плотность данных, графики довольно трудно понять. Гауссовское сглаживание с окном 720 дней (ожидаемое значение) используется для получения финального графика:


На этом мы заканчиваем с философией тестирования.




Оригинал
 

Шико

Барон
Техподдержка
Сообщения
1,175
Карма
1,124 57
#2
Все тесты в этом посте были выполнены для игровой версии 2.1.0 plaza (контрольная сумма 0c6d) со следующими DLC:
Anniversary Portraits
Arachnoid Portrait Pack
Creatures of the Void Portrait Pack
Horizon Signal
Paradox Account Sign-up Bonus
Symbols of Domination
Apocalypse
Utopia
Humanoids Species Pack
Plantoids Species Pack
Distant Stars Story Pack
Leviathans Story Pack
Synthetic Dawn Story Pack

Скорость игры установлена на 4 (максимальная).

Подход к тестированию
Запускаются несколько партий, причём игровые настройки от партии к партии меняются, чтобы оценить их влияние на производительность. Исследуются следующие опции:
  • Размер галактики;
  • Империи ИИ;
  • Пригодные для жизни планеты.
Автоматизация
Чтобы ускорить процесс сбора данных, этот набор партий запущен с консольными командами "human_ai" и "observe", а карта галактики максимально отдалена. Это также должно снизить влияние графического процессора на производительность, поэтому все последующие тесты мы обозначаем сокращением RGI (Reduced Graphics Impact).

Информация о партиях
Прежде всего, все игры проходят на картах трёх разных размеров.
14_observer_3000_years
Код:
Galaxy Size  Medium (600 Stars)
Galaxy Shape  Spiral (4 Arms)
AI Empires  9   Randomize OFF
Advanced AI Starts 2   Randomize OFF
Fallen Empires  2   Randomize OFF
Marauder Empires 2   Randomize OFF
Tech/Tradition Cost 1x
Habitable Worlds 1x
Primitive Civilizations 1x
Crisis Strength  1x
Mid-Game Start Year 2300
End-Game Start Year 2400
Difficulty  Commodore
Scaling Difficulty Off
AI Aggressiveness Normal
Empire Placement Clusters
Advanced Neighbors Off
Hyperlane Density 1x
Abandoned Gateways 1x
Wormhole Pairs  1x
Ironman Mode  Off
15_observer_huge_galaxy
Код:
Galaxy Size  Huge (1000 Stars)
Galaxy Shape  Spiral (4 Arms)
AI Empires  15   Randomize OFF
Advanced AI Starts 4   Randomize OFF
Fallen Empires  4   Randomize OFF
Marauder Empires 3   Randomize OFF
Tech/Tradition Cost 1x
Habitable Worlds 1x
Primitive Civilizations 1x
Crisis Strength  1x
Mid-Game Start Year 2300
End-Game Start Year 2400
Difficulty  Commodore
Scaling Difficulty Off
AI Aggressiveness Normal
Empire Placement Clusters
Advanced Neighbors Off
Hyperlane Density 1x
Abandoned Gateways 1x
Wormhole Pairs  1x
Ironman Mode  Off
16_observer_large_galaxy
Код:
Galaxy Size  Medium (600 Stars)
Galaxy Shape  Spiral (4 Arms)
AI Empires  9   Randomize OFF
Advanced AI Starts 2   Randomize OFF
Fallen Empires  2   Randomize OFF
Marauder Empires 2   Randomize OFF
Tech/Tradition Cost 1x
Habitable Worlds 1x
Primitive Civilizations 1x
Crisis Strength  1x
Mid-Game Start Year 2300
End-Game Start Year 2400
Difficulty  Commodore
Scaling Difficulty Off
AI Aggressiveness Normal
Empire Placement Clusters
Advanced Neighbors Off
Hyperlane Density 1x
Abandoned Gateways 1x
Wormhole Pairs  1x
Ironman Mode  Off

Эти настройки являются значениями по умолчанию для их соответствующих размеров карт, единственное дополнение - параметр «Сложность» был изменен на Commodore.

График:


Графики показывают более или менее одинаковое поведение - для каждого дня требуется все больше и больше времени, пока ситуация более или менее не стабилизируется, когда кризис начинает убивать всех налево и направо примерно в 24XX.

Прогресс кажется линейным, хотя он определенно менее заметен для карты среднего размера.

Исследование
В этом посте будет измерено влияние различных опций на RGI производительность. В качестве основных факторов мы ожидаем увидеть следующее:
  • Размер галактики - чем больше звёзд, тем больше времени требуется на исследования, планирование экспансии и т.д.;
  • Империи ИИ - чем их больше, тем больше дипломатии, планирования и т.д. требуется от ИИ;
  • Пригодные для жизни планеты - чем больше пригодных для жизни миров, тем больше планетарному времени потребуется времени, чтобы во всём разобраться.
Мы возьмём два контрольных примера - для средней и огромной (huge) карты. Измерения будут проводиться на средней карте с настройками, постепенно увеличивающимися до уровня огромной карты:
  • Стандартное количество пригодных для жизни миров, но количество империй как на огромной карте;
  • Количество пригодных для жизни миров как на огромной карте, но стандартное количество империй;
  • Количество пригодных для жизни миров и империй как на огромной карте.
Наконец, будет выполнено одно измерение на огромной карте с настройками, как на средней - для перекрёстной оценки.

Замечания по настройкам
Мы немного ошиблись с количеством империй для средних карт - установили 18, хотя их должно было быть 15. Результаты теста показали, что эта ошибка была не критичной.

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

Результаты исследования
Были записаны следующие игры:
18_observer_2x_empires
Код:
Galaxy Size  Medium (600 Stars)
Galaxy Shape  Spiral (4 Arms)
AI Empires  18   Randomize OFF
Advanced AI Starts 4   Randomize OFF
Fallen Empires  2   Randomize OFF
Marauder Empires 2   Randomize OFF
Tech/Tradition Cost 1x
Habitable Worlds 1x
Primitive Civilizations 1x
Crisis Strength  1x
Mid-Game Start Year 2300
End-Game Start Year 2400
Difficulty  Commodore
Scaling Difficulty Off
AI Aggressiveness Normal
Empire Placement Clusters
Advanced Neighbors Off
Hyperlane Density 1x
Abandoned Gateways 1x
Wormhole Pairs  1x
Ironman Mode  Off
19_observer_4_25x_planets
Код:
Galaxy Size  Medium (600 Stars)
Galaxy Shape  Spiral (4 Arms)
AI Empires  9   Randomize OFF
Advanced AI Starts 4   Randomize OFF
Fallen Empires  2   Randomize OFF
Marauder Empires 2   Randomize OFF
Tech/Tradition Cost 1x
Habitable Worlds 4.25x
Primitive Civilizations 1x
Crisis Strength  1x
Mid-Game Start Year 2300
End-Game Start Year 2400
Difficulty  Commodore
Scaling Difficulty Off
AI Aggressiveness Normal
Empire Placement Clusters
Advanced Neighbors Off
Hyperlane Density 1x
Abandoned Gateways 1x
Wormhole Pairs  1x
Ironman Mode  Off
20_observer_2x_empires_3_25x_planets
Код:
Galaxy Size  Medium (600 Stars)
Galaxy Shape  Spiral (4 Arms)
AI Empires  18   Randomize OFF
Advanced AI Starts 4   Randomize OFF
Fallen Empires  2   Randomize OFF
Marauder Empires 2   Randomize OFF
Tech/Tradition Cost 1x
Habitable Worlds 3.25x
Primitive Civilizations 1x
Crisis Strength  1x
Mid-Game Start Year 2300
End-Game Start Year 2400
Difficulty  Commodore
Scaling Difficulty Off
AI Aggressiveness Normal
Empire Placement Clusters
Advanced Neighbors Off
Hyperlane Density 1x
Abandoned Gateways 1x
Wormhole Pairs  1x
Ironman Mode  Off
22_huge_dumbed_down
Код:
Galaxy Size  Huge (1000 Stars)
Galaxy Shape  Spiral (4 Arms)
AI Empires  9   Randomize OFF
Advanced AI Starts 2   Randomize OFF
Fallen Empires  2   Randomize OFF
Marauder Empires 2   Randomize OFF
Tech/Tradition Cost 1x
Habitable Worlds 0.25x
Primitive Civilizations 1x
Crisis Strength  1.5x
Mid-Game Start Year 2300
End-Game Start Year 2400
Difficulty  Commodore
Scaling Difficulty Off
AI Aggressiveness Normal
Empire Placement Clusters
Advanced Neighbors Off
Hyperlane Density 1x
Abandoned Gateways 1x
Wormhole Pairs  1x
Ironman Mode  Off

График за 400 лет:


График за 200 лет:


Наблюдения
Количество империй ИИ против количества пригодных миров
Количество империй сильнее влияет на производительность в начале игры (обратите внимание на синий и голубой графики). Влияние количества пригодных миров догоняет и обгоняет первый фактор только после 150-170 лет игры (заметно на белом и синем графике).

Размер галактики
Размер галактики создаёт около 10% разницы в RGI производительности между средней и огромной картой (красный и пурпурный; голубой и зелёный графики). Ситуация, как правило, выходит из-под контроля в 2450, вероятно, из-за избыточных расчётов пути, вызванных началом кризиса и/или ненужным обновлением границ в 2.10.

Примечательный феномен
Все графики, кроме пурпурного, демонстрируют резкий скачок в 2205-2220:


Это коррелирует с фазой ранней экспансии и может быть или не быть вызвано созданием первого сектора.

Сравнение с игрой в обычном (не observer) режиме
Следующий график позволяет оценить разницу между играми в обычном и observer режимах с идентичными настройками:


Хотя поведение графиков выглядит примерно одинаково, игра в обычном режиме демонстрирует довольно суровое падение производительности. Предполагаемые причины - некорректная обработка паузы логгером и влияние графики.

Выводы
В исследовании были приведены некоторые контрольные данные, которые можно использовать в будущем, и его результаты предполагают дальнейшие пути изучения, такие как:
  • аналогичные исследования в не-observer режиме;
  • поиск причин резкого скачка в начале игры;
  • отслеживание изменений производительности в разных версиях Stellaris.
Однако выполненное исследование предоставило только приблизительные данные о том, что и в какой мере влияет на производительность игры. Рекомендуется увеличить бюджет для проведения большего количества тестов в этой области.


Оригинал
 
Последнее редактирование:
Сверху