diff --git a/BUILD_INSTRUCTIONS.md b/BUILD_INSTRUCTIONS.md index 987d5515..0366e067 100644 --- a/BUILD_INSTRUCTIONS.md +++ b/BUILD_INSTRUCTIONS.md @@ -51,7 +51,7 @@ sudo pacman -S --needed \ ## 2. Clone + Prepare ```bash -git clone git@github.com:Kelsidavis/wowee.git +git clone https://github.com/Kelsidavis/WoWee.git cd wowee git clone https://github.com/ocornut/imgui.git extern/imgui ``` diff --git a/README.md b/README.md index a6f3fd32..42cb3c6c 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Alternatively, set the `WOW_DATA_PATH` environment variable to point to your WoW ### Compile & Run ```bash -git clone https://github.com/yourname/wowee.git +git clone https://github.com/Kelsidavis/WoWee.git cd wowee # Get ImGui (required) diff --git a/docs/architecture.md b/docs/architecture.md index 879c3663..5aafd0e4 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -157,7 +157,7 @@ Wowee follows a modular architecture with clear separation of concerns: - Race, class, gender, appearance - Creation and customization - 3D model preview -- Persistence (online and offline) +- Online character lifecycle and state synchronization **Entity** - Game entities - NPCs and creatures with display info @@ -172,7 +172,7 @@ Wowee follows a modular architecture with clear separation of concerns: - Drag-drop system - Auto-equip and unequip -**NPCManager** - NPC interactions +**NPC Interactions** - handled through `GameHandler` - Gossip system - Quest givers with markers (! and ?) - Vendors (buy/sell) @@ -256,7 +256,6 @@ Wowee follows a modular architecture with clear separation of concerns: **AuthScreen** - Login interface - Username/password input fields - Server address configuration -- "Single Player" offline mode button - Connection status and error messages **RealmScreen** - Server selection @@ -500,8 +499,7 @@ Currently hardcoded, future config system: - Visual verification of rendering (terrain, water, models, particles) - Performance profiling (F1 performance HUD) - Memory leak checking (valgrind) -- Online gameplay against TrinityCore/MaNGOS servers -- Single-player mode functionality +- Online gameplay against AzerothCore/TrinityCore/MaNGOS servers - UI interactions (drag-drop, click events) **Current Test Coverage:** @@ -530,7 +528,7 @@ Currently hardcoded, future config system: ## Code Style -- **C++17 standard** +- **C++20 standard** - **Namespaces:** wowee::core, wowee::rendering, etc. - **Naming:** PascalCase for classes, camelCase for functions/variables - **Headers:** .hpp extension diff --git a/docs/quickstart.md b/docs/quickstart.md index b1fee076..1c25cfbe 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -2,253 +2,83 @@ ## Current Status -Wowee is a **fully functional native C++ World of Warcraft 3.3.5a client**! The application includes: +Wowee is a native C++ World of Warcraft 3.3.5a client focused on online multiplayer. -✅ Complete SRP6a authentication system -✅ Character creation and selection -✅ Full 3D rendering engine (terrain, water, sky, characters, buildings, particles) -✅ Online multiplayer gameplay (movement, combat, spells, inventory, quests) -✅ Offline single-player mode -✅ Comprehensive UI system (action bar, spellbook, inventory, quest log, chat) -✅ Asset pipeline for all WoW formats (MPQ, BLP, M2, ADT, WMO, DBC) +Implemented today: -## Quick Start +- SRP6a authentication + world connection +- Character creation/selection and in-world entry +- Full 3D rendering pipeline (terrain, water, sky, M2/WMO, particles) +- Core gameplay systems (movement, combat, spells, inventory, quests, vendors, loot, chat) +- Transport support (boats/zeppelins) with active ongoing fixes -### Prerequisites +## Build And Run -Ensure you have all dependencies installed (see main README.md for details). - -### Build & Run +### 1. Clone ```bash -# Clone the repository -git clone https://github.com/yourname/wowee.git +git clone https://github.com/Kelsidavis/WoWee.git cd wowee - -# Get ImGui (required) -git clone https://github.com/ocornut/imgui.git extern/imgui - -# Set up game data (see "Game Data" section in README.md) -# Either symlink Data/ directory or set WOW_DATA_PATH environment variable - -# Build -mkdir build && cd build -cmake .. -make -j$(nproc) - -# Run -./bin/wowee ``` -## What Works Right Now +### 2. Install ImGui -### Authentication & Character Selection -- Login with username and password -- Realm selection with population info -- Character list with 3D preview -- Character creation (all races and classes) -- Enter world seamlessly - -### In-Game Gameplay -- **Movement**: WASD movement with camera orbit -- **Combat**: Auto-attack, spell casting, damage calculation -- **Targeting**: Click-to-target, tab-cycling, faction-based hostility -- **Inventory**: Full equipment and backpack system with drag-drop -- **Spells**: Spellbook organized by class specialties, drag-drop to action bar -- **Quests**: Quest markers on NPCs and minimap, quest log, quest details, turn-in -- **Vendors**: Buy and sell items with gold tracking -- **Loot**: Loot window for items and gold -- **Chat**: Send and receive chat messages (SAY, YELL, WHISPER) -- **NPCs**: Gossip interactions, animations - -### Rendering -- Multi-tile terrain streaming with async loading -- Animated water with reflections and refractions -- Dynamic day/night cycle with sun and moon -- Procedural star field (1000+ stars) -- Volumetric clouds with FBM noise -- Weather effects (rain and snow) -- Skeletal character animations (256 bones, GPU skinning) -- Building rendering (WMO) with frustum culling -- M2 particle emitters -- Post-processing (HDR, tonemapping, shadow mapping) - -### Single-Player Mode -- Play offline without a server connection -- Local character persistence -- Simulated combat and XP -- Settings persistence - -## Common Tasks - -### Connecting to a Server - -1. Launch wowee: `./bin/wowee` -2. Enter your username and password -3. Enter the auth server address (default: `localhost`) -4. Click "Login" -5. Select your realm from the list -6. Select or create a character -7. Click "Enter World" - -### Single-Player Mode - -1. Launch wowee -2. Click "Single Player" on the auth screen -3. Create or select a character -4. Play offline without a server connection - -### Playing the Game - -**Movement**: -- WASD to move -- Mouse to look around / orbit camera -- Shift for sprint - -**Combat**: -- Left-click to target enemies -- Tab to cycle targets -- 1-9, 0, -, = to use action bar abilities -- Drag spells from spellbook (P) to action bar - -**Inventory**: -- Press I to open inventory -- Drag items to equipment slots to equip -- Drag items to vendors to sell -- Drag items to action bar to use - -**Quests**: -- Click NPCs with ! marker to get quests -- Press L to view quest log -- Click NPCs with ? marker to turn in quests -- Quest markers appear on minimap - -**Chat**: -- Press Enter to open chat -- Type message and press Enter to send -- Chat commands: /say, /yell, /whisper [name] - -### Development & Debugging - -**Performance Monitoring**: -- Press F1 to toggle performance HUD -- Shows FPS, draw calls, triangle count, GPU usage - -**Rendering Debug**: -- F2: Toggle wireframe mode -- F9: Toggle time progression -- F10: Toggle sun/moon -- F11: Toggle stars -- +/-: Manual time control -- C: Toggle clouds -- L: Toggle lens flare -- W: Cycle weather - -**Settings**: -- Settings window available in-game -- Adjust UI opacity -- Configure graphics options - -### Advanced Configuration - -**Environment Variables**: ```bash -# Set custom WoW data path -export WOW_DATA_PATH="/path/to/WoW-3.3.5a/Data" - -# Run with custom data path -WOW_DATA_PATH="/path/to/data" ./bin/wowee +git clone https://github.com/ocornut/imgui.git extern/imgui ``` -**Server Configuration**: -Edit auth server address in the login screen or configure default in Application settings. +### 3. Build + +```bash +cmake -S . -B build -DCMAKE_BUILD_TYPE=Release +cmake --build build -j"$(nproc)" +``` + +### 4. Provide WoW Data + +Put your legal WoW 3.3.5a data in `Data/` (or set `WOW_DATA_PATH`). + +### 5. Run + +```bash +./build/bin/wowee +``` + +## Connect To A Server + +1. Launch `./build/bin/wowee` +2. Enter account credentials +3. Set auth server address (default: `localhost`) +4. Login, pick realm, pick character, enter world + +For local AzerothCore setup, see `docs/server-setup.md`. + +## Useful Controls + +- `WASD`: Move +- `Mouse`: Look/orbit camera +- `Tab`: Cycle targets +- `1-9,0,-,=`: Action bar slots +- `I`: Inventory +- `P`: Spellbook +- `L`: Quest log +- `Enter`: Chat +- `F1`: Performance HUD +- `F2`: Wireframe ## Troubleshooting -### Connection Issues +### Build fails on missing dependencies -**Problem**: Cannot connect to authentication server -- Check that the auth server is running and reachable -- Verify the server address and port (default: 3724) -- Check firewall settings +Use `BUILD_INSTRUCTIONS.md` for distro-specific package lists. -**Problem**: Disconnected during gameplay -- Network timeout or unstable connection -- Check server logs for errors -- Application will return to authentication screen +### Client cannot connect -### Rendering Issues +- Verify auth/world server is running +- Check host/port settings +- Check server logs and client logs in `build/bin/logs/` -**Problem**: Low FPS or stuttering -- Press F1 to check performance stats -- Reduce graphics settings in settings window -- Check GPU driver version +### Missing assets (models/textures/terrain) -**Problem**: Missing textures or models -- Verify all WoW 3.3.5a MPQ files are present in Data/ directory -- Check that Data/ path is correct (or WOW_DATA_PATH is set) -- Look for errors in console output - -**Problem**: Terrain not loading -- Async terrain streaming may take a moment -- Check for MPQ read errors in console -- Verify ADT files exist for the current map - -### Gameplay Issues - -**Problem**: Cannot interact with NPCs -- Ensure you're within interaction range (5-10 yards) -- Check that NPC is not in combat -- Left-click to target NPC first - -**Problem**: Spells not working -- Check that you have enough mana/rage/energy -- Verify spell is on cooldown (check action bar) -- Ensure you have a valid target (for targeted spells) - -**Problem**: Items not equipping -- Check that item is for your class -- Verify you meet level requirements -- Ensure equipment slot is not already occupied (or drag to replace) - -### Performance Notes - -Default configuration: -- **VSync:** Enabled (60 FPS cap) -- **Resolution:** 1920x1080 (configurable in Application settings) -- **OpenGL:** 3.3 Core Profile -- **Shadow Map:** 2048x2048 resolution -- **Particles:** 2000 max (weather), emitter-dependent (M2) - -Optimization tips: -- Frustum culling automatically enabled -- Terrain streaming loads chunks as needed -- WMO distance culling at 160 units -- Async terrain loading prevents frame stalls - -## Useful Resources - -- **WoWDev Wiki:** https://wowdev.wiki/ - File formats and protocol documentation -- **TrinityCore:** https://github.com/TrinityCore/TrinityCore - Server reference implementation -- **MaNGOS:** https://github.com/cmangos/mangos-wotlk - Alternative server reference -- **StormLib:** https://github.com/ladislav-zezula/StormLib - MPQ library documentation -- **ImGui:** https://github.com/ocornut/imgui - UI framework - -## Known Issues - -- **Stormwind Mage Quarter**: Water overflows near Moonwell area (geometry constraint issue) -- **Particle emitters**: Some complex emitters may have minor visual glitches -- **Hair textures**: Occasional texture resolution on some race/gender combinations - -See GitHub issues for full list and tracking. - -## Getting Help - -1. Check console output for error messages (use `LOG_DEBUG` builds for verbose output) -2. Consult WoWDev Wiki for protocol and format specifications -3. Review Architecture documentation for system design -4. Report bugs on GitHub issue tracker - ---- - -**Enjoy playing WoW with a native C++ client!** 🎮 +- Verify WoW data files exist under `Data/` +- Or export `WOW_DATA_PATH=/path/to/WoW/Data`