Дневник разработчиков Stellaris №170 — Производительность и технические вопросы / Stellaris Dev Diary :: Stellaris :: Игры

Stellaris Игры Stellaris Dev Diary 

Дневник разработчиков Stellaris №170 — Производительность и технические вопросы

Источник


"Привет, друзья мои! С вами Moah, техлид Stellaris. Наконец-то я могу ответить на самый важный вопрос. Сколько новых утконосов будет в Federations? Спустя столько недель...


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


Хрупкий баланс


Stellaris, как и любые базы кода приличных размеров, напоминает сложную игру, вроде Микадо или Дженга: каждая часть каким-то образом соединена со всеми другими. Добавляя особенности, вы добавляете больше связей. Если вы осторожны, то добавите лишь несколько, но поспешите — и их станет слишком много. Обычно это ведёт к появлению «незапланированных особенностей» (также известных как баги). Кроме этого, посмотрев на их работу непосредственно в игре, мы зачастую расширяем особенности новыми неожиданными способами, что создаёт ещё больше «незапланированных особенностей(tm)».


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


Итак, вы избавились от незапланированных особенностей, но игра стала, эм... слишком осторожной. Можно даже сказать, медленной.

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


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


И вот на этом небольшом расхождении в результатах пышным цветом цветут рассинхроны! У клиента и сервера стоимость отличается на 0,0001, со временем это расхождение накапливается, и вот уже корвет куплен на сервере, но не у клиента.


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

Очистить и повторить.


Но хватит о моей утренней рутине! Давайте обсудим…


Производительность


Фанаты Stellaris — как программисты на C++, всё время думают о производительности. Если честно, в последнее время мы тоже часто о ней думаем. Мы знаем, что она далеко не идеальна, особенно в поздней игре и на больших галактиках. С этой мыслью мы потратили время, углубившись в работу над производительностью чуть сильнее обычного. Мы посмотрели, на обработку чего уходит больше всего времени, и как всем и так известно, это…


Total avg Pop count per year measured in Sapient 53
Max Value : 322 Sapient 55 tor 2376 Mm Value : 37 Sapient 53 for 2201 Avg Value : 184 Sapient 53
Tatöl övg Pop count (Sjpicnt pops) per year,Stellaris,Игры,Stellaris Dev Diary


Поселения


Есть уйма причин, почему поселения в Stellaris требуют много времени, но главная — к концу игры их становится ОЧЕНЬ МНОГО. ОЧЕНЬ Очень очень очень много. И они много чем занимаются! Каждое поселение должно рассчитывать, насколько оно хорошо на каждой из должностей (этим они занимаются каждые 7 дней). Затем они должны сразиться со всеми остальными поселениями на планете, чтобы получить работу, которая им больше всего подходит. Также им нужно проверить наличие у себя определённых принципов. Смогут ли они присоединиться к определённой фракции. Насколько они счастливы. Насколько они могут быть счастливыми. Насколько они будут счастливы вон на той планете.


Всё это запускает вычисление модификаторов. Если вы помните мой последний дневник, вы должны знать, что в Stellaris только модификаторы превосходят числом поселения. И все они зависят друг от друга. Их расчёт — будто бы потянуть за нитку и получить целый свитер.


Допустим, так что же мы всё-таки с этим сделали?


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


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


Во-вторых, мы переработали подход к определению того, может ли население изменить принципы (и заставили это вновь работать) или присоединяться к фракциям.


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

Но хватит разговоров! Каков же результат? Что ж, если бы одна картинка стоила тысячи слов, то вот вам ответ со скоростью 30000 слов в секунду:




На этом видео вы можете видеть сравнение производительности в версиях 2.5.1 «Шелли» и 2.6 «Верн» на сохранённой игре от сообщества (которую вы сможете найти здесь), содержащей более 20000 поселений. Оно было записано на моём рабочем компьютере (Intel Core7-7900X @ 3.30ГГц, 10 ядер и 20 потоков, и AMD R9 Fury). Конечно, вы не обязательно получите такой же результат: изменение производительности будет зависеть от вашего компьютера и ситуации в игре. В среднем мы зарегистрировали прирост на 15-30% в поздней игре.


Это сохранение просто идеально подходит для демонстрации улучшения поселений.


