mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Removed all single-player/offline mode functionality: - Removed ~2,200 lines of SQLite database code - Removed 11 public SP methods from GameHandler - Removed SP member variables and state flags - Removed SP UI elements (auth screen button, game settings) - Removed SQLite3 build dependency - Deleted docs/single-player.md - Updated documentation (README, FEATURES, CHANGELOG) Files modified: - src/game/game_handler.cpp: 2,852 lines (down from 4,921) - include/game/game_handler.hpp: Removed SP API - src/core/application.cpp/hpp: Removed startSinglePlayer() - src/ui/*: Removed SP UI logic - CMakeLists.txt: Removed SQLite3 All online multiplayer features preserved and tested.
21 KiB
21 KiB
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
- Gameplay Features
- UI Features
- Network & Authentication
- Asset Pipeline
- Audio Features
- 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. For architecture details, see docs/architecture.md. For quick start guide, see docs/quickstart.md.