8

Оптимизация сервера Lineage 2: внедрение VisibilityManager

Привет. Я продолжаю разрабатывать сервер для Lineage 2 C1 на JavaScript Проект

Оптимизация сервера Lineage 2: внедрение VisibilityManager

Хорошие новости: Теперь сервер не грузит всех NPC подряд, а только тех, кто рядом с игроком. Это значит:

* Меньше лагов – сервер не тратит силы на то, что далеко от игрока.
* Плавнее игра – особенно в городах и массовых сражениях.
* Стабильнее мир – больше NPC вокруг, но без нагрузки на клиент.

Как работает VisibilityManager?

Представьте радар на подлодке – он сканирует пространство вокруг и засекает только то, что действительно рядом.

* Каждые 3 секунды система проверяет, какие NPC или игроки находятся в зоне видимости.
* Неважно, кто к кому подходит – хоть игрок к мобу, хоть моб к игроку, если он в радиусе, сервер его "увидит" и сообщит игроку.
* Всё лишнее – выгружается – зачем держать в памяти то, что далеко и не влияет на игру?

Итог:
* Меньше тормозов – клиент не грузит 3D-модели тех NPC, которых игрок не видит.
* Экономия трафика – сервер не отправляет игроку данные о мобах на другом конце карты.

Блог про разработку сервера для Lineage 2 в телеге https://t.me/lineage2js

ИТ-проекты пикабушников

630 постов3.4K подписчиков

Правила сообщества

0. Запрещены посты вне тематики сообщества

1. Уважайте труд людей, пишите только конструктивную критику,

2. Не выкладывайте информацию по своему проекту чаще 2ух раз в месяц

0
Автор поста оценил этот комментарий

Сервак хранит в памяти юнитов и отдает инфу клиенту. Хранит он в условных циферах и координаха положения.

x\y\z координата - хоббитс - стоит -ID№100500

Клиент получает данные - отрисовывает всем, кто запросил инфу.

Поэтому каждый игрок видит хоббитса, но именно этого, а не каждого своего.

Причем постоянно сверяет базу.


Предположим если каждый получит своего хоббитса.

Получаем легкий метод "наебать" систему.

Берешь артмани, тыкаешь "хочумногоаденов" - полные карманы золота.

Пушка заточенная на 100500? Тык артмани.

Хитро спрятали данные?

Тыкаем артманей урон пушки в руке - тыкаем мышкой - моб дохнет - сыпет лут и опыт.

Спрятали хитро это?

Да тю!

Меняем урон скилла аое урона - тык - толпа мобов легла, ты богат.

Спрятали?

Да тю!

Правим моба, делаем ему ХП 1, спавним 100500 миллионов (или сколько твое железо выдержит) тыкаем - получаем гору экспы злата.


Как бы ты не исхищрался, если ты сделаешь отрисовку мобов на клиенте - ты получишь говносервер, который будет наебывать каждый второй школьник.


Тут даже с полной отрисовкой данных на серваке (не графики), реализуют всякие дюпы, позволяющие наварить ресурсов.

Но это на серваке, который пытается защищать себя... А автор пытается создать мегабагу да пожирнее.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Клиент получает данные - отрисовывает всем, кто запросил инфу.

Клиент не запрашивает информацию.



Как бы ты не исхищрался, если ты сделаешь отрисовку мобов на клиенте - ты получишь говносервер, который будет наебывать каждый второй школьник.

Отрисовка != управление.

Все управление происходит на сервере. Клиент только для отрисовки.
В артмани можно сделать много денег для клиента но как только будут происходить операции с деньгами сервер будет обновлять информацию для клиента и все значения сгорят. А сами операции на клиенте и не проходят. Покупка/Продажа/Дроп предметов. Все что угодно происходит на сервере.

показать ответы
Автор поста оценил этот комментарий

От 100 человек сервер не повиснет. А если взять больше игроков то и оригинальный PTS "спасибо" не скажет.

