Update documentation to reflect current implementation and features

- Expand README.md with complete feature list (quests, vendors, combat, spells, inventory, etc.)
- Update Controls section with comprehensive keybindings organized by category
- Rewrite docs/quickstart.md from "TODO" state to reflect all working features
- Enhance docs/architecture.md with detailed system descriptions and current capabilities
- Add CHANGELOG.md documenting 50+ recent commits grouped by feature area
- Add FEATURES.md with 100+ documented features across 8 major categories
- Update technical details with architecture, networking, and asset loading info
This commit is contained in:
kelsi davis 2026-02-06 22:39:45 -08:00
parent 5cc3d9645c
commit 3079b69ba8
5 changed files with 1321 additions and 206 deletions

View file

@ -7,21 +7,44 @@ A native C++ client for World of Warcraft 3.3.5a (Wrath of the Lich King) with a
## Features
### Rendering Engine
- **Terrain** -- Multi-tile streaming, texture splatting (4 layers), frustum culling
- **Terrain** -- Multi-tile streaming with async loading, texture splatting (4 layers), frustum culling
- **Water** -- Animated surfaces, reflections, refractions, Fresnel effect
- **Sky** -- Dynamic day/night cycle, sun/moon with orbital movement
- **Stars** -- 1000+ procedurally placed stars (night-only)
- **Atmosphere** -- Procedural clouds (FBM noise), lens flare with chromatic aberration
- **Moon Phases** -- 8 realistic lunar phases with elliptical terminator
- **Weather** -- Rain and snow particle systems (2000 particles, camera-relative)
- **Characters** -- Skeletal animation with GPU vertex skinning (256 bones)
- **Buildings** -- WMO renderer with multi-material batches, frustum culling, real MPQ loading
- **Characters** -- Skeletal animation with GPU vertex skinning (256 bones), race-aware textures
- **Buildings** -- WMO renderer with multi-material batches, frustum culling, 160-unit distance culling
- **Particles** -- M2 particle emitters with WotLK struct parsing, billboarded glow effects
- **Post-Processing** -- HDR, tonemapping, shadow mapping (2048x2048)
### Asset Pipeline
- **MPQ** archive extraction (StormLib), **BLP** DXT1/3/5 textures, **ADT** terrain tiles, **M2** character models, **WMO** buildings, **DBC** database files
- **MPQ** archive extraction (StormLib), **BLP** DXT1/3/5 textures, **ADT** terrain tiles, **M2** character models with animations, **WMO** buildings, **DBC** database files (Spell, Item, SkillLine, Faction, etc.)
### Networking
- TCP sockets, SRP6 authentication, world server protocol, RC4 encryption, packet serialization
### Gameplay Systems
- **Authentication** -- Full SRP6a implementation with RC4 header encryption
- **Character System** -- Creation, selection, 3D preview, stats panel, race/class support
- **Movement** -- WASD movement, camera orbit, spline path following
- **Combat** -- Auto-attack, spell casting with cooldowns, damage calculation, death handling
- **Targeting** -- Tab-cycling, click-to-target, faction-based hostility (using Faction.dbc)
- **Inventory** -- 23 equipment slots, 16 backpack slots, drag-drop, auto-equip
- **Spells** -- Spellbook with class specialty tabs, drag-drop to action bar, spell icons
- **Action Bar** -- 12 slots, drag-drop from spellbook/inventory, click-to-cast, keybindings
- **Quests** -- Quest markers (! and ?) on NPCs and minimap, quest log, quest details, turn-in flow
- **Vendors** -- Buy and sell items, gold tracking, inventory sync
- **Loot** -- Loot window, gold looting, item pickup
- **Gossip** -- NPC interaction, dialogue options
- **Chat** -- SAY, YELL, WHISPER, chat window with formatting
- **Party** -- Group invites, party list
- **UI** -- Loading screens with progress bar, settings window with opacity slider
### Single-Player Mode
- Offline play without server connection
- Local character persistence (SQLite)
- Simulated XP and combat
- Local item management
- Settings persistence
## Building
@ -77,11 +100,34 @@ make -j$(nproc)
## Controls
### Camera & Movement
| Key | Action |
|-----|--------|
| WASD | Move camera |
| Mouse | Look around |
| WASD | Move camera / character |
| Mouse | Look around / orbit camera |
| Shift | Move faster |
| Mouse Left Click | Target entity / interact |
| Tab | Cycle targets |
### UI & Windows
| Key | Action |
|-----|--------|
| I | Toggle inventory |
| P | Toggle spellbook |
| L | Toggle quest log |
| Enter | Open chat |
| Escape | Close windows / deselect |
### Action Bar
| Key | Action |
|-----|--------|
| 1-9, 0, -, = | Use action bar slots 1-12 |
| Drag & Drop | Spells from spellbook, items from inventory |
| Click | Cast spell / use item |
### Debug & Development
| Key | Action |
|-----|--------|
| F1 | Performance HUD |
| F2 | Wireframe mode |
| F9 | Toggle time progression |
@ -96,8 +142,13 @@ make -j$(nproc)
## Documentation
### Getting Started
- [Quick Start](docs/quickstart.md) -- Installation and first steps
- [Features Overview](FEATURES.md) -- Complete feature list
- [Changelog](CHANGELOG.md) -- Development history and recent changes
### Technical Documentation
- [Architecture](docs/architecture.md) -- System design and module overview
- [Quick Start](docs/quickstart.md) -- Getting started guide
- [Authentication](docs/authentication.md) -- SRP6 auth protocol details
- [Server Setup](docs/server-setup.md) -- Local server configuration
- [Single Player](docs/single-player.md) -- Offline mode
@ -107,10 +158,13 @@ make -j$(nproc)
## Technical Details
- **Graphics**: OpenGL 3.3 Core, GLSL 330, forward rendering
- **Graphics**: OpenGL 3.3 Core, GLSL 330, forward rendering with post-processing
- **Performance**: 60 FPS (vsync), ~50k triangles/frame, ~30 draw calls, <10% GPU
- **Platform**: Linux (primary), C++17, CMake 3.15+
- **Dependencies**: SDL2, OpenGL/GLEW, GLM, OpenSSL, StormLib, ImGui
- **Dependencies**: SDL2, OpenGL/GLEW, GLM, OpenSSL, StormLib, ImGui, SQLite3, FFmpeg
- **Architecture**: Modular design with clear separation (core, rendering, networking, game logic, asset pipeline, UI, audio)
- **Networking**: Non-blocking TCP, SRP6a authentication, RC4 encryption, WoW 3.3.5a protocol
- **Asset Loading**: Async terrain streaming, lazy loading, MPQ archive support
## License