крупное обновление документации
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user