Сообщений: 141
Тем: 9
Зарегистрирован: Sep 2016
Репутация:
175
Вспомнил почему я делал KnownList.
Как сервер будет понимать кому отправлять пакет ObjectDelete при выходе из радиуса условной "видимости".
Допустим в кноун листе было так, если во время движения вы отходим от персонажа на некоторое условное расстояние то шлем пакет ObjectDelete обоим клиентам. Ведь если объект есть в кноунлисте => значит сервер отправлял ему пакет PlayerInfo или NpcInfo или DropItem. А если все будет работать через WorldRegion то как понять был ли отправлен пакет на отображение объекта и нужно ли его удалять (ObjectDelete) или же данным пакетом можно принебреч и клиент сам поймет что ему нужно удалить объект при достаточном удалении от него?? И если допустим следующая ситуация представим что радиус боракаста у нас 4000 точек. Вот мы зашли в гиран - прогрузили всех игроков, потом убежали из гирана допустим на 5000 точек. А человек в центре гирана решил выйти из игры. но так как радиус боардкаста допустим 4000 точек то клиент убежавшего из гирана об этом не узнает, и прибежит обратно и увидет этого игрока - который уже вышел. Ну и все в таком духе. Или же при удалении из мира боардкастить objectDelete на весь регион? но тогда некторым клиентам придет удаление обьекта с objectId о котором они даже и не знали. Ведь если клиент сам не котролирует удаление "далеких" объектов тогда без кновн листа не обойтись получается. Значит могу сделать вывод что клиент сам эти объекты удаляет. Или же я ошибаюсь? Вообщем я в ступоре покачто. Займусь другими вещами пока не получу ответ
Сообщений: 141
Тем: 9
Зарегистрирован: Sep 2016
Репутация:
175
Нефига он не удаляет. Очистка идет только при телепорте и рестарте соответственно. Получается что боардкаст нужно делать на весь регион. А в этом ничего хорошего нет. Нет серьезно либо я чего то упускаю либо тут идет обмен шила на мыло. Регион то сам по себе не маленький
Сообщений: 1,660
Тем: 9
Зарегистрирован: Feb 2009
Репутация:
10,142
Alay Написал:Вспомнил почему я делал KnownList.
Как сервер будет понимать кому отправлять пакет ObjectDelete при выходе из радиуса условной "видимости".
Допустим в кноун листе было так, если во время движения вы отходим от персонажа на некоторое условное расстояние то шлем пакет ObjectDelete обоим клиентам. Ведь если объект есть в кноунлисте => значит сервер отправлял ему пакет PlayerInfo или NpcInfo или DropItem. А если все будет работать через WorldRegion то как понять был ли отправлен пакет на отображение объекта и нужно ли его удалять (ObjectDelete) или же данным пакетом можно принебреч и клиент сам поймет что ему нужно удалить объект при достаточном удалении от него?? И если допустим следующая ситуация представим что радиус боракаста у нас 4000 точек. Вот мы зашли в гиран - прогрузили всех игроков, потом убежали из гирана допустим на 5000 точек. А человек в центре гирана решил выйти из игры. но так как радиус боардкаста допустим 4000 точек то клиент убежавшего из гирана об этом не узнает, и прибежит обратно и увидет этого игрока - который уже вышел. Ну и все в таком духе. Или же при удалении из мира боардкастить objectDelete на весь регион? но тогда некторым клиентам придет удаление обьекта с objectId о котором они даже и не знали. Ведь если клиент сам не котролирует удаление "далеких" объектов тогда без кновн листа не обойтись получается. Значит могу сделать вывод что клиент сам эти объекты удаляет. Или же я ошибаюсь? Вообщем я в ступоре покачто. Займусь другими вещами пока не получу ответ Вы пытаетесь к трехколесному велосипеду, вместо седла и педалей, приделать еще по несколько колес.
Функции вашего кноулиста, выполняет регион. При входе в него, вы получаете информацию по объектам внутри вашего региона, а так же по соседним, когда кто-то попадает в соседний или ваш регион, вы получаете о нем информацию, когда вы перемещаетесь и выходите из какого-то региона, то удаляетесь с него и его соседей, ну и собственно добавляетесь в новый с его соседями.
Клиенту не придет фантомный ID ибо если он есть на удаление, значит перед этим он попал вам на отображение.
open-team.ru - Freya, HighFive...
Сообщений: 141
Тем: 9
Зарегистрирован: Sep 2016
Репутация:
175
02-14-2017, 12:34 PM
(Сообщение последний раз редактировалось: 02-14-2017, 01:19 PM Alay.)
Меня одного коробит 1 вещь.
размер ребра региона 32к+ точек. Зачем слать инфу об игроках которых клиент никогда не увидит. Мне с трудом верится что пока я нахожусь в Орене на оффе мне прихотят пакеты аницации мобов из полномочий(расстояние от орена до них примерно 20к точек, но они в одном регионе.)
Или же на оффе регионы дробятся на еще более мелкую сетку?
Добавлено через 23 минуты
DiagoD Написал:Вы пытаетесь к трехколесному велосипеду, вместо седла и педалей, приделать еще по несколько колес.
Функции вашего кноулиста, выполняет регион. При входе в него, вы получаете информацию по объектам внутри вашего региона, а так же по соседним, когда кто-то попадает в соседний или ваш регион, вы получаете о нем информацию, когда вы перемещаетесь и выходите из какого-то региона, то удаляетесь с него и его соседей, ну и собственно добавляетесь в новый с его соседями.
Клиенту не придет фантомный ID ибо если он есть на удаление, значит перед этим он попал вам на отображение. А ваша реализация боардкаста по регионам 32+к точек и еще 8ми смежным. Получается борадкаст идет на 9ккк точек квадратных.
и примерно 90% из этих пакетов не принисут ни какой пользы.
И можно получить ссылку хотя бы на 1 исходники где нет knownlist'а, уже 3е сурсы скачиваю и везде вижу PcKnownlist.java
Сообщений: 666
Тем: 15
Зарегистрирован: Aug 2014
Репутация:
1,790
Сообщений: 141
Тем: 9
Зарегистрирован: Sep 2016
Репутация:
175
забираю свои слова назад, уже нашел что REGION_SIZE = 4096; Выходит что мапа из 32к точек дробится на 64 мальеньких региончиков. это уже вполне правдоподобно. Я то думал что регион и мапа - одно и тоже
Сообщений: 555
Тем: 2
Зарегистрирован: Feb 2011
Репутация:
1,507
полный бордель.
регионы были сделаны очень давно, во время запуска серверов на селеронах. нынешнее железо позволяет итерировать эти списки практически моментально. пытаться вылизать фичу до идеала на стадии ее разработки невозможно. сделайте как есть, а потом, когда уже будут сопутствующие части кода, концепт может изменится.
отсутствие knownList - плохой путь, имхо. получение игроком CI/NI на расстоянии до 8к стремно.
лучше научить эти листы взаимодействию только с определенными объектами, в основном это с игроками.
Сообщений: 1,660
Тем: 9
Зарегистрирован: Feb 2009
Репутация:
10,142
KID Написал:полный бордель.
регионы были сделаны очень давно, во время запуска серверов на селеронах. нынешнее железо позволяет итерировать эти списки практически моментально. пытаться вылизать фичу до идеала на стадии ее разработки невозможно. сделайте как есть, а потом, когда уже будут сопутствующие части кода, концепт может изменится.
отсутствие knownList - плохой путь, имхо. получение игроком CI/NI на расстоянии до 8к стремно.
лучше научить эти листы взаимодействию только с определенными объектами, в основном это с игроками. не до 8к, а ровно 6к, это более чем приемлемо ибо радиус видимости клиента около 3к, точно уже не помню. А вот с каждым шагом перса отправлять добавление/удаление объекта, это действительно очень плохо, особенно в густонаселенных местах.
open-team.ru - Freya, HighFive...
Сообщений: 141
Тем: 9
Зарегистрирован: Sep 2016
Репутация:
175
02-15-2017, 03:30 PM
(Сообщение последний раз редактировалось: 02-15-2017, 03:36 PM Alay.)
DiagoD Написал:не до 8к, а ровно 6к, это более чем приемлемо ибо радиус видимости клиента около 3к, точно уже не помню. А вот с каждым шагом перса отправлять добавление/удаление объекта, это действительно очень плохо, особенно в густонаселенных местах. Да здрасте, приехали.
Расстояние может доходить до 11,5к точек.
Добавлено через 5 минут
Оба варианта по сути не идеальны. но размер региона ни кто не мешает уменьшить. Делается это изменением 1 переменной. И даже переписывать ничего не придется.
Все равно уже переписал все под регионы, пока пускай так будет.
Сообщений: 1,660
Тем: 9
Зарегистрирован: Feb 2009
Репутация:
10,142
Alay Написал:Да здрасте, приехали.
Расстояние может доходить до 11,5к точек.
Добавлено через 5 минут
Оба варианта по сути не идеальны. но размер региона ни кто не мешает уменьшить. Делается это изменением 1 переменной. И даже переписывать ничего не придется.
Все равно уже переписал все под регионы, пока пускай так будет.
У меня он просто 2к, я по нему и считал, не обратив внимание что 4к указано
open-team.ru - Freya, HighFive...
|