Ошибки, оптимизация и 💩 в клиентах Lineage2

reanimatedmanx

BPD🖤OCD
Let's make it happen
Сообщения
73
Розыгрыши
0
Репутация
141
Реакции
96
Баллы
1 350
В общем о трэкинге проблем и возможных трюков оптимизации существующих клиентов игры а также не допускание этих же проблем в вариации клиентов на новых движках. Со временем буду тестировать импакт на перворманс при фиксе той или иной проблемы и добавлю сравнения, но пока только проблемы.

Если заметили или знаете что-то подобное добавьте в тему.

0 Gremlins

100 Gremlins

200 Gremlins
Когда речь о ММО и о сотнях или тысячи акторов на экране, каждая микроптимизация важна.

Цилиндр колизии НПС имеет 66 поверхности хотя могло быть 34 если не грань по середине.

Несколько токенов для поиска:
Код:
Not used
(not used)
Not in use

(Test)
Test -
Test-
Testing -
Testing
For testing





Растояние кости не соответствует визуалу mesh'a тем самым, влияет на симуляцию плаща.

При загрузке/выгрузке большого количество мелких ассетов круто загружает FPS.

(http://imgur.com/a%2FUGu6ZM9)
- Слишком большое использование альфа текстур
- Слишком много слотов для материалов
- Не используется mesh instancing
- Слишком много полигонов на ассетах которые не играют роли
- Старый движок (






Закреплено, from community :
---
By Charmant in this post

`TO BE CONTINUED...INDEFINETELY...`
 
Последнее редактирование:

При включении этой галочки фпс падает чуть ли не в 2 раза.
А, и еще из-за нее криво рисуются прозрачные монстры:
 
На старых клиентах, начиная с ц5 и до хф (возможно и ранние апдейты год хроник) есть один жуткий баг, связанный с маг скиллами.
~2 года назад на форуме эльморлаба я объяснял и показывал:

Возникал этот баг практически из-за всех старых скиллов, у которых есть анимация под чаром. В итоге в масс пвп через пару минут фпс улетал в нулину. Лечилось релогом. Все думали что это кеш забивается, а дело было в том что часть анимаций продолжала бесконечно крутиться в Tick функции.
Я две недели ковырял энжину, в итоге придумал фикс:

В функции USkillVisualEffect::TriggerCasting перед вызовом AEmitter::AdjustparticleLife проверить аргумент-float. Если значение меньше 1.1f - заменить на 1.1f. Еще можно вместо прибавки +0.2f сделать +0.8f, но лично мне такой вариант не особо нравится, т.к. почти у всех скиллов анимация будет чуть дольше, что на мой взгляд избыточно. Кстати, в новых клиентах примерно так и сделали. Там анимации крутятся дольше.
Это наверное самый мощный фикс, который я делал для эльморлаба. После него масс пвп стали намного комфортнее, не нужно было делать релог после каждого файта
 
Rolo на эту тему извращался с батл хиллом
 
Тестил, при 0.8f иногда проскакивают сверхбыстрые касты, минималку надо 1.0f прибавлять, при этом значении проблем нету. А если девелопер сервера - то лучше всего наверн на нем min(animTime, 1.1f) делать при высылании пакета клиенту
 
на нем min(animTime, 1.1f) делать при высылании пакета клиенту
Не, это не вариант. С Томой уже обсуждали. Касты будут очень долгими. Вспомни когда сделали минималку 0.5-0.6 для суриков и глума, насколько это не понравилось игрокам. А если будет аж 1.1?
 
А, хм, если там идет это совестно (время анимации = время каста для клиента), тогда да, не вариант
 
reanimatedmanx начни с основы, что самое важное. Это поиск адекватной оптимизации анимаций персонажей (не эффектов), так как скорей всего именно они потребляют наибольшее количество FPS больше чем раньше. Попытаться улучшить фпс при 300+ игроках в одном месте на новых клиентах. Старые клиенты в разы лучше справлялись с нагрузкой и поддерживали стабильный FPS (с учетом исправления ошибки с эффектами в скриптах, или как пробовали выше в движке), но у них была проблема с очисткой кэша.

В результате исправления ошибок с эффектами в скриптах, на старом "канкуляторе" можно было играть с более-менее нормальным FPS при замесах и в 600 игроков в одной локации. То есть сам клиент справлялся хорошо. Бывали моменты с критами, но от 166p~ они исчезли. Но у старых клиентов была проблема с очисткой кэша - с работой garbage collector при большом объеме накопившегося мусора. В этом случае клиент либо очень долго находится в статусе "не отвечает", либо в конце происходил крит.

На новых клиентах что-то изменили, и теперь уже давно заполнение кэша не продолжает расти при повторном вызове, например скилла. Откладываются только данные о первом вызове уникальных компонентов. Также изменили логику работы сборщика мусора: если раньше он вызывался, когда персонаж находился больше чем в N дистанции от ранее загруженного сектора, и выгружал его (или несколько секторов), то теперь он работает по другой логике. Чаще всего сборщик мусора активировался при телепорте, когда новая точка персонажа находилась далеко от прогруженных секторов. Что сейчас его вызывает не ясно, не смотрел особо но не так как ранее.
 
Это похоже на necroфилию когда пытаются оживить труп старого клиента. В клиентах классик и выше по дефолту таких проблем нету, неужели в 2025 имея сурсы и инфу нельзя прикрутить новый клиент (как минимум 166p) к старым хроникам «c1-hf”.
 
Знакомая ситуация на эпилог клиенте. Правда там нет критов даже при долгой очистке. Выяснил что это опять же из-за анимации скиллов. Например после парочки масс пвп объем памяти может вырасти аж на 500 мб, после чего при очистке игра зависнет на 10-15 секунд, иногда дольше. Если отключить обработку magicSkillUse, то такой проблемы нет. Можно хоть сколько пвпшиться и бить мобов, такой долгой очистки уже не будет. Проблема где-то в UL2EffectEmitter::Notify и APawn:laySkillSound, как будто для каких-то скиллов при их повторной анимации игра продолжает жрать память. Но дальше я не углублялся.
Ага. И как же это раздражает когда забит кеш. Пересекаешь определенную точку на карте и игра зависает на пару секунд. Кстати на новых клиентах выгрузка уровня по дистанции все еще есть, просто она незаметна. И также было бы на старых клиентах, если бы не проблема с памятью.

А там другие проблемы. Если что скрины в первом посте из новых клиентов И если уж брать классик, то явно не 166-196. Минимум 286p, в идеале 388
 
Там жесткая просадка идет от интерфейса. нажимаем alt + h и с 358 улетает на ~40% до 503
может есть варик тут че нить похимичить

 
Вопрос по хилу, можно ли прикрутить проверку в серваке на прошлые его наложения, и если идет спам, то не посылать клиенту новые команды на отрисовку всех, а просто отправлять пакет что скил прошел и хп добавились без анимации? Всеравно еще эпилепсия от прошлых висит
Ну и я бы вообще поменял на другую анимацию, более логичную к хилу... Чтобы было видно как передается жизнь от хилера к излечиваемому
 
Оно и немудрено. Когда я пытался визуализировать интерфейс внешними средствами получалось так, что некоторые окна могли иметь с 10+ Canvas'ов. Это не исправить никак, так построен интерфейс под капотом.
 

А как его можно упростить и облегчить? Если рассматривать два варианта, родной уе старый, и уе4?
 
1. Как минимум в Артее дико просаживался чуть ли не до нуля фпс, если зажать F1-F12 для вызова каста скиллов на соответствующих шорткатах. Позже ситуация чуток улучшилась, но все равно небольшая просадка при этом есть. Чего там так намудрили корейцы - фиг знает.
2. В крусейде поломали чуток каст ground-скиллов. Когда на бегу жмешь на скилл чтобы выбрать точку каста, то перс при этом останавливается чисто визуально в самом клиенте, но при этом серверу ничего не шлется, так что на сервере перс продолжает бежать дальше, что в итоге вызывает рассинхрон координат и отбрасывание назад при очередном валидейте.
 
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…