Performance Plot
■	WARS
■	ALLIANCES
■	UPDATE FLAGS
■	STARBASEUPDATE
■	BYPASSTHREADED
■	COUNTRY_THREADED
■	COUNTRY_SERIAL
■	PLANETTHREADED
■	PLANET SERIAL
■	SYSTEMS_SERIAL
■	TRADESERIAL
■	POPSTHREADED Cl POPS_SERIAL
■	SHIPS_THREADED
.	■ SHIPS_SERIAL
■	FLEETTHREADED
■	FLEET SERIAL
■


А почему это средний показатель? Откуда вы знаете?


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


4.0 MB
3.0 Мб,Stellaris,Игры,Stellaris Dev Diary


В заключение


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


Следующий дневник будет посвящён ещё одной вещи, которой вы все ждали... БОЛЬШЕ УТКОНОСОВ!


PS: Сохранение, которое мы использовали, предоставлено нам сообществом, в одной из тем, посвящённых производительности. Однако мы не уверены, откуда оно изначально там взялось. Поэтому если вы узнаете его, или это ваше, пожалуйста, сообщите нам, чтобы мы могли указать вас должным образом."



Подробнее
Stellaris: Federations - 2.6.0 Update Performance Improvements,Gaming,,Don't forget to tune in to our livestream today 3 PM UTC (4 PM CET/10 AM ET) twitch.tv/paradoxinteractive/ for more info, or check out the new dev diary at: https://forum.paradoxplaza.com/forum/index.php?threads/stellaris-dev-diary-170-performance-and-other-technical-issues.1335134/ Capture computer specs: Intel Core7-7900X @ 3.30Ghz, 10 cores and 20 threads, and AMD R9 Fury Paradox on YouTube: --------------------------------- ParadoxInteractive - http://youtube.com/ParadoxInteractive Trailers, Feature Breakdowns, Dev Diaries, and more. ParadoxExtra - http://youtube.com/ParadoxExtra Gameplay of our video games, convention coverage, and other fun things from Paradox! Paradox Grand Strategy - http://youtube.com/ParadoxGrandStrategy Gameplay of our Grand Strategy Games. CK2, EU4, HOI4, Stellaris, and Imperator.
Total avg Pop count per year measured in Sapient 53 Max Value : 322 Sapient 55 tor 2376 Mm Value : 37 Sapient 53 for 2201 Avg Value : 184 Sapient 53 Tatöl övg Pop count (Sjpicnt pops) per year
Performance Plot ■ WARS ■ ALLIANCES ■ UPDATE FLAGS ■ STARBASEUPDATE ■ BYPASSTHREADED ■ COUNTRY_THREADED ■ COUNTRY_SERIAL ■ PLANETTHREADED ■ PLANET SERIAL ■ SYSTEMS_SERIAL ■ TRADESERIAL ■ POPSTHREADED Cl POPS_SERIAL ■ SHIPS_THREADED . ■ SHIPS_SERIAL ■ FLEETTHREADED ■ FLEET SERIAL ■ ARMIESSERIAL ■ FACTIONSTHREADED ■ FACTIONSSERIAL ■ CALC_BORDERS ■ MARKET ■ SECTORS ■ ARCHEOLOGICAL SITES ■ AIACT1VATE ■ AIPARALLEL ■ AI_COMMANDS ■ AIRESETPATHCACHE ■ CONSTRUCTION I MICRO_FLEET_PARALLEL ■ MICRO_FLEET_COMBAT_SERIAL MICRO_FLEET MODIFIERS MICRO FLEET SERIAL L MICRO_FLEET POST I MICROSHIPS -mttTTi mim?i ifl i ATTUmPi^m i i i i i i i i i i i i i
4.0 MB 3.0 Мб
Stellaris,Игры,Stellaris Dev Diary
Еще на тему
Развернуть
выглядит неплохо, проблемы с оптимизацией к лейт игре - давняя проблема
а когда уже федерации выйдут не написали
prazza prazza 20.02.202016:51 ответить ссылка 1.1
Примерно март-май.
Ну хоть лаги пофиксить пытаются, и то хорошо.
DMAS DMAS 20.02.202016:52 ответить ссылка -0.4
Они каждый раз пытаются и каждый раз делают новые
С графиками это выглядит как будто статья о какой-нибудь cassandra или scylladb.
minmatar minmatar 20.02.202019:39 ответить ссылка 0.8
Дополнение: результаты тестирования изменения проихводительности:
improvement [%
2200	2250	2300	2350
years
2400
2450
2500
2550
Culexus Culexus 21.02.202011:07 ответить ссылка 0.2
Ну хочется надеяться, что допилят до играбельного состояния. В последней кампании у меня просто перестали открываться планеты из-за тормозов к концу игры.
clif08 clif08 22.02.202013:27 ответить ссылка 0.3
Уже февраль кончается. Где, блять, Федерации?
Мне кажется, им не хватает формализации в коде.

А ещё эти злодеи просрали самую прикольную фичу Age of Wonders в своем Planetfall. И не добавили крутую фичу поздних стелларисов.

Соло-мод. В AoW можно было после победы играть в свое удовольствие, засирая миллиардами городов всю карту. В AOW:PF нельзя.
В Стелларисе можно стартануть уже немало версий как соло-игру без ачивок, чисто все исследовать и разбить лица Преторианцам. Тут же нельзя. Страдайте.
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
Stellaris: Aquatics Species Pack | Announcement Trailer | Wishlist Now,Gaming,,Embrace the life of a seafaring civilization as you sail the open expanses of the galaxy with Stellaris' most immersive pack yet: the Aquatics Species Pack! Wishlist Now

Paradox on YouTube:
подробнее»

Stellaris Dev Diary Stellaris Игры

Stellaris: Aquatics Species Pack | Announcement Trailer | Wishlist Now,Gaming,,Embrace the life of a seafaring civilization as you sail the open expanses of the galaxy with Stellaris' most immersive pack yet: the Aquatics Species Pack! Wishlist Now Paradox on YouTube:
Ix'Athrak
Features
Empire Capital
Arctic World
Decisions
Terraform
Jobs
Demographics
ô 5 ^ Complex Drones
« : *1
<*> »
q 29 & Menial Drones
S 9 Agri-Drones
2 8 Maintenance Drones
2 6 Mining Drones
		
	PI	m
		
* 34	eg -	© -
tf» 5	Y& -	X 5
	)	
