3 Server Network Integration
Roman edited this page 2026-07-01 22:16:50 +03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Сервер и сетевой обмен

Серверная связка

В проекте есть два серверных подпроекта:

  • servers/l2-unity-loginserver
  • servers/l2-unity-gameserver

Loginserver отвечает за:

  • login/auth;
  • session/play keys;
  • server list;
  • account state;
  • связь loginserver <-> gameserver.

Gameserver отвечает за:

  • world state;
  • characters;
  • NPC/monsters;
  • spawn manager;
  • geodata/pathfinding;
  • player sync;
  • chat;
  • combat;
  • inventory;
  • shortcuts.

Локальные порты

Назначение Порт
login 2106
login <-> game 9014
game 11000

Packet catalog

Generated catalog содержит 68 packet rows:

Layer Rows
GAME-CLIENT 23
GAME-SERVER 34
LOGIN-CLIENT 3
LOGIN-SERVER 8

Каждый packet должен получить Wiki-страницу:

Wiki/Network/Packets/<Layer>/<PacketClass>

Что описывать на packet page

  • layer;
  • direction;
  • class path;
  • opcode/type;
  • payload fields;
  • read/write rules;
  • caller on Unity side;
  • handler on server side;
  • validation rules;
  • error codes;
  • logs;
  • reconnect/timeout behavior;
  • example trace.

Интеграционный контракт с серверной стороной

Так как сервером занимается отдельный человек, каждая network task должна быть понятна без догадок:

  • какой packet нужен;
  • кто владелец изменения: Unity, server, оба;
  • какие поля должны быть в payload;
  • какой expected response;
  • какой error path;
  • какой лог должен появиться;
  • как проверить двумя клиентами;
  • какие тестовые account/character нужны.

Минимальные end-to-end flows

Flow Packets / systems
Login login auth, server list, play ok/fail
Character select char list, select, load world
Enter world player info, object spawn, status update
Movement move/rotate/direction packets, object movement sync
Target/combat set target, attack, auto attack, damage, status updates
Chat send message, message packet
Inventory inventory list/update, use/drop/destroy/equip
Shortcuts shortcut init/register/delete
Disconnect/reconnect disconnect, restart, server close, state recovery

Server readiness rule

Packet class exists не означает, что интеграция готова. Готовность есть только когда:

  • Unity вызывает правильный flow;
  • server handler подтвержден;
  • payload documented;
  • happy path проверен;
  • error path проверен;
  • logs позволяют расследовать проблему;
  • Wiki page updated.