Все сетевые пакеты реализуют интерфейс IPacket и сериализуются с помощью MessagePack. Ниже приведён список всех пакетов, их назначение и структура.
Назначение: Авторизация игрока на сервере.
| Поле | Тип | Описание |
|---|---|---|
| Username | string | Имя пользователя |
| Password | string | Пароль (опционально) |
Назначение: Передача позиции и поворота игрока.
| Поле | Тип | Описание |
|---|---|---|
| Position | Vector3Serializable | Позиция игрока |
| Rotation | Vector3Serializable | Поворот игрока |
| ClientTick | long | Тик клиента |
Назначение: Уведомление о выстреле (направление).
| Поле | Тип | Описание |
|---|---|---|
| ClientTick | long | Тик клиента |
| Direction | Vector3Serializable | Направление выстрела |
Назначение: Сообщение о попадании по другому игроку.
| Поле | Тип | Описание |
|---|---|---|
| TargetId | int | ID цели |
| ClientTick | long | Тик клиента |
| Direction | Vector3Serializable | Направление выстрела |
Назначение: Передача состояния мира (всех игроков) от сервера клиентам.
| Поле | Тип | Описание |
|---|---|---|
| PlayerStates | List | Список состояний игроков |
| ServerTick | long | Тик сервера |
| Поле | Тип | Описание |
|---|---|---|
| Id | int | ID игрока |
| Username | string | Имя игрока |
| Position | Vector3Serializable | Позиция |
| Rotation | Vector3Serializable | Поворот |
| HealthPoint | int | Текущее здоровье |
| MaxHealthPoint | int | Максимальное здоровье |
| ArmorPoint | int | Текущая броня |
| MaxArmorPoint | int | Максимальная броня |
| ArmorExpirationTick | long | Тик истечения брони |
Назначение: Сообщение о подборе аптечки.
| Поле | Тип | Описание |
|---|---|---|
| ClientTick | long | Тик клиента |
| HealthAmount | int | Количество восстанавливаемого HP |
Назначение: Сообщение о подборе брони.
| Поле | Тип | Описание |
|---|---|---|
| ClientTick | long | Тик клиента |
| ArmorAmount | int | Количество добавляемой брони |
- Все пакеты сериализуются через MessagePack.
- Для расширения функционала (например, новые типы предметов) создавайте новые пакеты по аналогии.
- Все поля должны быть согласованы между клиентом и сервером.