lineage2js

lineage2js

Разработка эмулятора сервера для Lineage 2 C1 на JavaScript(Node js) https://github.com/lineage2js
На Пикабу
Дата рождения: 5 мая
185 рейтинг 4 подписчика 3 подписки 11 постов 1 в горячем
3

Не меняется ник

Через настройки пытаюсь поменять ник

Во-первых никаких всплывающих сообщений об ошибке.

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

message: "Вы слишком часто меняете никнейм. Попробуйте позже."

Вне зависимости каждые 5 минут отправлять или через 5 дней.

10

Видите разницу? А она есть!

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

Видите разницу? А она есть! Разработка, Программирование, MMORPG, Lineage 2, Javascript, Nodejs, Gamedev

В первом же квесте Fighter's Tutorial (даёт SP и карту мира) столкнулся с любопытным моментом. Охота на внешне одинаковых NPC, но на деле разных!

Речь пойдет только о квесте для людей на острове Talking Island Village.

В чём подвох?

В мире Lineage есть два NPC с одинаковым именем - Bearded Keltir.
Внутри сервера это разные NPC: ID 12082(tuto_keltir) и ID 481(keltir).
По квесту Fighter's Tutorial надо добыть Keltir Fang.

Убивайте Bearded Keltir, пока не получите Keltir Fang x4.

Как различать Bearded Keltir?

У этих NPC есть несколько зон spawn'a. Некоторые зоны пересекаются и в одной зоне могут находиться разные Bearded Keltir.
Так например если вы решите проходить квест возле Talking Island Village то вот на что надо обратить внимание:
* Keltir Fang падает с шансом в 100%. Если не упал, то вы убили не того NPC.
* С нужного Bearded Keltir не падает дроп. Дроп у ID 12082(tuto_keltir) отсутствует.

Вывод

Лучше всего проходить квест возле Cedric's Training Hall так как там одна из зон появления Bearded Keltir они же ID 12082(tuto_keltir).

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

Показать полностью
4

Баг или фича?

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


При добавлении SoulShot функционала не добавил проверку не только на наличие оружия, но и кто атакует — игрок или NPC. Как итог теперь все атакуют с помощью SoulShot.

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

Показать полностью
10

"Гарри Поттер" в Lineage 2

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

"Гарри Поттер" в Lineage 2 Разработка, Программирование, Lineage 2, Javascript, Nodejs, Гарри Поттер, Gamedev

Копаясь в серверных файлах наткнулся на пасхалку.

На острове Talking Island Village в храме Einhasad есть два NPC, которые стоят рядом друг с другом и имеют имена Harrys и Petron.

У каждого NPC на сервере есть цифровой ID и текстовый ID.
Так, например, для Harrys(ID 7035) его текстовый ID - Harry, а для Petron(ID 7036) - Potter
Таким образом, если сложить их ID, получится - Harry Potter

npc_begin
guild_coach
7035
[harry]
level=70
...
npc_end

npc_begin

guild_coach

7036

[potter]

level=70

...

npc_end

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

Показать полностью
10

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

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

Оптимизация сервера Lineage 2: внедрение VisibilityManager Программирование, Разработка, Lineage 2, Javascript, Nodejs, Видео, Короткие видео, Длиннопост

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

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

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

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

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

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

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

Показать полностью 1
4

Архитектура управления сущностями на сервере

Архитектура управления сущностями на сервере Программирование, Разработка, Lineage 2, Javascript, Nodejs

У проекта появилась чёткая архитектура управления сущностями. Теперь NPC, игроки, питомцы и другие объекты взаимодействуют в мире через систему менеджеров — рассказываю, как это работает.

В игровом мире есть разные типы сущностей: NPC, игроки (Player), питомцы (Pet) и другие. Каждая из них имеет свои состояния (движение, атака, бездействие) и требует управления.

Основные сущности и их поведение
NPC – управляет собой (перемещение, атака, idle).
Player – управляется игроком (те же состояния: ходьба, атака и т. д.).
Pet – похож на NPC, но принадлежит игроку.

Менеджеры и их задачи
1. NpcManager – создаёт NPC, реагирует в случае смерти NPC.
2. PlayersManager – отвечает за вход игроков в мир.
3. PetsManager – управляет питомцами (аналогично NPC, но с привязкой к игроку).
4. EntitiesManager – главный координатор:
o Управляет NpcManager и PlayersManager.
o Обрабатывает взаимодействия (например, если игрок подошёл к NPC, оба получают информацию друг о друге).
5. VisibilityManager – отвечает за видимость объектов:
o Определяет, кто кого видит.
o Периодически обновляет списки видимости для оптимизации.
6. MovingManager – обновляет позиции всех подвижных объектов в мире.

Зачем это нужно?
Такая система позволяет:
• Эффективно управлять сотнями сущностей.
• Оптимизировать обновление состояний (движение, видимость, атака).
• Гибко добавлять новые типы объектов (монстры, питомцы, NPC-торговцы).

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

Показать полностью
0

А вы знали, что Lineage 2 нарушает законы физики?

Помните как мы бегали по горам и не придавали значение тому как быстро спускались или поднимались на них?

Как мы знаем в реальной жизни перемещаясь на плоскости горизонтальная скорость у нас постоянная. Как только мы начинаем преодолевать горы и другие неровности то горизонтальная скорость у нас будет меньше. Но не в мире Lineage 2 где горизонтальная скорость всегда постоянная и нее зависит от неровностей. Связанно это с тем чтобы было проще синхронизировать персонажа на сервере и клиенте. Ведь на сервере нет точной модели мира, а лишь примерное очертание называемое geodata. А из-за того, что geodata приблизительно повторяет ландшафт клиента то было бы невозможно синхронизировать персонажа по Z оси. Поэтому синхронизация идет только по X и Y оси.

Видео:

1) Горизонтальная скорость на плоскости постоянная.

2) Как было бы в жизни. Взбираясь на гору горизонтальная скорость падает.

3) Как сделано в игре. Горизонтальная скорость постоянная.

4) Демонстрация из игры. Бежит словно нет никаких гор.

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

Показать полностью 3
Отличная работа, все прочитано!