Planet Summary
Population
Armies
подробнее»

Stellaris Игры длиннопост дневник разработчиков Stellaris Dev Diary

Ix'Athrak Features Empire Capital Arctic World Decisions Terraform Jobs Demographics ô 5 ^ Complex Drones « : *1 <*> » q 29 & Menial Drones S 9 Agri-Drones 2 8 Maintenance Drones 2 6 Mining Drones PI m * 34 eg - © - tf» 5 Y& - X 5 ) Planet Summary Population Armies
X
Market Fee: 30%
Last Trade:
Automatic Trades
Add new monthly trade Buy «>5	Max: <£ 15
V
A
Ä
Monthly Trade
Trade	Buy		Sell	
Resource				
	<r>	4	&	b
		K		J
			<f	
Amount	—	5	+	
Max Buy Price		15	+	
(optional)				
Cancel/Remove		Add/Edit
подробнее»

Stellaris Игры Stellaris Dev Diary

X Market Fee: 30% Last Trade: Automatic Trades Add new monthly trade Buy «>5 Max: <£ 15 V A Ä Monthly Trade Trade Buy Sell Resource <r> 4 & b K J <f Amount — 5 + Max Buy Price 15 + (optional) Cancel/Remove Add/Edit
Keepers dF Rve'bren
Theocratic Monarchy
A
Imperial
©
Philosopher King Environmentalist
(Q) Pacifist
Fanatic Spiritualist
Khennet
lithoid
ft u.h°ld
Communal Industrious Sedentary
Ave'bonn
Khennefan scripture traces these lithoids' origin to the prophet Brehkk, and the lambent crystals o
подробнее»

Stellaris Dev Diary Stellaris Игры

Keepers dF Rve'bren Theocratic Monarchy A Imperial © Philosopher King Environmentalist (Q) Pacifist Fanatic Spiritualist Khennet lithoid ft u.h°ld Communal Industrious Sedentary Ave'bonn Khennefan scripture traces these lithoids' origin to the prophet Brehkk, and the lambent crystals o
Stellaris: Synthetic Dawn Story Pack - Announcement Trailer,Gaming,Stellaris,Paradox Interactive,Space,Trailer,grand strategy,Paradox Development Studio,4x,grande strategy in space,colonizing space,integration,ai,robots,space ships,pre-order,pre order,nebulas,Make space great again,blorg,the
подробнее»

Stellaris Игры Stellaris Dev Diary

Stellaris: Synthetic Dawn Story Pack - Announcement Trailer,Gaming,Stellaris,Paradox Interactive,Space,Trailer,grand strategy,Paradox Development Studio,4x,grande strategy in space,colonizing space,integration,ai,robots,space ships,pre-order,pre order,nebulas,Make space great again,blorg,the