mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
docs: update README and guides for multi-expansion direction
This commit is contained in:
parent
139a2f39fe
commit
bdedab7c1b
7 changed files with 171 additions and 71 deletions
|
|
@ -89,7 +89,7 @@ Wowee follows a modular architecture with clear separation of concerns:
|
|||
- VAO/VBO/EBO management
|
||||
|
||||
**Texture** - Texture management
|
||||
- Loading (will support BLP format)
|
||||
- Loading (BLP via `AssetManager`, optional PNG overrides for development)
|
||||
- OpenGL texture object
|
||||
- Mipmap generation
|
||||
|
||||
|
|
@ -191,11 +191,14 @@ Wowee follows a modular architecture with clear separation of concerns:
|
|||
|
||||
### 6. Asset Pipeline (`src/pipeline/`)
|
||||
|
||||
**MPQManager** - Archive management
|
||||
- Loads .mpq files (via StormLib)
|
||||
- Priority-based file lookup (patch files override base files)
|
||||
- Data extraction with caching
|
||||
- Locale support (enUS, enGB, etc.)
|
||||
**AssetManager** - Runtime asset access
|
||||
- Loads an extracted loose-file tree indexed by `Data/manifest.json`
|
||||
- Layered resolution via optional overlay manifests (multi-expansion dedup)
|
||||
- File cache + path normalization
|
||||
|
||||
**asset_extract (tool)** - MPQ extraction
|
||||
- Uses StormLib to extract MPQs into `Data/` and generate `manifest.json`
|
||||
- Driven by `extract_assets.sh`
|
||||
|
||||
**BLPLoader** - Texture parser
|
||||
- BLP format (Blizzard texture format)
|
||||
|
|
@ -385,7 +388,7 @@ Window::swapBuffers()
|
|||
```
|
||||
World::loadMap(mapId)
|
||||
↓
|
||||
MPQManager::readFile("World/Maps/{map}/map.adt")
|
||||
AssetManager::readFile("World/Maps/{map}/map.adt")
|
||||
↓
|
||||
ADTLoader::load(adtData)
|
||||
├─ Parse MCNK chunks (terrain)
|
||||
|
|
@ -394,7 +397,7 @@ ADTLoader::load(adtData)
|
|||
└─ Parse MCNR chunks (normals)
|
||||
↓
|
||||
For each texture reference:
|
||||
MPQManager::readFile(texturePath)
|
||||
AssetManager::readFile(texturePath)
|
||||
↓
|
||||
BLPLoader::load(blpData)
|
||||
↓
|
||||
|
|
|
|||
|
|
@ -9,9 +9,11 @@ Implemented today:
|
|||
- 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)
|
||||
- Core gameplay plumbing (movement, combat/spell casting, inventory/equipment, chat)
|
||||
- Transport support (boats/zeppelins) with active ongoing fixes
|
||||
|
||||
For a more honest snapshot of gaps and current direction, see `docs/status.md`.
|
||||
|
||||
## Build And Run
|
||||
|
||||
### 1. Clone
|
||||
|
|
@ -34,9 +36,22 @@ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
|||
cmake --build build -j"$(nproc)"
|
||||
```
|
||||
|
||||
### 4. Provide WoW Data
|
||||
### 4. Provide WoW Data (Extract + Manifest)
|
||||
|
||||
Put your legal WoW 3.3.5a data in `Data/` (or set `WOW_DATA_PATH`).
|
||||
Wowee loads assets from an extracted loose-file tree indexed by `manifest.json`.
|
||||
|
||||
If you do not already have an extracted `Data/manifest.json`, extract from your WoW install:
|
||||
|
||||
```bash
|
||||
# WotLK 3.3.5a example
|
||||
./extract_assets.sh /path/to/WoW/Data wotlk
|
||||
```
|
||||
|
||||
By default wowee uses `./Data/`. To override:
|
||||
|
||||
```bash
|
||||
export WOW_DATA_PATH=/path/to/extracted/Data
|
||||
```
|
||||
|
||||
### 5. Run
|
||||
|
||||
|
|
@ -80,5 +95,5 @@ Use `BUILD_INSTRUCTIONS.md` for distro-specific package lists.
|
|||
|
||||
### Missing assets (models/textures/terrain)
|
||||
|
||||
- Verify WoW data files exist under `Data/`
|
||||
- Or export `WOW_DATA_PATH=/path/to/WoW/Data`
|
||||
- Verify `Data/manifest.json` exists (or re-run `./extract_assets.sh ...`)
|
||||
- Or export `WOW_DATA_PATH=/path/to/extracted/Data`
|
||||
|
|
|
|||
|
|
@ -374,38 +374,39 @@ UPDATE realmlist SET address='your.server.ip' WHERE id=1;
|
|||
|
||||
## WoW Data Files
|
||||
|
||||
The client needs access to WoW 3.3.5a data files for terrain, models, and textures.
|
||||
The client needs access to extracted WoW data (terrain, models, textures) indexed by `manifest.json`.
|
||||
|
||||
If you have a fresh WoW install (MPQs only), extract once with:
|
||||
|
||||
```bash
|
||||
./extract_assets.sh /path/to/WoW-3.3.5a/Data wotlk
|
||||
```
|
||||
|
||||
### Setting WOW_DATA_PATH
|
||||
|
||||
```bash
|
||||
# Linux/Mac
|
||||
export WOW_DATA_PATH="/path/to/WoW-3.3.5a/Data"
|
||||
export WOW_DATA_PATH="/path/to/extracted/Data"
|
||||
|
||||
# Or add to ~/.bashrc
|
||||
echo 'export WOW_DATA_PATH="/path/to/WoW-3.3.5a/Data"' >> ~/.bashrc
|
||||
echo 'export WOW_DATA_PATH="/path/to/extracted/Data"' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
|
||||
# Run client
|
||||
cd /home/k/Desktop/wowee/wowee
|
||||
cd /path/to/wowee
|
||||
./build/bin/wowee
|
||||
```
|
||||
|
||||
### Data Directory Structure
|
||||
|
||||
Your WoW Data directory should contain:
|
||||
Your extracted data directory should contain (example):
|
||||
```
|
||||
Data/
|
||||
├── common.MPQ
|
||||
├── common-2.MPQ
|
||||
├── expansion.MPQ
|
||||
├── lichking.MPQ
|
||||
├── patch.MPQ
|
||||
├── patch-2.MPQ
|
||||
├── patch-3.MPQ
|
||||
└── enUS/ (or your locale)
|
||||
├── locale-enUS.MPQ
|
||||
└── patch-enUS-3.MPQ
|
||||
├── manifest.json
|
||||
├── interface/
|
||||
├── sound/
|
||||
├── world/
|
||||
└── expansions/
|
||||
```
|
||||
|
||||
## Testing Features
|
||||
|
|
@ -567,8 +568,8 @@ account set gmlevel demo 3 -1
|
|||
|
||||
3. **Start Client:**
|
||||
```bash
|
||||
cd /home/k/Desktop/wowee/wowee
|
||||
export WOW_DATA_PATH="/path/to/WoW-3.3.5a/Data"
|
||||
cd /path/to/wowee
|
||||
export WOW_DATA_PATH="/path/to/extracted/Data"
|
||||
./build/bin/wowee
|
||||
```
|
||||
|
||||
|
|
|
|||
37
docs/status.md
Normal file
37
docs/status.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# Project Status
|
||||
|
||||
**Last updated**: 2026-02-15
|
||||
|
||||
## What This Repo Is
|
||||
|
||||
Wowee is a native C++ World of Warcraft client experiment focused on connecting to real emulator servers (online/multiplayer) with a custom renderer and asset pipeline.
|
||||
|
||||
## Current Code State
|
||||
|
||||
Implemented (working in normal development use):
|
||||
|
||||
- Auth flow: SRP6a auth + realm list + world connect with header encryption
|
||||
- Rendering: terrain, WMO/M2 rendering, water, sky system, particles, minimap/world map, loading video playback
|
||||
- Core gameplay plumbing: movement, targeting, action bar basics, inventory/equipment visuals, chat (tabs/channels, emotes, item links)
|
||||
- Multi-expansion direction: Classic/TBC/WotLK protocol variance handling exists and is being extended (`src/game/packet_parsers_classic.cpp`, `src/game/packet_parsers_tbc.cpp`)
|
||||
|
||||
In progress / incomplete (known gaps):
|
||||
|
||||
- Quests: some quest UI/markers exist, but parts of quest log parsing are still TODOs
|
||||
- Transports: functional support exists, but some spline parsing/edge cases are still TODOs
|
||||
- Audio: broad coverage for events/music/UI exists, but 3D positional audio is not implemented yet
|
||||
- Warden: crypto + module plumbing are in place; full module execution and server-specific compatibility are still in progress
|
||||
|
||||
## Near-Term Direction
|
||||
|
||||
- Keep tightening packet parsing across server variants (especially Classic/Turtle and TBC)
|
||||
- Keep improving visual correctness for characters/equipment and M2/WMO edge cases
|
||||
- Progress Warden module execution path (emulation via Unicorn when available)
|
||||
|
||||
## Where To Look
|
||||
|
||||
- Entry point: `src/main.cpp`, `src/core/application.cpp`
|
||||
- Networking/auth: `src/auth/`, `src/network/`, `src/game/game_handler.cpp`
|
||||
- Rendering: `src/rendering/`
|
||||
- Assets/extraction: `extract_assets.sh`, `tools/asset_extract/`, `src/pipeline/asset_manager.cpp`
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue