Files
open-wc/targets/roadmap/05-ui-lua-audio.md
T

5.2 KiB
Raw Blame History

UIA — UI, Lua, Addons and Audio

Цель

Воспроизвести UI/addon semantics клиента 3.3.5a, сохранив возможность modern UI overlays и полноценную audio presentation.

UIA-1. UI architecture

  • Screen flow отделён от in-world HUD.
  • UI читает immutable view models и отправляет intents.
  • Godot Control tree является presentation backend, а не gameplay model.
  • Input contexts: login, character, world, chat, modal, targeting, vehicle, cinematic.
  • Scale, safe area, resolution, font и localization учитываются на уровне layout system.

UIA-2. Frontend screens

  • Data/license check, login, realm list и connection errors.
  • Character selection/create/delete/rename.
  • Race/class/customization previews тем же character renderer.
  • Loading screens по map/instance, progress и cancellation policy.
  • Disconnect/reconnect dialogs и account/server notices.

UIA-3. FrameXML

  • TOC parser: metadata, dependencies, optional deps, SavedVariables и load order.
  • XML includes, templates, virtual, inheritance и named/anonymous objects.
  • Frames, Regions, Textures, FontStrings, Layers и Scripts.
  • Anchors, dimensions, strata, frame level, draw layers, clipping и scale.
  • Widget types: Button, CheckButton, EditBox, Slider, StatusBar, ScrollFrame, MessageFrame, Tooltip, Cooldown, Model и Minimap.
  • Handler scripts: OnLoad, OnEvent, OnUpdate, mouse/keyboard/drag/show/hide/value events.

UIA-4. Lua runtime

  • Внутренний LuaRuntime позволяет сравнить/заменить PUC-Rio 5.1.1 и rilua.
  • Restricted libraries, byte strings, number semantics, globals, bit и error formatting.
  • VM lifetime: one UI environment per client session/profile with controlled reset.
  • Incremental GC имеет frame budget и metrics.
  • Native functions возвращают stable Lua values, а не Godot/Rust/C++ objects напрямую.
  • VM backend выбирается ADR после official + WoW-specific corpus.

UIA-5. WoW API and event system

  • API inventory строится из 3.3.5a FrameXML/Lua usage и независимых references.
  • Реализация группируется: unit, spell, aura, item, quest, group, chat, map, CVar, bindings, frames.
  • Event dispatcher имеет deterministic ordering, argument contracts и registration lifecycle.
  • OnUpdate throttling не меняет original semantics в Blizzlike335.
  • API, требующий server state, читает gameplay read model или создаёт intent; raw packets недоступны.
  • Missing API выдаёт диагностируемую ошибку/coverage report, а не silent nil where incompatible.

UIA-6. Security, taint and addons

  • Secure/insecure execution origins.
  • Protected functions/actions, secure templates и combat lockdown.
  • Taint propagation through variables/tables/functions в пределах подтверждённой 3.3.5a модели.
  • Addon memory/CPU/error isolation и configurable script limits без скрытого изменения default behavior.
  • SavedVariables account/character scopes, serialization, corruption recovery и atomic writes.
  • Addon compatibility tiers: loads, renders, functional, secure-combat verified.
  • Headless addon runner и UI inspector входят в AuthoringStudio/Test Center.

UIA-7. Default UI coverage

  • Unit/player/target/focus/party/raid frames.
  • Action bars, stance/pet/vehicle bars, cooldowns и keybindings.
  • Buffs/debuffs, cast bars, combat text и errors.
  • Bags, character, spellbook, talents, glyphs, skills, professions.
  • Quest log/tracker/gossip, map/minimap/taxi.
  • Chat, social, guild, calendar, LFG, PvP score.
  • Vendor, trainer, bank, mail, auction, trade, loot и roll.
  • Game menu, settings, macros, addons и help.

UIA-8. Audio

  • Typed DBC wrappers for SoundEntries, ZoneMusic, IntroMusic, Ambience and related tables.
  • Decoder/streaming/cache for MP3/WAV with category budgets.
  • Music day/night/zone transitions and crossfade.
  • Ambient loops, random emitters, indoor/outdoor и weather.
  • Positional world sounds, footsteps, water, spells, combat, NPC voice и UI feedback.
  • Audio events come from presentation descriptors; UI/gameplay do not manipulate players directly.
  • Device change, focus/mute policy, category volumes и missing sound diagnostics.

UIA-9. Localization and accessibility

  • Locale-aware fonts, fallback, text encoding и layout expansion.
  • Keybindings fully remappable; mouse sensitivity/inversion and optional gamepad.
  • UI scale, contrast/color-blind profiles, subtitle/text alternatives where possible.
  • Critical state does not rely only on color/audio.
  • Enhanced accessibility remains compatible with server and can coexist with Blizzlike visuals.

References

  • Original 3.3.5a FrameXML/Lua extracted from legally owned data is primary behavior corpus.
  • rilua/PUC-Rio are VM candidates/oracles, not complete WoW UI.
  • WowBench/Wowser/WowUnreal/WoWee provide API/event/loader test ideas.

Gate

Default UI boots deterministically; selected real addons pass declared tiers; secure actions fail correctly during combat; Lua GC/OnUpdate remain within budgets; UI is replaceable without changing gameplay/network.