3.2 KiB
Questie-Octo architecture base
Non-negotiable design
- ClassicAPI is the only required enhanced-client compatibility layer.
- SuperWoW and Nampower may be detected later, but no core feature may depend on them.
- Questie 5.2.3 is the main UI/behavior target.
- Questie 6.0.0 is the architecture bridge.
- Questie 7-9 are bug-fix references.
- Questie 10-11 are references for service separation and mature availability logic.
- Questie 11.34.1 is an edge-case reference, not a runtime base.
- pfQuest/pfQuest-turtle are transitional raw data/reference sources only.
- Tortoise/Turtle server data should become the authoritative offline-generated relationship layer.
- No heavy whole-world calculation may run in one frame.
- Login and zone changes must remain responsive.
- Map nodes will use persistent diff/reuse, never continuous clear/recreate.
Runtime service order
ClassicAPI contract -> Scheduler -> raw-data provider merge (incremental) -> QuestLog cache (ClassicAPI IDs) -> Turtle completion history -> canonical Quest model -> AvailableQuests -> Objectives / ItemStarts -> persistent Map + Minimap -> Tracker / Tooltips / Options
0.1.0 scope
0.1.0 intentionally stops after:
- ClassicAPI verification
- gentle scheduler
- isolated raw DB provider
- ClassicAPI quest-ID quest log cache
- Turtle .queststatus / TWQUEST completion service
- diagnostics
No map, minimap, tracker, availability engine, or tooltip UI yet.
0.1.1 milestone
Introduces the public database boundary and canonical quest services:
Legacy/raw data provider -> DatabaseAPI -> QuestModel -> Completion + QuestLog -> AvailableQuests
No module outside Database/ should add new direct pfDB dependencies.
0.1.3 milestone
Adds the canonical node-generation boundary:
QuestModel -> Objectives -> ItemStarts -> Nodes -> future persistent Map/Minimap
Map/Minimap must consume Nodes and must not rediscover quest/item/source relationships itself.
Quest-truth publication rules
The runtime quest system is intentionally layered:
pfQuest/Turtle raw DB truth -> QuestModel semantic normalization -> Completion / EventAvailability / QuestLog runtime truth -> AvailableQuests transactional snapshot -> Objectives / ItemStarts -> Nodes transactional snapshot -> PreparedMap -> World Map / Minimap / Tracker / Quests browser
Important invariants:
lvlis presentation/difficulty;minis the minimum-level availability gate.- A quest DB
eventvalue is event membership only. It never means the event is active now. - Repeatability and event membership are independent flags; rendering must use an explicit precedence instead of assuming one classification excludes the other.
- Completion data must be queried authoritatively before it is published. When
QueryQuestsCompletedexists, request the cache and wait forQUEST_QUERY_COMPLETEbefore readingGetQuestsCompleted; otherwise use the Turtle.queststatus/TWQUESTfallback. - Async services never clear a published live snapshot while rebuilding it. Build into a private buffer and atomically swap at the publication boundary. This prevents map/minimap blinking during settings or quest-state refreshes.
- Prepared/map presentation stays valid until a complete replacement node snapshot exists.