Files
open-wc/targets/roadmap/03-network-and-session.md

5.4 KiB
Raw Permalink Blame History

NET — Network, Protocol and Session

Цель

Реализовать точный клиентский протокол WoW 3.3.5a build 12340, изолировав транспорт и packet layout от gameplay/UI.

NET-1. Transport

  • Native TCP auth/world connections, DNS/IPv4/IPv6 policy и configurable endpoints.
  • Non-blocking read/write, bounded buffers, packet fragmentation/coalescing.
  • Cancellation, connect/read/write timeouts, keepalive и orderly shutdown.
  • Network thread работает с bytes; domain events применяются game thread.
  • Proxy mode только как explicit development adapter, не основной transport.

NET-2. Authentication

  • Logon challenge/proof SRP6 values и exact endian/normalization rules.
  • Realm list parsing, build/locale/platform fields и error mapping.
  • World auth digest, session key и header encryption state.
  • Credentials не логируются; session material очищается при disconnect.
  • Golden vectors и сравнение с TrinityCore/AzerothCore/Wowser/Whoa implementations.

NET-3. Packet framework

  • PacketReader/Writer с checked boundaries и explicit endianness.
  • Typed opcode registry generated/validated для build 12340.
  • Header framing, ARC4/drop policy, zlib compressed packets.
  • Packed GUID, bit masks, CString/fixed strings и localized text.
  • Unknown/unsupported opcode telemetry rate-limited; policy зависит от criticality.
  • Packet handlers возвращают domain events, не меняют scenes/UI.

NET-4. Update fields and entity lifecycle

  • Generated object/item/container/unit/player/gameobject/dynamicobject/corpse field descriptors.
  • SMSG_UPDATE_OBJECT blocks: values, movement, create, create2, out-of-range, near objects.
  • Partial mask application сохраняет неизвестные/необновлённые поля корректно.
  • Entity type/entry/display/faction/health/power/flags/ownership relationships.
  • Despawn/out-of-range/map transfer не оставляют presentation entities.

NET-5. Movement synchronization

  • Полный movement flags set, timestamps, position/orientation, pitch, fall/jump, spline elevation.
  • Start/stop/strafe/turn/pitch/jump/fall/land/swim/fly/heartbeat packets.
  • Transport GUID/seat/relative coordinates и server spline movement.
  • Client prediction history, acknowledgements и reconciliation metrics.
  • Teleport/worldport handshake и map transfer.
  • Anti-cheat-sensitive fields формируются строго по profile; client не симулирует authoritative NPC path.

NET-6. Session domains

  • Character enum/create/delete/rename/login/logout.
  • Time/account data/tutorial/action bars/initial spells.
  • Chat/channel/social/group/guild.
  • Combat/spells/auras/threat.
  • Items/inventory/loot/trade/vendor/mail/auction.
  • Quests/gossip/POI/taxi.
  • Instances/LFG/PvP/vehicles/calendar.
  • Каждый domain имеет отдельный handler module, fixtures и unsupported coverage report.

NET-7. Reliability and diagnostics

  • State-aware disconnect reason и recovery path.
  • Reconnect только когда protocol/server допускает; иначе безопасный возврат к login.
  • Packet trace modes: metadata-only default, redacted payload для tests, encrypted secrets never.
  • Correlation IDs session/request/entity.
  • Replay transport воспроизводит timing или deterministic step mode.
  • Network impairment harness: latency, jitter, loss, duplication, fragmentation и abrupt close.

NET-8. Core compatibility

  • Baseline protocol один, но server capabilities/quirks задаются adapter profile.
  • Не ветвить handlers по строке if azerothcore без documented capability.
  • Test matrix фиксирует core commit, DB revision, modules и config.
  • Custom opcodes располагаются в namespaced extension profile и не включены в Blizzlike335.

NET-9. Warden compatibility

  • Зафиксировать фактические требования Warden у supported TrinityCore/AzerothCore profiles.
  • Реализовывать только compatibility с тестовыми/private server environments и документированным build 12340 flow; OpenWC не предназначен для official/retail servers.
  • Module challenge/response, crypto/state и platform behavior изолировать в optional security adapter.
  • Любое исполнение загружаемого module code sandboxed, size/hash checked и отключаемо в development profile.
  • Добавить fixtures и failure UX для unsupported/invalid challenge; не использовать subsystem для обхода чужих защитных механизмов.

Tools and references

  • TrinityCore/AzerothCore source — authoritative server-side packet expectations.
  • Whoa — reverse-engineered client semantics.
  • Wowser — независимый auth/world proof-of-concept и test ideas.
  • WoWee/WowUnreal — coverage и lifecycle comparison.
  • Packet captures используются только легально, минимально и с redaction.

Gate

Headless client проходит auth → realm → character → world; replay создаёт одинаковые domain events; malformed packets не читаются за границы; secrets отсутствуют в logs; обе core configurations проходят contract suite.