Kelsidavis-WoWee/CHANGELOG.md
kelsi davis 99d5f9a33a Remove single-player mode to focus on multiplayer
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.
2026-02-06 23:52:16 -08:00

9.5 KiB

Changelog

All notable changes to the Wowee project are documented here.

Recent Development (2024-2026)

Architecture Changes

  • Removed single-player mode: Removed offline/single-player functionality to focus exclusively on multiplayer. This includes removal of SQLite persistence, local combat simulation, and all single-player UI elements.

Quest System

  • Quest markers: Added ! (quest available) and ? (quest complete) markers above NPCs
  • Minimap integration: Quest markers now appear on minimap for easy navigation
  • Quest log: Full quest log UI with objectives, progress tracking, and rewards
  • Quest details dialog: Rich quest details window with description and objectives
  • Quest turn-in flow: Complete quest workflow from accept to turn-in with reward selection
  • Quest giver status: Automatic CMSG_QUESTGIVER_STATUS_QUERY when NPCs spawn
  • Status re-query: Re-query quest status after accepting or completing quests

Spellbook & Action Bar

  • Class specialty tabs: Spellbook organized by SkillLine specialties using SkillLine.dbc and SkillLineAbility.dbc
  • General tab: Separate tab for universal spells
  • Spell icons: Loaded from SpellIcon.dbc with proper rendering
  • Drag-drop system: Drag spells from spellbook to action bar slots
  • Click-to-cast: Click action bar slots to cast spells
  • Spell targeting: Proper spell targeting implementation
  • Error messages: Clear error messages for spell cast failures
  • Cooldown tracking: Visual cooldown indicators on action bar
  • Keybindings: 1-9, 0, -, = for quick action bar access
  • Window behavior: Fixed spellbook window dragging and escape-from-bounds issues

Inventory & Equipment

  • Equipment slots: 23 slots (head, shoulders, chest, legs, feet, wrist, hands, waist, back, mainhand, offhand, ranged, etc.)
  • Backpack: 16-slot backpack storage
  • Item icons: Loaded from ItemDisplayInfo.dbc
  • Drag-drop: Drag items between inventory, equipment, and action bar
  • Auto-equip: Automatic equipment slot detection and equipping
  • Item tooltips: Rich tooltips with item stats and information
  • Online sync: Proper GUID resolution and inventory enrichment
  • Slot mapping: Fixed online equipment slot mapping and backpack offsets

Vendor System

  • Buy items: Purchase items from vendors with gold
  • Sell items: Sell items back to vendors (online and offline)
  • Gold tracking: Proper coinage field (PLAYER_FIELD_COINAGE at index 1170)
  • Inventory errors: Handle sell/inventory errors gracefully
  • UI improvements: Clean vendor interface with item lists

Loot System

  • Loot window: Visual loot window with item icons
  • Gold looting: CMSG_LOOT_MONEY packet for online gold pickup
  • Item pickup: Automatic item transfer to inventory
  • Corpse looting: Loot from defeated enemies

Combat System

  • Auto-attack: Automatic attack on targeted enemies
  • Spell casting: Full spell casting with resource costs (mana/rage/energy)
  • Attack animations: Proper NPC and player attack animations
  • Damage calculation: Server-side damage processing
  • Death handling: Player death, corpse creation, resurrection
  • Faction hostility: Faction.dbc-based hostility using base reputation
  • Race-aware factions: Proper faction checking for all player races
  • Neutral-flagged hostile: Support for neutral-flagged hostile mobs (Monster faction group)
  • Level-based coloring: WoW-canonical mob level colors (gray, green, yellow, orange, red)

Character System

  • Character creation: Full creation flow with race, class, gender, appearance
  • Character screen: 3D animated character preview
  • Stats panel: Display level, race, class, location on character screen
  • Model preview: 3D character model on creation and selection screens
  • All races: Support for all Alliance and Horde races
  • Texture support: Race-aware skin, hair, and feature textures
  • Auto-select: Auto-select single realm or single character
  • Logout cleanup: Clear character state on logout to prevent stale models

M2 Model Rendering

  • Particle emitters: Enabled M2 particle emitters with WotLK struct parsing
  • FBlock format: Correct FBlock format and struct size for particle data
  • Safety caps: Overflow guards and safety caps for emitter parameters
  • Glow rendering: Billboarded light sprites for M2 glow batches
  • Blend modes: Skip additive/mod blend batches for correct rendering
  • Unlit rendering: Unlit shader path for glow and additive batches
  • Lantern glow: Fixed lantern and torch glow rendering

NPCs & Gossip

  • Gossip system: NPC dialogue with options
  • Gossip packets: CMSG_GOSSIP_SELECT_OPTION with proper opcode
  • Duplicate prevention: Clear gossip options before re-parsing
  • Reopen guard: Prevent gossip window conflicts
  • Combat animations: NPCs play combat animations during attacks
  • Creature spawning: Camera intro animation on all creature spawns
  • Display lookups: Pre-load CreatureDisplayInfo DBC at startup

Movement & Navigation

  • WASD movement: Smooth WASD character movement
  • Camera orbit: Mouse-based camera orbit around character
  • Spline movement: Follow server-side spline paths
  • Fall time: Correct movement packet format (unconditional fallTime write)
  • Position updates: Smooth position interpolation
  • Respawn handling: Fixed respawned corpse movement

Terrain & World

  • Async loading: Asynchronous terrain streaming to prevent hang
  • Streaming loop: Fixed terrain streaming loop for continuous loading
  • Multi-tile support: Load multiple ADT tiles simultaneously
  • Auto-load: Load terrain as player moves through world
  • Height maps: Proper height calculation for player positioning

UI Improvements

  • Loading screen: Loading screen with progress bar during world entry
  • Resize handling: Proper resize handling during loading
  • Progress tracking: Visual progress percentage
  • UI opacity: Slider to adjust UI opacity in settings
  • ImGui frame conflict: Fixed ImGui frame management issues
  • Popup positioning: Fixed popup window positioning
  • ID conflicts: Resolved ImGui widget ID conflicts
  • Both-button clicks: Suppress simultaneous left+right mouse clicks
  • Player name display: Fixed player name rendering in UI
  • Target frame: Display targeted entity name, level, health

Chat System

  • Chat window: Scrollable chat window with message history
  • Message formatting: Proper chat message formatting with colors
  • Chat commands: /say, /yell, /whisper support
  • Chat input: Press Enter to open chat, type and send

Minimap

  • Quest markers: Show quest givers and turn-in NPCs
  • Player position: Display player position and direction
  • Zoom: Minimap zoom levels

Rendering Improvements

  • WMO distance cull: Increased WMO group distance cull from 80 to 160 units
  • Hair textures: Fixed hair texture loading and rendering
  • Skin textures: Proper skin color and texture application
  • Action bar icons: Spell and item icons on action bar
  • Targeting visuals: Visual targeting indicators

Network & Protocol

  • Opcode fixes: Corrected loot and gossip opcodes for 3.3.5a
  • Movement packets: Fixed MOVE_* packet format
  • Quest opcodes: Added quest-related opcodes
  • Item queries: Proper CMSG_ITEM_QUERY_SINGLE parsing
  • Sell item packets: CMSG_SELL_ITEM with correct uint32 count

Performance

  • Frame stalls: Eliminated stalls from terrain loading (async)
  • Startup optimization: Load DBC lookups at startup
  • Log truncation: Truncate log file on start to prevent bloat
  • Memory efficiency: Proper cleanup and resource management

Bug Fixes

  • Vendor bugs: Fixed vendor gold calculation and item display
  • Loot bugs: Fixed loot window showing incorrect items
  • Hair bugs: Fixed hair texture selection and rendering
  • Critter hostility: Fixed neutral critters not being attackable
  • Faction bugs: Fixed Monster faction group bit (use 8 not 4)
  • XP calculation: Proper level-based XP from mob kills
  • Respawn bugs: Fixed corpse movement after respawn
  • Camera bugs: Fixed camera orbit and deselect behavior
  • Spell targeting: Fixed spell targeting for ranged abilities
  • Action bar: Fixed drag-drop and right-click removal
  • Character screen: Various character screen display bugs
  • Stale models: Prevent stale player model across logins

Single-Player Mode

  • Offline play: Full offline mode without server
  • Local persistence: SQLite-based character and settings storage
  • Simulated combat: Local XP and damage calculation
  • Settings sync: Save and load settings locally

Future Roadmap

Planned Features

  • Talent system implementation
  • Guild system
  • Auction house
  • Mail system
  • Crafting and professions
  • Achievements
  • Dungeon finder
  • Battlegrounds and PvP
  • Mount system
  • Pet system

Rendering Improvements

  • LOD (Level of Detail) system
  • Improved shadow quality
  • SSAO (Screen Space Ambient Occlusion)
  • Better water caustics
  • Improved particle effects

Performance Optimizations

  • Multi-threaded asset loading
  • Occlusion culling improvements
  • Texture compression
  • Model instancing
  • Shader optimizations

Quality of Life

  • Keybinding customization UI
  • Graphics settings menu
  • Audio volume controls
  • Addon support
  • Macros
  • UI customization

See GitHub commit history for detailed commit messages and technical changes.