mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-25 13:03:50 +00:00
Update docs for current online-only state and new WoWee repo URL
This commit is contained in:
parent
3041767b44
commit
6dfc6c6360
4 changed files with 65 additions and 237 deletions
|
|
@ -51,7 +51,7 @@ sudo pacman -S --needed \
|
||||||
## 2. Clone + Prepare
|
## 2. Clone + Prepare
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone git@github.com:Kelsidavis/wowee.git
|
git clone https://github.com/Kelsidavis/WoWee.git
|
||||||
cd wowee
|
cd wowee
|
||||||
git clone https://github.com/ocornut/imgui.git extern/imgui
|
git clone https://github.com/ocornut/imgui.git extern/imgui
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ Alternatively, set the `WOW_DATA_PATH` environment variable to point to your WoW
|
||||||
### Compile & Run
|
### Compile & Run
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/yourname/wowee.git
|
git clone https://github.com/Kelsidavis/WoWee.git
|
||||||
cd wowee
|
cd wowee
|
||||||
|
|
||||||
# Get ImGui (required)
|
# Get ImGui (required)
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ Wowee follows a modular architecture with clear separation of concerns:
|
||||||
- Race, class, gender, appearance
|
- Race, class, gender, appearance
|
||||||
- Creation and customization
|
- Creation and customization
|
||||||
- 3D model preview
|
- 3D model preview
|
||||||
- Persistence (online and offline)
|
- Online character lifecycle and state synchronization
|
||||||
|
|
||||||
**Entity** - Game entities
|
**Entity** - Game entities
|
||||||
- NPCs and creatures with display info
|
- NPCs and creatures with display info
|
||||||
|
|
@ -172,7 +172,7 @@ Wowee follows a modular architecture with clear separation of concerns:
|
||||||
- Drag-drop system
|
- Drag-drop system
|
||||||
- Auto-equip and unequip
|
- Auto-equip and unequip
|
||||||
|
|
||||||
**NPCManager** - NPC interactions
|
**NPC Interactions** - handled through `GameHandler`
|
||||||
- Gossip system
|
- Gossip system
|
||||||
- Quest givers with markers (! and ?)
|
- Quest givers with markers (! and ?)
|
||||||
- Vendors (buy/sell)
|
- Vendors (buy/sell)
|
||||||
|
|
@ -256,7 +256,6 @@ Wowee follows a modular architecture with clear separation of concerns:
|
||||||
**AuthScreen** - Login interface
|
**AuthScreen** - Login interface
|
||||||
- Username/password input fields
|
- Username/password input fields
|
||||||
- Server address configuration
|
- Server address configuration
|
||||||
- "Single Player" offline mode button
|
|
||||||
- Connection status and error messages
|
- Connection status and error messages
|
||||||
|
|
||||||
**RealmScreen** - Server selection
|
**RealmScreen** - Server selection
|
||||||
|
|
@ -500,8 +499,7 @@ Currently hardcoded, future config system:
|
||||||
- Visual verification of rendering (terrain, water, models, particles)
|
- Visual verification of rendering (terrain, water, models, particles)
|
||||||
- Performance profiling (F1 performance HUD)
|
- Performance profiling (F1 performance HUD)
|
||||||
- Memory leak checking (valgrind)
|
- Memory leak checking (valgrind)
|
||||||
- Online gameplay against TrinityCore/MaNGOS servers
|
- Online gameplay against AzerothCore/TrinityCore/MaNGOS servers
|
||||||
- Single-player mode functionality
|
|
||||||
- UI interactions (drag-drop, click events)
|
- UI interactions (drag-drop, click events)
|
||||||
|
|
||||||
**Current Test Coverage:**
|
**Current Test Coverage:**
|
||||||
|
|
@ -530,7 +528,7 @@ Currently hardcoded, future config system:
|
||||||
|
|
||||||
## Code Style
|
## Code Style
|
||||||
|
|
||||||
- **C++17 standard**
|
- **C++20 standard**
|
||||||
- **Namespaces:** wowee::core, wowee::rendering, etc.
|
- **Namespaces:** wowee::core, wowee::rendering, etc.
|
||||||
- **Naming:** PascalCase for classes, camelCase for functions/variables
|
- **Naming:** PascalCase for classes, camelCase for functions/variables
|
||||||
- **Headers:** .hpp extension
|
- **Headers:** .hpp extension
|
||||||
|
|
|
||||||
|
|
@ -2,253 +2,83 @@
|
||||||
|
|
||||||
## Current Status
|
## 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
|
Implemented today:
|
||||||
✅ 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)
|
|
||||||
|
|
||||||
## 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).
|
### 1. Clone
|
||||||
|
|
||||||
### Build & Run
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone the repository
|
git clone https://github.com/Kelsidavis/WoWee.git
|
||||||
git clone https://github.com/yourname/wowee.git
|
|
||||||
cd wowee
|
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
|
```bash
|
||||||
# Set custom WoW data path
|
git clone https://github.com/ocornut/imgui.git extern/imgui
|
||||||
export WOW_DATA_PATH="/path/to/WoW-3.3.5a/Data"
|
|
||||||
|
|
||||||
# Run with custom data path
|
|
||||||
WOW_DATA_PATH="/path/to/data" ./bin/wowee
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**Server Configuration**:
|
### 3. Build
|
||||||
Edit auth server address in the login screen or configure default in Application settings.
|
|
||||||
|
```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
|
## Troubleshooting
|
||||||
|
|
||||||
### Connection Issues
|
### Build fails on missing dependencies
|
||||||
|
|
||||||
**Problem**: Cannot connect to authentication server
|
Use `BUILD_INSTRUCTIONS.md` for distro-specific package lists.
|
||||||
- Check that the auth server is running and reachable
|
|
||||||
- Verify the server address and port (default: 3724)
|
|
||||||
- Check firewall settings
|
|
||||||
|
|
||||||
**Problem**: Disconnected during gameplay
|
### Client cannot connect
|
||||||
- Network timeout or unstable connection
|
|
||||||
- Check server logs for errors
|
|
||||||
- Application will return to authentication screen
|
|
||||||
|
|
||||||
### 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
|
### Missing assets (models/textures/terrain)
|
||||||
- Press F1 to check performance stats
|
|
||||||
- Reduce graphics settings in settings window
|
|
||||||
- Check GPU driver version
|
|
||||||
|
|
||||||
**Problem**: Missing textures or models
|
- Verify WoW data files exist under `Data/`
|
||||||
- Verify all WoW 3.3.5a MPQ files are present in Data/ directory
|
- Or export `WOW_DATA_PATH=/path/to/WoW/Data`
|
||||||
- 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!** 🎮
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue