crypt of decay - Post a comment [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

а теперь диско... упрощаем Aug. 20th, 2018|07:57 am

ketmar
идея сделать в двигателе массив для «обычных» тайлов, динамический грид для движущихся и специальных, и ещё один динамический грид для других объектов — это была идиотская идея. оправдана только тем, что первый портированый код был генератором комнат, и на то время реализации динамического грида ещё нифига толком не было.

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

тащемта, сейчас игра выжирает примерно 15-18 процентов CPU на обычном уровне — это с учётом того, что она спамит кадрами в 60 FPS. и есть какой-никакой запас на оптимизацию: для объектов, которым надо думать на каждом кадре, можно завести отдельный списочек, а не перебирать всё, что в грид напихано. таким образом почти все тайлы обрабатываться не будут, потому что им думать не надо — а такие тайлы составляют как минимум половину, а то и две трети объектов в игре. особого смысла я в этом не вижу, потому что запаса CPU ещё дофига, но, может, сделаю просто ради интереса.

собственно, больше всего CPU выжирает рендер, потому что он создаёт и сортирует список всех видимых объектов для каждого построения кадра. и, кстати, зря, потому что игра рисует примерно 60 FPS, а логика работает на жестокой 30 FPS. то есть, список рендера можно не перестраивать, если камера не сдвинулась далеко, и не было тика. по идее, это должно скосить потребление ресурсов ещё на треть, а то и на половину (учитываем всякие накладные расходы). надо сделать, это проще, чем отдельный список для думалок, а эффект должен быть очень заметен.
Link Read Comments

Reply:
From:
(will be screened)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message: