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

У проекта появилась чёткая архитектура управления сущностями. Теперь 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