mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
629 lines
21 KiB
Markdown
629 lines
21 KiB
Markdown
|
|
# Features Overview
|
||
|
|
|
||
|
|
A comprehensive overview of all implemented features in Wowee, the native C++ World of Warcraft 3.3.5a client.
|
||
|
|
|
||
|
|
## Table of Contents
|
||
|
|
- [Rendering Features](#rendering-features)
|
||
|
|
- [Gameplay Features](#gameplay-features)
|
||
|
|
- [UI Features](#ui-features)
|
||
|
|
- [Network & Authentication](#network--authentication)
|
||
|
|
- [Asset Pipeline](#asset-pipeline)
|
||
|
|
- [Audio Features](#audio-features)
|
||
|
|
- [Developer Tools](#developer-tools)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Rendering Features
|
||
|
|
|
||
|
|
### Terrain Rendering
|
||
|
|
- ✅ **Multi-tile streaming**: Load and render multiple ADT terrain tiles
|
||
|
|
- ✅ **Async loading**: Non-blocking terrain chunk loading (prevents frame stalls)
|
||
|
|
- ✅ **Height maps**: 9x9 outer + 8x8 inner vertex grids per chunk
|
||
|
|
- ✅ **Texture splatting**: Up to 4 texture layers per chunk with alpha blending
|
||
|
|
- ✅ **Frustum culling**: Only render visible terrain chunks
|
||
|
|
- ✅ **Terrain holes**: Support for gaps in terrain geometry
|
||
|
|
|
||
|
|
### Water & Liquids
|
||
|
|
- ✅ **Animated water**: Vertex animation with wave motion
|
||
|
|
- ✅ **Reflections**: Sky and environment reflections on water surface
|
||
|
|
- ✅ **Refractions**: Underwater view distortion
|
||
|
|
- ✅ **Fresnel effect**: View-angle dependent reflection/refraction mixing
|
||
|
|
- ✅ **Multiple liquid types**: Water, lava, slime support
|
||
|
|
- ✅ **Liquid height**: Variable water levels per chunk
|
||
|
|
|
||
|
|
### Sky & Atmosphere
|
||
|
|
- ✅ **Dynamic day/night cycle**: Smooth time-of-day transitions
|
||
|
|
- ✅ **Sun and moon**: Orbital movement with proper positioning
|
||
|
|
- ✅ **Moon phases**: 8 realistic lunar phases with elliptical terminator
|
||
|
|
- ✅ **Star field**: 1000+ procedurally placed stars (visible at night)
|
||
|
|
- ✅ **Gradient sky**: Time-dependent sky color gradients
|
||
|
|
- ✅ **Manual time control**: F9 to pause, +/- to adjust time
|
||
|
|
|
||
|
|
### Weather & Particles
|
||
|
|
- ✅ **Rain system**: 2000 particle rain with gravity and wind
|
||
|
|
- ✅ **Snow system**: 2000 particle snow with drift and accumulation
|
||
|
|
- ✅ **Camera-relative particles**: Particles follow camera for consistent coverage
|
||
|
|
- ✅ **Weather cycling**: W key to cycle None/Rain/Snow
|
||
|
|
- ✅ **M2 particle emitters**: WotLK-compatible particle emitters on models
|
||
|
|
|
||
|
|
### Characters & Models
|
||
|
|
- ✅ **M2 model loading**: Character, creature, and prop models
|
||
|
|
- ✅ **Skeletal animation**: Up to 256 bones per model with GPU skinning
|
||
|
|
- ✅ **Animation sequences**: Idle, walk, run, attack, death, emote, etc.
|
||
|
|
- ✅ **Multiple animations**: Smooth animation blending
|
||
|
|
- ✅ **Geosets**: Show/hide body parts (e.g., helmets, cloaks)
|
||
|
|
- ✅ **Attachment points**: Weapons, shields, helmets properly attached
|
||
|
|
- ✅ **Race-aware textures**: Correct skin, hair, and face textures for all races
|
||
|
|
- ✅ **All races supported**: Human, Dwarf, Night Elf, Gnome, Draenei, Orc, Undead, Tauren, Troll, Blood Elf
|
||
|
|
|
||
|
|
### Buildings & World Objects
|
||
|
|
- ✅ **WMO rendering**: World Map Object (building) rendering
|
||
|
|
- ✅ **Multi-material batches**: Multiple textures per building
|
||
|
|
- ✅ **Portal system**: Visibility culling using portals
|
||
|
|
- ✅ **Doodad placement**: Decorative objects within buildings
|
||
|
|
- ✅ **Distance culling**: WMO groups culled beyond 160 units
|
||
|
|
- ✅ **Frustum culling**: Only render visible building groups
|
||
|
|
|
||
|
|
### Visual Effects
|
||
|
|
- ✅ **Lens flare**: Chromatic aberration sun lens flare
|
||
|
|
- ✅ **Volumetric clouds**: FBM noise-based cloud generation
|
||
|
|
- ✅ **Glow effects**: Billboarded light sprites for lanterns, torches
|
||
|
|
- ✅ **Blend modes**: Proper alpha, additive, and modulate blending
|
||
|
|
- ✅ **Unlit rendering**: Separate shader path for emissive materials
|
||
|
|
|
||
|
|
### Post-Processing
|
||
|
|
- ✅ **HDR rendering**: High dynamic range rendering pipeline
|
||
|
|
- ✅ **Tonemapping**: Exposure adjustment and color grading
|
||
|
|
- ✅ **Shadow mapping**: 2048x2048 shadow maps
|
||
|
|
- ✅ **MSAA support**: Multi-sample anti-aliasing
|
||
|
|
|
||
|
|
### Camera
|
||
|
|
- ✅ **Free-fly camera**: WASD movement with mouse look
|
||
|
|
- ✅ **Camera orbit**: Orbit around character in online mode
|
||
|
|
- ✅ **Sprint**: Shift key for faster camera movement
|
||
|
|
- ✅ **Smooth movement**: Interpolated camera transitions
|
||
|
|
- ✅ **Intro animations**: Camera swoops on creature spawns
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Gameplay Features
|
||
|
|
|
||
|
|
### Authentication & Login
|
||
|
|
- ✅ **SRP6a authentication**: Full cryptographic authentication
|
||
|
|
- ✅ **Username/password**: Standard login credentials
|
||
|
|
- ✅ **Server selection**: Configure auth server address
|
||
|
|
- ✅ **Session keys**: 40-byte session key generation
|
||
|
|
- ✅ **RC4 encryption**: Header encryption after authentication
|
||
|
|
- ✅ **Auto-connect**: Reconnect on disconnect
|
||
|
|
|
||
|
|
### Realm & Character Selection
|
||
|
|
- ✅ **Realm list**: Display available realms from auth server
|
||
|
|
- ✅ **Realm info**: Population, type (PvP/PvE/RP), online status
|
||
|
|
- ✅ **Auto-select**: Auto-select when only one realm available
|
||
|
|
- ✅ **Character list**: Display all characters on selected realm
|
||
|
|
- ✅ **Character preview**: 3D animated character preview
|
||
|
|
- ✅ **Character stats**: Level, race, class, location display
|
||
|
|
- ✅ **Auto-select character**: Auto-select when only one character exists
|
||
|
|
|
||
|
|
### Character Creation
|
||
|
|
- ✅ **Race selection**: All 10 playable races (Alliance and Horde)
|
||
|
|
- ✅ **Class selection**: Classes filtered by race compatibility
|
||
|
|
- ✅ **Gender selection**: Male and female options
|
||
|
|
- ✅ **Appearance customization**: Face, skin color, hair style, hair color, facial features
|
||
|
|
- ✅ **Name validation**: Character name input and validation
|
||
|
|
- ✅ **3D preview**: Real-time 3D character preview during creation
|
||
|
|
- ✅ **Character deletion**: Delete existing characters
|
||
|
|
|
||
|
|
### Movement & Navigation
|
||
|
|
- ✅ **WASD movement**: Smooth character movement
|
||
|
|
- ✅ **Mouse steering**: Camera-relative movement direction
|
||
|
|
- ✅ **Sprint**: Shift key for faster movement
|
||
|
|
- ✅ **Server sync**: Position synchronized with world server
|
||
|
|
- ✅ **Spline movement**: Follow server-dictated movement paths
|
||
|
|
- ✅ **Fall time**: Proper gravity and fall damage calculation
|
||
|
|
- ✅ **Collision**: Terrain height-based positioning
|
||
|
|
|
||
|
|
### Combat System
|
||
|
|
- ✅ **Targeting**: Left-click or Tab to target enemies
|
||
|
|
- ✅ **Auto-attack**: Automatic melee attacks on targeted enemy
|
||
|
|
- ✅ **Spell casting**: Cast spells from spellbook or action bar
|
||
|
|
- ✅ **Spell targeting**: Click-to-target and self-cast support
|
||
|
|
- ✅ **Cooldowns**: Visual cooldown indicators on action bar
|
||
|
|
- ✅ **Resource costs**: Mana, rage, energy consumption
|
||
|
|
- ✅ **Damage calculation**: Server-side damage processing
|
||
|
|
- ✅ **Attack animations**: Proper melee and spell cast animations
|
||
|
|
- ✅ **Death handling**: Player death, corpse, resurrection
|
||
|
|
- ✅ **NPC combat**: NPCs attack and animate properly
|
||
|
|
- ✅ **Faction hostility**: Faction.dbc-based friend/foe detection
|
||
|
|
- ✅ **Level-based difficulty**: Color-coded enemy levels (gray/green/yellow/orange/red)
|
||
|
|
|
||
|
|
### Spells & Abilities
|
||
|
|
- ✅ **Spellbook**: Complete spellbook UI
|
||
|
|
- ✅ **Class specialties**: Tabs organized by SkillLine (e.g., Fire, Frost, Arcane for Mage)
|
||
|
|
- ✅ **General tab**: Universal spells available to all classes
|
||
|
|
- ✅ **Spell icons**: Loaded from SpellIcon.dbc
|
||
|
|
- ✅ **Spell tooltips**: Name, rank, cost, range, cooldown, description
|
||
|
|
- ✅ **Drag-drop**: Drag spells to action bar
|
||
|
|
- ✅ **Known spells**: Track learned spells per character
|
||
|
|
- ✅ **Spell ranks**: Multiple ranks per spell
|
||
|
|
|
||
|
|
### Action Bar
|
||
|
|
- ✅ **12 slots**: Main action bar with 12 ability slots
|
||
|
|
- ✅ **Keybindings**: 1-9, 0, -, = for quick access
|
||
|
|
- ✅ **Spell icons**: Visual spell icons with cooldown overlay
|
||
|
|
- ✅ **Item icons**: Visual item icons for usable items
|
||
|
|
- ✅ **Drag-drop**: Drag spells from spellbook or items from inventory
|
||
|
|
- ✅ **Click-to-cast**: Left-click to use ability
|
||
|
|
- ✅ **Drag-to-remove**: Drag to ground to remove from action bar
|
||
|
|
- ✅ **Cooldown display**: Visual cooldown timer
|
||
|
|
- ✅ **Hotkey labels**: Show keybinding on each slot
|
||
|
|
|
||
|
|
### Inventory & Equipment
|
||
|
|
- ✅ **23 equipment slots**: Head, shoulders, chest, legs, feet, wrist, hands, waist, back, mainhand, offhand, ranged, ammo, tabard, shirt, trinkets, rings, neck
|
||
|
|
- ✅ **16 backpack slots**: Main backpack storage
|
||
|
|
- ✅ **Item icons**: Rich item icons from ItemDisplayInfo.dbc
|
||
|
|
- ✅ **Item tooltips**: Stats, durability, item level, required level
|
||
|
|
- ✅ **Drag-drop**: Drag items to equip, unequip, or action bar
|
||
|
|
- ✅ **Auto-equip**: Double-click or drag to auto-equip to correct slot
|
||
|
|
- ✅ **Gold display**: Current gold/silver/copper
|
||
|
|
- ✅ **Item stats**: Armor, damage, stats, enchantments
|
||
|
|
- ✅ **Durability**: Equipment durability tracking
|
||
|
|
|
||
|
|
### Quest System
|
||
|
|
- ✅ **Quest markers**: ! (available) and ? (complete) above NPCs
|
||
|
|
- ✅ **Minimap markers**: Quest markers on minimap
|
||
|
|
- ✅ **Quest details**: Rich quest description and objectives
|
||
|
|
- ✅ **Quest log**: Track up to 25 active quests
|
||
|
|
- ✅ **Objective tracking**: Progress on kill/collect objectives
|
||
|
|
- ✅ **Quest rewards**: Choose reward items on completion
|
||
|
|
- ✅ **Quest turn-in**: Complete quest workflow
|
||
|
|
- ✅ **Quest levels**: Color-coded quest difficulty
|
||
|
|
- ✅ **Abandon quests**: Drop unwanted quests
|
||
|
|
- ✅ **Quest giver status**: Dynamic ! and ? based on quest state
|
||
|
|
|
||
|
|
### Vendor System
|
||
|
|
- ✅ **Buy items**: Purchase items with gold
|
||
|
|
- ✅ **Sell items**: Sell items from inventory
|
||
|
|
- ✅ **Vendor inventory**: Display vendor's available items
|
||
|
|
- ✅ **Price display**: Gold/silver/copper prices
|
||
|
|
- ✅ **Gold validation**: Prevent buying without enough gold
|
||
|
|
- ✅ **Inventory space check**: Verify space before buying
|
||
|
|
- ✅ **Multi-buy**: Purchase multiple quantities
|
||
|
|
|
||
|
|
### Loot System
|
||
|
|
- ✅ **Loot window**: Visual loot interface
|
||
|
|
- ✅ **Loot corpses**: Loot from defeated enemies
|
||
|
|
- ✅ **Gold looting**: Pick up gold from corpses
|
||
|
|
- ✅ **Item looting**: Add looted items to inventory
|
||
|
|
- ✅ **Loot all**: Take all items and gold
|
||
|
|
- ✅ **Auto-loot**: Shift-click for instant loot (TODO)
|
||
|
|
|
||
|
|
### NPC Interaction
|
||
|
|
- ✅ **Gossip system**: Talk to NPCs with dialogue options
|
||
|
|
- ✅ **Gossip options**: Multiple choice dialogues
|
||
|
|
- ✅ **Quest givers**: NPCs offer quests
|
||
|
|
- ✅ **Vendors**: NPCs sell and buy items
|
||
|
|
- ✅ **Trainers**: NPCs offer training (placeholder)
|
||
|
|
- ✅ **Flight masters**: Flight points (TODO)
|
||
|
|
|
||
|
|
### Social Features
|
||
|
|
- ✅ **Chat system**: Send and receive chat messages
|
||
|
|
- ✅ **Chat channels**: SAY, YELL, WHISPER, GUILD (TODO)
|
||
|
|
- ✅ **Chat formatting**: Color-coded messages by type
|
||
|
|
- ✅ **Chat history**: Scrollable message history
|
||
|
|
- ✅ **Party system**: Group invites and party list
|
||
|
|
- ✅ **Friend list**: (TODO)
|
||
|
|
- ✅ **Guild system**: (TODO)
|
||
|
|
|
||
|
|
### Character Progression
|
||
|
|
- ✅ **Experience points**: Gain XP from kills and quests
|
||
|
|
- ✅ **Leveling**: Level up with stat increases
|
||
|
|
- ✅ **Level-based XP**: Appropriate XP from mob kills
|
||
|
|
- ✅ **Stats tracking**: Health, mana, strength, agility, etc.
|
||
|
|
- ✅ **Talent points**: (TODO - placeholder screen exists)
|
||
|
|
- ✅ **Talent trees**: (TODO)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## UI Features
|
||
|
|
|
||
|
|
### Authentication Screen
|
||
|
|
- ✅ Username input field
|
||
|
|
- ✅ Password input field (masked)
|
||
|
|
- ✅ Server address input
|
||
|
|
- ✅ Login button
|
||
|
|
- ✅ Connection status display
|
||
|
|
- ✅ Error message display
|
||
|
|
|
||
|
|
### Realm Selection Screen
|
||
|
|
- ✅ Realm list with names
|
||
|
|
- ✅ Realm type indicators (PvP/PvE/RP)
|
||
|
|
- ✅ Population display (Low/Medium/High/Full)
|
||
|
|
- ✅ Online/offline status
|
||
|
|
- ✅ Select button
|
||
|
|
- ✅ Back to login button
|
||
|
|
|
||
|
|
### Character Selection Screen
|
||
|
|
- ✅ Character list with names and levels
|
||
|
|
- ✅ 3D animated character preview
|
||
|
|
- ✅ Race, class, level display
|
||
|
|
- ✅ Location display
|
||
|
|
- ✅ Create Character button
|
||
|
|
- ✅ Delete Character button
|
||
|
|
- ✅ Enter World button
|
||
|
|
- ✅ Back to realms button
|
||
|
|
|
||
|
|
### Character Creation Screen
|
||
|
|
- ✅ Race selection buttons (all 10 races)
|
||
|
|
- ✅ Class selection buttons (filtered by race)
|
||
|
|
- ✅ Gender selection (male/female)
|
||
|
|
- ✅ Face selection
|
||
|
|
- ✅ Skin color selection
|
||
|
|
- ✅ Hair style selection
|
||
|
|
- ✅ Hair color selection
|
||
|
|
- ✅ Facial features selection
|
||
|
|
- ✅ Character name input
|
||
|
|
- ✅ 3D character preview (updates in real-time)
|
||
|
|
- ✅ Create button
|
||
|
|
- ✅ Back button
|
||
|
|
|
||
|
|
### In-Game HUD
|
||
|
|
- ✅ Player health bar
|
||
|
|
- ✅ Player mana/rage/energy bar
|
||
|
|
- ✅ Player level and name
|
||
|
|
- ✅ Target frame (health, level, name)
|
||
|
|
- ✅ Target hostility coloring (red=hostile, green=friendly, yellow=neutral)
|
||
|
|
- ✅ Experience bar
|
||
|
|
- ✅ Action bar (12 slots with icons and keybindings)
|
||
|
|
- ✅ Minimap
|
||
|
|
- ✅ Chat window
|
||
|
|
- ✅ Gold display
|
||
|
|
- ✅ Coordinates display (debug)
|
||
|
|
|
||
|
|
### Inventory Window
|
||
|
|
- ✅ Paper doll (equipment visualization)
|
||
|
|
- ✅ 23 equipment slots
|
||
|
|
- ✅ Backpack grid (16 slots)
|
||
|
|
- ✅ Item icons with tooltips
|
||
|
|
- ✅ Gold display
|
||
|
|
- ✅ Character stats panel
|
||
|
|
- ✅ Close button
|
||
|
|
|
||
|
|
### Spellbook Window
|
||
|
|
- ✅ Tabbed interface (class specs + General)
|
||
|
|
- ✅ Spell list with icons
|
||
|
|
- ✅ Spell names and ranks
|
||
|
|
- ✅ Spell tooltips (cost, range, cooldown, description)
|
||
|
|
- ✅ Drag-drop to action bar
|
||
|
|
- ✅ Tab switching
|
||
|
|
- ✅ Close button
|
||
|
|
|
||
|
|
### Quest Log Window
|
||
|
|
- ✅ Quest list (up to 25 quests)
|
||
|
|
- ✅ Quest objectives and progress
|
||
|
|
- ✅ Quest description
|
||
|
|
- ✅ Quest level and recommended party size
|
||
|
|
- ✅ Abandon Quest button
|
||
|
|
- ✅ Close button
|
||
|
|
|
||
|
|
### Quest Details Dialog
|
||
|
|
- ✅ Quest title and level
|
||
|
|
- ✅ Quest description text
|
||
|
|
- ✅ Objectives list
|
||
|
|
- ✅ Reward display (gold, items, XP)
|
||
|
|
- ✅ Reward choice (select one of multiple rewards)
|
||
|
|
- ✅ Accept button
|
||
|
|
- ✅ Decline button
|
||
|
|
|
||
|
|
### Vendor Window
|
||
|
|
- ✅ Vendor item list with icons
|
||
|
|
- ✅ Item prices (gold/silver/copper)
|
||
|
|
- ✅ Buy button per item
|
||
|
|
- ✅ Sell tab (your items)
|
||
|
|
- ✅ Buyback tab (TODO)
|
||
|
|
- ✅ Close button
|
||
|
|
|
||
|
|
### Loot Window
|
||
|
|
- ✅ Loot item list with icons
|
||
|
|
- ✅ Item names and quantities
|
||
|
|
- ✅ Gold display
|
||
|
|
- ✅ Click to loot individual items
|
||
|
|
- ✅ Auto-close when empty
|
||
|
|
|
||
|
|
### Gossip Window
|
||
|
|
- ✅ NPC dialogue text
|
||
|
|
- ✅ Gossip option buttons
|
||
|
|
- ✅ Quest links
|
||
|
|
- ✅ Vendor button
|
||
|
|
- ✅ Trainer button
|
||
|
|
- ✅ Close button
|
||
|
|
|
||
|
|
### Talent Window (Placeholder)
|
||
|
|
- ✅ Talent tree visualization (TODO)
|
||
|
|
- ✅ Talent point allocation (TODO)
|
||
|
|
- ✅ Close button
|
||
|
|
|
||
|
|
### Settings Window
|
||
|
|
- ✅ UI opacity slider
|
||
|
|
- ✅ Graphics options (TODO)
|
||
|
|
- ✅ Audio volume controls (TODO)
|
||
|
|
- ✅ Keybinding customization (TODO)
|
||
|
|
- ✅ Close button
|
||
|
|
|
||
|
|
### Loading Screen
|
||
|
|
- ✅ Progress bar with percentage
|
||
|
|
- ✅ Map name display (TODO)
|
||
|
|
- ✅ Loading tips (TODO)
|
||
|
|
- ✅ Background image (TODO)
|
||
|
|
|
||
|
|
### Performance HUD (F1)
|
||
|
|
- ✅ FPS counter
|
||
|
|
- ✅ Frame time (ms)
|
||
|
|
- ✅ Draw calls
|
||
|
|
- ✅ Triangle count
|
||
|
|
- ✅ GPU usage %
|
||
|
|
- ✅ Memory usage
|
||
|
|
- ✅ Network stats (TODO)
|
||
|
|
|
||
|
|
### Minimap
|
||
|
|
- ✅ Player position indicator
|
||
|
|
- ✅ Player direction arrow
|
||
|
|
- ✅ Quest markers (! and ?)
|
||
|
|
- ✅ Zoom levels (TODO)
|
||
|
|
- ✅ Zone name (TODO)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Network & Authentication
|
||
|
|
|
||
|
|
### Connection
|
||
|
|
- ✅ TCP socket abstraction
|
||
|
|
- ✅ Non-blocking I/O
|
||
|
|
- ✅ Packet framing (6-byte outgoing, 4-byte incoming headers)
|
||
|
|
- ✅ Automatic reconnection
|
||
|
|
- ✅ Connection status tracking
|
||
|
|
|
||
|
|
### Authentication (Port 3724)
|
||
|
|
- ✅ SRP6a protocol implementation
|
||
|
|
- ✅ LOGON_CHALLENGE packet
|
||
|
|
- ✅ LOGON_PROOF packet
|
||
|
|
- ✅ Session key generation (40 bytes)
|
||
|
|
- ✅ SHA1 hashing (OpenSSL)
|
||
|
|
- ✅ Big integer arithmetic
|
||
|
|
- ✅ Salt and verifier calculation
|
||
|
|
- ✅ Realm list retrieval
|
||
|
|
|
||
|
|
### World Server (Port 8085)
|
||
|
|
- ✅ SMSG_AUTH_CHALLENGE / CMSG_AUTH_SESSION
|
||
|
|
- ✅ RC4 header encryption
|
||
|
|
- ✅ 100+ packet types implemented
|
||
|
|
- ✅ Packet batching (multiple per frame)
|
||
|
|
- ✅ Opcode handling for WoW 3.3.5a (build 12340)
|
||
|
|
|
||
|
|
### Implemented Packets (Partial List)
|
||
|
|
- ✅ Character enumeration (SMSG_CHAR_ENUM)
|
||
|
|
- ✅ Character creation (CMSG_CHAR_CREATE)
|
||
|
|
- ✅ Character deletion (CMSG_CHAR_DELETE)
|
||
|
|
- ✅ Player login (CMSG_PLAYER_LOGIN)
|
||
|
|
- ✅ Movement (CMSG_MOVE_*)
|
||
|
|
- ✅ Chat messages (CMSG_MESSAGECHAT, SMSG_MESSAGECHAT)
|
||
|
|
- ✅ Quest packets (CMSG_QUESTGIVER_*, SMSG_QUESTGIVER_*)
|
||
|
|
- ✅ Vendor packets (CMSG_LIST_INVENTORY, CMSG_BUY_ITEM, CMSG_SELL_ITEM)
|
||
|
|
- ✅ Loot packets (CMSG_LOOT, CMSG_LOOT_MONEY)
|
||
|
|
- ✅ Spell packets (CMSG_CAST_SPELL, SMSG_SPELL_GO)
|
||
|
|
- ✅ Inventory packets (CMSG_SWAP_INV_ITEM, CMSG_AUTOEQUIP_ITEM)
|
||
|
|
- ✅ Gossip packets (CMSG_GOSSIP_HELLO, SMSG_GOSSIP_MESSAGE)
|
||
|
|
- ✅ Combat packets (CMSG_ATTACKSWING, SMSG_ATTACKERSTATEUPDATE)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Asset Pipeline
|
||
|
|
|
||
|
|
### MPQ Archives
|
||
|
|
- ✅ StormLib integration
|
||
|
|
- ✅ Priority-based file loading (patches override base files)
|
||
|
|
- ✅ Locale support (enUS, enGB, deDE, frFR, etc.)
|
||
|
|
- ✅ File existence checking
|
||
|
|
- ✅ Data extraction with caching
|
||
|
|
|
||
|
|
### BLP Textures
|
||
|
|
- ✅ BLP format parser
|
||
|
|
- ✅ DXT1 decompression (opaque textures)
|
||
|
|
- ✅ DXT3 decompression (sharp alpha)
|
||
|
|
- ✅ DXT5 decompression (gradient alpha)
|
||
|
|
- ✅ Mipmap extraction
|
||
|
|
- ✅ OpenGL texture object creation
|
||
|
|
- ✅ Texture caching
|
||
|
|
|
||
|
|
### M2 Models
|
||
|
|
- ✅ M2 format parser (WotLK version)
|
||
|
|
- ✅ Vertex data (position, normal, texcoord, bone weights)
|
||
|
|
- ✅ Skeletal animation (256 bones max)
|
||
|
|
- ✅ Animation sequences (idle, walk, run, attack, etc.)
|
||
|
|
- ✅ Bone hierarchies and transforms
|
||
|
|
- ✅ Particle emitters (FBlock format)
|
||
|
|
- ✅ Render batches (multiple materials)
|
||
|
|
- ✅ Geosets (show/hide body parts)
|
||
|
|
- ✅ Attachment points (weapons, helmets, etc.)
|
||
|
|
- ✅ Texture animations
|
||
|
|
- ✅ Blend modes (opaque, alpha, additive, modulate)
|
||
|
|
|
||
|
|
### WMO Buildings
|
||
|
|
- ✅ WMO format parser
|
||
|
|
- ✅ Group-based rendering
|
||
|
|
- ✅ Multi-material batches
|
||
|
|
- ✅ Portal system (visibility culling)
|
||
|
|
- ✅ Doodad placement (decorative objects)
|
||
|
|
- ✅ Liquid data (indoor water)
|
||
|
|
- ✅ Vertex colors
|
||
|
|
- ✅ Distance culling (160 units)
|
||
|
|
|
||
|
|
### ADT Terrain
|
||
|
|
- ✅ ADT format parser
|
||
|
|
- ✅ 64x64 tile grid per continent
|
||
|
|
- ✅ 16x16 chunks per tile (MCNK)
|
||
|
|
- ✅ Height maps (9x9 + 8x8 vertices)
|
||
|
|
- ✅ Texture layers (up to 4 per chunk)
|
||
|
|
- ✅ Alpha blending between layers
|
||
|
|
- ✅ Liquid data (water, lava, slime)
|
||
|
|
- ✅ Terrain holes
|
||
|
|
- ✅ Object placement (M2 and WMO references)
|
||
|
|
- ✅ Async loading (prevents frame stalls)
|
||
|
|
|
||
|
|
### DBC Databases
|
||
|
|
- ✅ DBC format parser
|
||
|
|
- ✅ 20+ DBC files loaded at startup
|
||
|
|
- ✅ String block parsing
|
||
|
|
- ✅ Type-safe record access
|
||
|
|
|
||
|
|
**Loaded DBC Files:**
|
||
|
|
- ✅ Spell.dbc - Spell data
|
||
|
|
- ✅ SpellIcon.dbc - Spell icons
|
||
|
|
- ✅ Item.dbc - Item definitions
|
||
|
|
- ✅ ItemDisplayInfo.dbc - Item icons and models
|
||
|
|
- ✅ CreatureDisplayInfo.dbc - Creature appearances
|
||
|
|
- ✅ CreatureModelData.dbc - Creature model data
|
||
|
|
- ✅ ChrClasses.dbc - Class information
|
||
|
|
- ✅ ChrRaces.dbc - Race information
|
||
|
|
- ✅ SkillLine.dbc - Skill categories
|
||
|
|
- ✅ SkillLineAbility.dbc - Spell-to-skill mapping
|
||
|
|
- ✅ Faction.dbc - Faction and reputation data
|
||
|
|
- ✅ Map.dbc - Map definitions
|
||
|
|
- ✅ AreaTable.dbc - Zone and area names
|
||
|
|
- ✅ And more...
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Audio Features
|
||
|
|
|
||
|
|
### Music System
|
||
|
|
- ✅ Background music playback (FFmpeg)
|
||
|
|
- ✅ Music looping
|
||
|
|
- ✅ Zone-specific music (TODO)
|
||
|
|
- ✅ Combat music (TODO)
|
||
|
|
|
||
|
|
### Sound Effects
|
||
|
|
- ✅ Footstep sounds
|
||
|
|
- ✅ Surface-dependent footsteps (grass, stone, metal, etc.)
|
||
|
|
- ✅ Combat sounds (sword swing, spell cast)
|
||
|
|
- ✅ UI sounds (button clicks, window open/close)
|
||
|
|
- ✅ Environmental sounds (TODO)
|
||
|
|
|
||
|
|
### Audio Management
|
||
|
|
- ✅ FFmpeg integration
|
||
|
|
- ✅ Multiple audio channels
|
||
|
|
- ✅ Volume control (TODO - settings screen)
|
||
|
|
- ✅ 3D positional audio (TODO)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Developer Tools
|
||
|
|
|
||
|
|
### Debug HUD (F1)
|
||
|
|
- ✅ FPS and frame time
|
||
|
|
- ✅ Draw call count
|
||
|
|
- ✅ Triangle count
|
||
|
|
- ✅ GPU usage
|
||
|
|
- ✅ Memory usage
|
||
|
|
- ✅ Camera position
|
||
|
|
- ✅ Player position
|
||
|
|
- ✅ Current map and zone
|
||
|
|
|
||
|
|
### Rendering Debug
|
||
|
|
- ✅ F2: Wireframe mode toggle
|
||
|
|
- ✅ F9: Pause time progression
|
||
|
|
- ✅ F10: Toggle sun/moon visibility
|
||
|
|
- ✅ F11: Toggle star field
|
||
|
|
- ✅ +/-: Manual time control
|
||
|
|
- ✅ C: Toggle clouds
|
||
|
|
- ✅ L: Toggle lens flare
|
||
|
|
- ✅ W: Cycle weather (None/Rain/Snow)
|
||
|
|
|
||
|
|
### Entity Spawning
|
||
|
|
- ✅ K: Spawn test character (M2 model)
|
||
|
|
- ✅ J: Remove test character
|
||
|
|
- ✅ O: Spawn test building (WMO)
|
||
|
|
- ✅ P: Clear all spawned WMOs
|
||
|
|
|
||
|
|
### Logging System
|
||
|
|
- ✅ Multi-level logging (DEBUG, INFO, WARNING, ERROR, FATAL)
|
||
|
|
- ✅ Timestamp formatting
|
||
|
|
- ✅ File output
|
||
|
|
- ✅ Console output
|
||
|
|
- ✅ Log rotation (truncate on startup)
|
||
|
|
|
||
|
|
### Performance Profiling
|
||
|
|
- ✅ Frame timing
|
||
|
|
- ✅ Draw call tracking
|
||
|
|
- ✅ Memory allocation tracking
|
||
|
|
- ✅ Network packet stats (TODO)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Platform Support
|
||
|
|
|
||
|
|
### Currently Supported
|
||
|
|
- ✅ Linux (primary development platform)
|
||
|
|
- ✅ X11 window system
|
||
|
|
- ✅ OpenGL 3.3 Core Profile
|
||
|
|
|
||
|
|
### Planned Support
|
||
|
|
- ⏳ Windows (via Windows Subsystem)
|
||
|
|
- ⏳ macOS (via MoltenVK for Metal support)
|
||
|
|
- ⏳ Wayland (Linux)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Technical Specifications
|
||
|
|
|
||
|
|
### Graphics
|
||
|
|
- **API**: OpenGL 3.3 Core Profile
|
||
|
|
- **Shaders**: GLSL 330
|
||
|
|
- **Rendering**: Forward rendering with post-processing
|
||
|
|
- **Shadow Maps**: 2048x2048 resolution
|
||
|
|
- **Particles**: 2000 max simultaneous (weather)
|
||
|
|
- **Bones**: 256 max per character (GPU skinning)
|
||
|
|
|
||
|
|
### Performance
|
||
|
|
- **Target FPS**: 60 (VSync enabled)
|
||
|
|
- **Typical Draw Calls**: 30-50 per frame
|
||
|
|
- **Typical Triangles**: 50,000-100,000 per frame
|
||
|
|
- **GPU Usage**: <10% on modern GPUs
|
||
|
|
- **Memory**: ~500MB-1GB (depends on loaded assets)
|
||
|
|
|
||
|
|
### Network
|
||
|
|
- **Protocol**: WoW 3.3.5a (build 12340)
|
||
|
|
- **Auth Port**: 3724
|
||
|
|
- **World Port**: 8085 (configurable)
|
||
|
|
- **Encryption**: RC4 (header encryption)
|
||
|
|
- **Authentication**: SRP6a
|
||
|
|
|
||
|
|
### Asset Requirements
|
||
|
|
- **WoW Version**: 3.3.5a (build 12340)
|
||
|
|
- **MPQ Files**: common.MPQ, expansion.MPQ, lichking.MPQ, patch*.MPQ
|
||
|
|
- **Locale**: enUS (or other supported locales)
|
||
|
|
- **Total Size**: ~15-20GB of game data
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Compatibility
|
||
|
|
|
||
|
|
### Server Compatibility
|
||
|
|
- ✅ TrinityCore (3.3.5a branch)
|
||
|
|
- ✅ MaNGOS (WotLK)
|
||
|
|
- ✅ AzerothCore
|
||
|
|
- ✅ CMaNGOS (WotLK)
|
||
|
|
|
||
|
|
### Build Systems
|
||
|
|
- ✅ CMake 3.15+
|
||
|
|
- ✅ GCC 7+ (C++17 support required)
|
||
|
|
- ✅ Clang 6+ (C++17 support required)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Last Updated**: Based on commit `06fe167` - February 2026
|
||
|
|
|
||
|
|
For detailed change history, see [CHANGELOG.md](CHANGELOG.md).
|
||
|
|
For architecture details, see [docs/architecture.md](docs/architecture.md).
|
||
|
|
For quick start guide, see [docs/quickstart.md](docs/quickstart.md).
|