Я видел сколько юнитов ты изобразил.

Если они связаны с серваком - 100 игроков повесят его нахуй.

На оригинальных серверах ЛА2 играют тысячи игроков, не вешая.


Пост про новое добавление в самописный сервер. Про окружение игрока. А не разницу кто даст нагрузку больше. Да, игроки больше спамят пакетами чем NPC.

NPC не могут спамить пакетами, они не сетевые клиенты, не пори чушь.


Причем тут экономика? животные? Какая система социальности? Вы о чем?

При том, что ты НИХУЯ не понимаешь в Lineage, которую тут "собираешь".


В клиенте это дублируется. Главный источник данных является сервер и это настраивается в нем как в первоисточнике. Сервер решает кому и что отдавать и на каком расстоянии. Можно все 25к NPC грузить со всей карты а можно на расстоянии вытянутой руки.

Как на обычном сервере и сделано - он показывает только тех юнитов, что находятся в пределах видимости клиента.

Ты никак не изменил и не улучшил этот процесс.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Откуда столько ненависти?

Вы считаете, что вам все должны? Что проект должен отвечать вашим требованиям? Успокойтесь, вы не пуп земли.

Лучше пойдите, сделайте что-то полезное и выложите сюда.

показать ответы
2
о мото
Автор поста оценил этот комментарий

В видео очень чётко виден круг отрисовки и он.. небольшой на мой взгляд как игрока. Но и такой концентрации персонажей в игре мало где есть (кроме Гирана, бгг). Вопрос: размер круга органичен в целях демонстрации на Пикабу, или же числом NPC, или же такая дальность это "продакшн" решение? Тот же вопрос про 3 секунды, так-то на ПВП серверах на ускорении скорость можно 200+ единиц взять, мне кажется за 3 секунды можно прилично расстояния пробежать, полдальности мага так точно.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Радиус. Время. Количество NPC это все для демонстрации. На продакшене все будет стремиться к оригинальному PTS.

показать ответы
3
Автор поста оценил этот комментарий

* Меньше лагов – сервер не тратит силы на то, что далеко от игрока.

Заходит 100 человек - высаживают сервак.


* Плавнее игра – особенно в городах и массовых сражениях.

В массовых сражениях участвуют игроки, а не НПЦ, поэтому прогрузка НПЦ не повлияет.


* Стабильнее мир – больше NPC вокруг, но без нагрузки на клиент.

Добро пожаловать в проебанную экономику игры.

А да, оптимизацию тоже.

А да, играть невозможно, т.к. система социальности животных уничтожит игроков.

Нет, в начальной деревне еще ок, но чуть дальше...

Я уж молчу, что часть контента игры, к примеру, занять точку, чтоб чисто тебе принадлежало вот эта комната\спавн с парой мобов. За это морды бьют.


* Меньше тормозов – клиент не грузит 3D-модели тех NPC, которых игрок не видит.

Называется радиус отрисовки НПЦ. Настраивается в клиенте.

Обычно его выкручивают на максимум. т.е. ЭТО БЛЯТЬ НАДО.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Заходит 100 человек - высаживают сервак.

От 100 человек сервер не повиснет. А если взять больше игроков то и оригинальный PTS "спасибо" не скажет.

В массовых сражениях участвуют игроки, а не НПЦ, поэтому прогрузка НПЦ не повлияет.

Пост про новое добавление в самописный сервер. Про окружение игрока. А не разницу кто даст нагрузку больше. Да, игроки больше спамят пакетами чем NPC.



Добро пожаловать в проебанную экономику игры.

А да, оптимизацию тоже.

А да, играть невозможно, т.к. система социальности животных уничтожит игроков.

Нет, в начальной деревне еще ок, но чуть дальше...

Я уж молчу, что часть контента игры, к примеру, занять точку, чтоб чисто тебе принадлежало вот эта комната\спавн с парой мобов. За это морды бьют.

Причем тут экономика? животные? Какая система социальности? Вы о чем?


Называется радиус отрисовки НПЦ. Настраивается в клиенте.

Обычно его выкручивают на максимум. т.е. ЭТО БЛЯТЬ НАДО.

В клиенте это дублируется. Главный источник данных является сервер и это настраивается в нем как в первоисточнике. Сервер решает кому и что отдавать и на каком расстоянии. Можно все 25к NPC грузить со всей карты а можно на расстоянии вытянутой руки.

показать ответы
1
Автор поста оценил этот комментарий

А, понял. То есть доработка/оптимизация того что было "из коробки". Ноль вопросов.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Еще нюанс, что "коробки" нет. Все пишется с нуля как хобби проект)

показать ответы
0
Автор поста оценил этот комментарий

щас бы на мобилке из браузера макросы в линейке позапускать для фарминга?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Есть проект для этого. Клиент на JavaScript

https://github.com/npetrovski/l2js-client

0
о мото
Автор поста оценил этот комментарий

Я был там Гэндальф, 3000 лет назад (с)

и вы мне хотите сказать что было не так?

Никаких погонь. возмездия, мир мертв и неинтерактивен.

Тут надо разобраться, о чём вы. Потому что используя современные технологии можно было бы сделать мир интерактивней, вопрос в том хочет ли ТС решать эту задачу.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

вопрос в том хочет ли ТС решать эту задачу.

Пока ведется разработка ядра.

0
Автор поста оценил этот комментарий

опционально прогружать npc'шек не судьба, говорю?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это сейчас и происходит

0
Автор поста оценил этот комментарий

Эмммм... а разве это не стандарт разработки??? Типа прорисовывать только то что перед пользователем, причём всегда на определённом расстоянии?

Какой смысл прорисовывать, и даже загружать то что не видит пользователь?

Типа, этому концепту 100 лет в обед.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да верно. Это стандарт.

Какой смысл прорисовывать, и даже загружать то что не видит пользователь?

Все верно поэтому и был добавлен VisibilityManager. Функционал, который отвечает за зону видимости. Напомню, что сервер делается с нуля и на начальном этапе подгружались NPC, которые находились очень далеко. Теперь есть зона видимости. Этот пост про это обновление.

показать ответы
2
о мото
Автор поста оценил этот комментарий

Вы в ла2 были? Оно на движке анриала 2004го. Ходить по маршруту и говорить для NPC было уже достижением где-то четвёртого обновления :D Только для нескольких избранных НПЦ в городе, конечно же. Маршрут предопределён. И да, моб преследует игрока ограниченное время, при этом бегают они чуть медленней чем средний игрок с бафами т.е. либо он в дистанции прорисовки остаётся и его не сотрёт, либо он отстал и не важно что с ним потом будет.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Верно. NPC со своим AI быстрее надоест преследовать(у npc есть "желания") чем он выйдет за пределы видимости, которые на PTS составляют несколько тысяч (3000 или 4000).

0
Автор поста оценил этот комментарий

Да. и они будут у тебя исчезать и сбрасываться как только вышли за предел отрисовки. Никаких погонь. возмездия, мир мертв и неинтерактивен.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Если NPC преследует игрока то он всегда будет бежать за ним пока "желание" npc не пропадет. Сейчас зона отрисовки 500 для демонстрации но в оригинальном сервере несколько тысяч unit's зона отрисовки.

1
Автор поста оценил этот комментарий

Если исключить то, что javascript это богомерзкое, то как бы... Сервер обрабатывает весь стейт мира. Вообще весь. А рисует-то уже клиент.

Или ты все объекты за пределами области видимости игрока в idle переводишь?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

NPC, которых никто не видит переходят в состояние "sleep".

0
Автор поста оценил этот комментарий

Да, не робот)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Скрытый символ от deepseek'a увидели?)

показать ответы
2
Автор поста оценил этот комментарий

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Нет, не робот

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества