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

95 lines
5.4 KiB
Markdown
Raw Permalink Blame History

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.
# 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.