113 lines
5.5 KiB
Markdown
113 lines
5.5 KiB
Markdown
# GMP — Gameplay Systems
|
|
|
|
## Цель
|
|
|
|
Создать детерминированную клиентскую проекцию серверного gameplay и полный набор player intents WoW 3.3.5a без переноса authoritative правил на клиент.
|
|
|
|
## GMP-1. World model
|
|
|
|
- Typed entity registry и object hierarchy.
|
|
- Components/read models: identity, transform, unit, player, item, gameobject, corpse, dynamic object.
|
|
- Ownership, charm, pet, target, creator, transport и group relationships.
|
|
- Reducers применяют domain events; presentation подписывается на changesets.
|
|
- Snapshot/replay позволяют восстановить состояние без live socket.
|
|
|
|
## GMP-2. Input and movement
|
|
|
|
- Remappable action layer, keyboard/mouse и optional gamepad/accessibility mappings.
|
|
- Walk/run/backpedal/strafe/turn/jump/fall/swim/fly/autorun.
|
|
- Camera-relative или character-relative policy строго по original behavior.
|
|
- Ground/collision query abstraction, slopes, water transition и falling.
|
|
- Prediction/reconciliation только локального movement; corrections имеют smoothing/snap thresholds.
|
|
- Debug flight/speed отделены от production profile.
|
|
|
|
## GMP-3. Selection and interaction
|
|
|
|
- Mouse/world picking, tab target, target/focus и target-of-target.
|
|
- Hostility/faction/dead/visibility/selectability filters.
|
|
- Facing, range, line-of-sight и interaction intents.
|
|
- NPC flags определяют available services; client не выдумывает доступную функцию.
|
|
- Gameobject use, gossip, trainer, vendor, mailbox, auctioneer, binder и flight master.
|
|
|
|
## GMP-4. Combat
|
|
|
|
- Auto attack/auto shot, swing state и attack stop.
|
|
- Damage/heal/miss/absorb/resist/block/crit feedback.
|
|
- Threat presentation, combat state, evade и unit flags.
|
|
- Resources, regeneration presentation и combo points/runes where applicable.
|
|
- Combat log canonical events отделены от floating text/UI formatting.
|
|
- Server validates hit, damage и death; client показывает pending/cast state.
|
|
|
|
## GMP-5. Spells and auras
|
|
|
|
- Spellbook, ranks, passive/active, known/disabled spells.
|
|
- Target requirements, range, facing, resource и client-predictable validation messages.
|
|
- Cast/channel/interrupt/pushback, GCD и cooldowns.
|
|
- Aura add/update/remove, stacks, duration, caster, dispel type и visibility.
|
|
- Totems, shapeshift, pets, tracking, tradeskill casts.
|
|
- Spell visual/audio descriptors separate from spell mechanics state.
|
|
|
|
## GMP-6. Death and recovery
|
|
|
|
- Death/release spirit, ghost, corpse, graveyard, reclaim delay.
|
|
- Resurrection request/accept, spirit healer penalties.
|
|
- Durability loss/repair и instance wipe/reset presentation.
|
|
- Failure during map transfer/reconnect does not duplicate corpse/player state.
|
|
|
|
## GMP-7. Items and economy
|
|
|
|
- Inventory slots, bags, bank, keyring, equipment, ammo и currencies.
|
|
- Stack/split/swap/equip/use/destroy with pending/server-confirmed states.
|
|
- Loot windows, group rolls, master loot, disenchant и loot release.
|
|
- Item fields, random properties, enchants, gems, durability, sets и cooldowns.
|
|
- Vendor/buyback/repair, trade, mail, auction и guild bank.
|
|
- Money formatting/display separated from authoritative transaction.
|
|
|
|
## GMP-8. Quests and progression
|
|
|
|
- Quest availability, accept, abandon, track, objectives, complete и reward choice.
|
|
- Kill, item, gameobject, explore, spell, escort, timed, reputation objectives.
|
|
- Chains, prerequisites, exclusive groups, repeatable/daily/weekly и conditions.
|
|
- XP/rested/level, reputation, honor, achievements.
|
|
- Skills, talents, glyphs, professions, recipes и trainers.
|
|
- Quest state drives view models; authoring graph compiles to server-supported representation.
|
|
|
|
## GMP-9. World activities
|
|
|
|
- Area/subzone/exploration state и rest areas.
|
|
- Taxi discovery/routes/flight, transports, elevators и boats.
|
|
- Fishing, gathering, tracking, world events и scripted gameobjects.
|
|
- Weather/time events feed render/audio but are owned by world state.
|
|
- Minimap/world map POI and quest markers are projections, not quest logic.
|
|
|
|
## GMP-10. Social
|
|
|
|
- Chat types, channels, whispers, system messages и links.
|
|
- Friends, ignore, who, AFK/DND.
|
|
- Party/raid invites, leader, roles, loot rules, ready check, raid targets.
|
|
- Guild roster, ranks, notes, MOTD, event/calendar.
|
|
- Presence/reconnect updates and privacy/error handling.
|
|
|
|
## GMP-11. Instances, PvP and vehicles
|
|
|
|
- Difficulty, instance binds, lockouts, encounters, reset и transfer aborted.
|
|
- LFG queue/proposal/roles/teleport/vote kick/rewards.
|
|
- Duel, PvP flags, battleground queue/status/score/resurrection и arena teams.
|
|
- Outdoor PvP objectives.
|
|
- Vehicle seats, enter/exit/switch, possession action bar и transport-relative movement.
|
|
|
|
## GMP-12. Cinematics and scripted presentation
|
|
|
|
- Cinematic/movie start/stop, camera control и skippability.
|
|
- Server-driven scripted sequences reflected as safe presentation commands.
|
|
- Loading screens and map transitions preserve session state.
|
|
- Gameplay input contexts prevent actions during restricted states.
|
|
|
|
## Testing order
|
|
|
|
Для каждой системы: reducer unit tests → packet/domain contract → offline scenario → live core integration → original-client comparison → latency/reconnect scenario.
|
|
|
|
## Gate
|
|
|
|
Gameplay state воспроизводим replay-ом; UI/render не владеют authoritative values; все intents имеют pending/confirmed/rejected lifecycle; core gameplay loop проходит end-to-end без оригинального клиента.
|