Показать сообщение отдельно
Непрочитано 13.02.2017, 18:15   #6
Пользователь

Автор темы (Топик Стартер) Re: Реализация KnownList

Цитата:
Сообщение от n3k0nation Посмотреть сообщение
А нафига Вам реализация кноулистов? Они не требуются в lineage2 и их нет в ретейле, плюс лишняя нагрузка на проц и память. Если нужно, то могу потом объяснить чем черевато использование кноулистов.

:
Свернуть ↑Развернуть ↓
на счет того были они в ретейле я не знал. Дело в том что хотел упростить боардкаст и прочие вытикающие. И чтобы аи мобов работали только из кноун листов. Тобишь чтобы просто так не гонять тики если рядом нет ни единого персонажа. На мой взгляд очень удобная штука при разработке. Дабы не разбегались глаза где че фиксить, а все было так сказать в одном месте.... Не знаю понятно ли я выразился.
Кноунлист - четкое представление того что видит клиент.
Допусим послал клиент Action c objectId - и дабы быстро понять что хотел клиент можно было пробежаться по его кноунлисту. И если в его кноун листе такого нет - значит наш игрок балуется с пакетами. и все в таком духе.
А по поводу нагрузки... при тесте из 1000 мобов в локации и 20 персонажей. (мобы добавляются в другй кноун лист) при пересчете кноун листа и отсылке изменений всем этим 20ти окнам серверу нужно в среднем 294622 наносекунд. Примерно 0,00029 сек. чтобы просчитать все ближайшие регеоны, подготовить, зашифровать и отправить все эти 20 пакетов. (при Release сборке с оптимизацией). Честно говоря я вообще не ожидал что скорость будет настолько высокая.
А пересчет для кноунлиста с 1000 мобами вообще занимает 0,000138 секунд.... Лирическое отступление - похоже я близок к тому чтобы убрать фризы при осадах (нет)
А если выпилить из клиента стандартную шифрацию\дешифрацию то эти дела будут работать еще быстрее чуть ли не в разы, ибо процесс дешифрации пакетов на сервере занимает чуть ли не половину всего времени жизни потока пришедшего пакета.

Пока реализовывал WorldRegion назрел следующий вопрос про боардкасты.
Дело в том, что я использую асинхронный сервер, и возможна следующая ситуация- при обновлении knownList допустим при телепортации в другую локацию где много объектов, сервер может просто зафлудить нахрен клиент. В java пакеты идут с минимально возможной задержкой (10мс - слип селектора очереди отправления пакетов(если они не "склеены" в одну посылку)) А при асинхроннике за эти 10 мс клиенту может придти огромное число пакетов, так не сойдет ли он с ума? я просто не знаю как в клиенте устроен процесс чтения пакетов. или же лучше исскуственно делать задержку на отправку.

Добавлено через 2 минуты
Цитата:
Сообщение от pchayka Посмотреть сообщение
Давно уже никто их не использует - пережитки быдлокодинга
Честно говоря даже не знаю, возможно вы и правы

Добавлено через 3 минуты
Цитата:
Сообщение от n3k0nation Посмотреть сообщение
Если нужно, то могу потом объяснить чем черевато использование кноулистов.
Хотелось бы почитать

Добавлено через 12 минут
Хотя я возможно и сам понимаю чем это черевато. - Блокировки. При большом кол-ве уникальных кноунлистов получается лишний расход цп на их обсчет и получение и ожидания блокировок. Но с другой стороны это дает серверу четкое понимание о "картине" клиента и упрощает разработку. Но на сколько я понял вы имеете ввиду, сейчас все java кодеры отказались от кноунлистов и шлют боардкасты из WorldRegion с учетом координат обьектов?

Последний раз редактировалось Alay; 13.02.2017 в 18:37. Причина: Добавлено сообщение
Alay вне форума Ответить с цитированием