Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Реализация KnownList
#11
Вспомнил почему я делал KnownList.
Как сервер будет понимать кому отправлять пакет ObjectDelete при выходе из радиуса условной "видимости".
Допустим в кноун листе было так, если во время движения вы отходим от персонажа на некоторое условное расстояние то шлем пакет ObjectDelete обоим клиентам. Ведь если объект есть в кноунлисте => значит сервер отправлял ему пакет PlayerInfo или NpcInfo или DropItem. А если все будет работать через WorldRegion то как понять был ли отправлен пакет на отображение объекта и нужно ли его удалять (ObjectDelete) или же данным пакетом можно принебреч и клиент сам поймет что ему нужно удалить объект при достаточном удалении от него?? И если допустим следующая ситуация представим что радиус боракаста у нас 4000 точек. Вот мы зашли в гиран - прогрузили всех игроков, потом убежали из гирана допустим на 5000 точек. А человек в центре гирана решил выйти из игры. но так как радиус боардкаста допустим 4000 точек то клиент убежавшего из гирана об этом не узнает, и прибежит обратно и увидет этого игрока - который уже вышел. Ну и все в таком духе. Или же при удалении из мира боардкастить objectDelete на весь регион? но тогда некторым клиентам придет удаление обьекта с objectId о котором они даже и не знали. Ведь если клиент сам не котролирует удаление "далеких" объектов тогда без кновн листа не обойтись получается. Значит могу сделать вывод что клиент сам эти объекты удаляет. Или же я ошибаюсь? Вообщем я в ступоре покачто. Займусь другими вещами пока не получу ответ
Ответ
#12
Нефига он не удаляет. Очистка идет только при телепорте и рестарте соответственно. Получается что боардкаст нужно делать на весь регион. А в этом ничего хорошего нет. Нет серьезно либо я чего то упускаю либо тут идет обмен шила на мыло. Регион то сам по себе не маленький
Ответ
#13
Alay Написал:Вспомнил почему я делал KnownList.
Как сервер будет понимать кому отправлять пакет ObjectDelete при выходе из радиуса условной "видимости".
Допустим в кноун листе было так, если во время движения вы отходим от персонажа на некоторое условное расстояние то шлем пакет ObjectDelete обоим клиентам. Ведь если объект есть в кноунлисте => значит сервер отправлял ему пакет PlayerInfo или NpcInfo или DropItem. А если все будет работать через WorldRegion то как понять был ли отправлен пакет на отображение объекта и нужно ли его удалять (ObjectDelete) или же данным пакетом можно принебреч и клиент сам поймет что ему нужно удалить объект при достаточном удалении от него?? И если допустим следующая ситуация представим что радиус боракаста у нас 4000 точек. Вот мы зашли в гиран - прогрузили всех игроков, потом убежали из гирана допустим на 5000 точек. А человек в центре гирана решил выйти из игры. но так как радиус боардкаста допустим 4000 точек то клиент убежавшего из гирана об этом не узнает, и прибежит обратно и увидет этого игрока - который уже вышел. Ну и все в таком духе. Или же при удалении из мира боардкастить objectDelete на весь регион? но тогда некторым клиентам придет удаление обьекта с objectId о котором они даже и не знали. Ведь если клиент сам не котролирует удаление "далеких" объектов тогда без кновн листа не обойтись получается. Значит могу сделать вывод что клиент сам эти объекты удаляет. Или же я ошибаюсь? Вообщем я в ступоре покачто. Займусь другими вещами пока не получу ответ
Вы пытаетесь к трехколесному велосипеду, вместо седла и педалей, приделать еще по несколько колес.
Функции вашего кноулиста, выполняет регион. При входе в него, вы получаете информацию по объектам внутри вашего региона, а так же по соседним, когда кто-то попадает в соседний или ваш регион, вы получаете о нем информацию, когда вы перемещаетесь и выходите из какого-то региона, то удаляетесь с него и его соседей, ну и собственно добавляетесь в новый с его соседями.
Клиенту не придет фантомный ID ибо если он есть на удаление, значит перед этим он попал вам на отображение.
open-team.ru - Freya, HighFive...
Ответ
#14
Меня одного коробит 1 вещь.
размер ребра региона 32к+ точек. Зачем слать инфу об игроках которых клиент никогда не увидит. Мне с трудом верится что пока я нахожусь в Орене на оффе мне прихотят пакеты аницации мобов из полномочий(расстояние от орена до них примерно 20к точек, но они в одном регионе.)
Или же на оффе регионы дробятся на еще более мелкую сетку?

Добавлено через 23 минуты
DiagoD Написал:Вы пытаетесь к трехколесному велосипеду, вместо седла и педалей, приделать еще по несколько колес.
Функции вашего кноулиста, выполняет регион. При входе в него, вы получаете информацию по объектам внутри вашего региона, а так же по соседним, когда кто-то попадает в соседний или ваш регион, вы получаете о нем информацию, когда вы перемещаетесь и выходите из какого-то региона, то удаляетесь с него и его соседей, ну и собственно добавляетесь в новый с его соседями.
Клиенту не придет фантомный ID ибо если он есть на удаление, значит перед этим он попал вам на отображение.
А ваша реализация боардкаста по регионам 32+к точек и еще 8ми смежным. Получается борадкаст идет на 9ккк точек квадратных.
и примерно 90% из этих пакетов не принисут ни какой пользы.
И можно получить ссылку хотя бы на 1 исходники где нет knownlist'а, уже 3е сурсы скачиваю и везде вижу PcKnownlist.java
Ответ
#15
Alay, lostworld
Ответ
#16
забираю свои слова назад, уже нашел что REGION_SIZE = 4096; Выходит что мапа из 32к точек дробится на 64 мальеньких региончиков. это уже вполне правдоподобно. Я то думал что регион и мапа - одно и тоже
Ответ
#17
полный бордель.
регионы были сделаны очень давно, во время запуска серверов на селеронах. нынешнее железо позволяет итерировать эти списки практически моментально. пытаться вылизать фичу до идеала на стадии ее разработки невозможно. сделайте как есть, а потом, когда уже будут сопутствующие части кода, концепт может изменится.
отсутствие knownList - плохой путь, имхо. получение игроком CI/NI на расстоянии до 8к стремно.
лучше научить эти листы взаимодействию только с определенными объектами, в основном это с игроками.
Ответ
#18
KID Написал:полный бордель.
регионы были сделаны очень давно, во время запуска серверов на селеронах. нынешнее железо позволяет итерировать эти списки практически моментально. пытаться вылизать фичу до идеала на стадии ее разработки невозможно. сделайте как есть, а потом, когда уже будут сопутствующие части кода, концепт может изменится.
отсутствие knownList - плохой путь, имхо. получение игроком CI/NI на расстоянии до 8к стремно.
лучше научить эти листы взаимодействию только с определенными объектами, в основном это с игроками.
не до 8к, а ровно 6к, это более чем приемлемо ибо радиус видимости клиента около 3к, точно уже не помню. А вот с каждым шагом перса отправлять добавление/удаление объекта, это действительно очень плохо, особенно в густонаселенных местах.
open-team.ru - Freya, HighFive...
Ответ
#19
DiagoD Написал:не до 8к, а ровно 6к, это более чем приемлемо ибо радиус видимости клиента около 3к, точно уже не помню. А вот с каждым шагом перса отправлять добавление/удаление объекта, это действительно очень плохо, особенно в густонаселенных местах.
Да здрасте, приехали.
[Изображение: Bg-FeBzz9VovXNn1I6mvvE3j5kx5LQEKPsslNP0j...56b38cbbdb]

Расстояние может доходить до 11,5к точек.

Добавлено через 5 минут
Оба варианта по сути не идеальны. но размер региона ни кто не мешает уменьшить. Делается это изменением 1 переменной. И даже переписывать ничего не придется.
Все равно уже переписал все под регионы, пока пускай так будет.
Ответ
#20
Alay Написал:Да здрасте, приехали.
[Изображение: Bg-FeBzz9VovXNn1I6mvvE3j5kx5LQEKPsslNP0j...56b38cbbdb]

Расстояние может доходить до 11,5к точек.

Добавлено через 5 минут
Оба варианта по сути не идеальны. но размер региона ни кто не мешает уменьшить. Делается это изменением 1 переменной. И даже переписывать ничего не придется.
Все равно уже переписал все под регионы, пока пускай так будет.

У меня он просто 2к, я по нему и считал, не обратив внимание что 4к указаноSmile
open-team.ru - Freya, HighFive...
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  CommunityBoard + GM Shop реализация michail_ST 5 1,682 04-21-2016, 01:20 PM
Последний пост: flopix
  Доброго времени суток (Команда + реализация) Creat1v 0 1,020 01-11-2015, 11:22 AM
Последний пост: Creat1v
  Реализация инстанса Линдвиора NoizeBD 2 1,439 05-13-2014, 09:13 PM
Последний пост: NoizeBD
  ПА(РЕализация шанса заточки) sakson 14 3,804 04-18-2014, 01:12 AM
Последний пост: Visor
  Реализация La2lucky 13 3,089 07-17-2013, 04:13 PM
Последний пост: helly
  Реализация - Камень Обработки Доспехов Krasavella 37 14,693 02-03-2013, 12:00 PM
Последний пост: helly
  Реализация GVE мода adskih 10 3,473 10-25-2012, 05:08 PM
Последний пост: L2scripts-Guard
  Реализация скилла GOODPower 3 1,499 06-01-2012, 12:06 AM
Последний пост: linliss
  Реализация swyatyk 6 2,393 04-28-2012, 05:40 PM
Последний пост: Zubastic
  Реализация продажи в CommunityBoard cokol 16 4,232 10-27-2011, 06:26 PM
Последний пост: FriendlyGhost

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)