2026-02-11 15:32:47 -08:00
# WoWee - World Of Warcraft Engine Experiment
2026-02-02 12:24:50 -08:00
2026-02-11 15:08:42 -08:00
< p align = "center" >
< img src = "assets/Wowee.png" alt = "Wowee Logo" width = "240" / >
< / p >
2026-02-22 05:09:16 -08:00
A native C++ World of Warcraft client with a custom Vulkan renderer.
2026-02-14 18:05:37 -08:00
2026-02-18 03:15:25 -08:00
[](https://github.com/sponsors/Kelsidavis)
2026-02-21 22:09:52 -08:00
[](https://discord.gg/SDqjA79B)
2026-02-18 03:15:25 -08:00
2026-02-25 02:36:50 -08:00
[](https://youtu.be/B-jtpPmiXGM)
2026-02-15 12:53:15 -08:00
[](https://youtu.be/Pd9JuYYxu0o)
2026-02-17 03:18:01 -08:00
[](https://youtu.be/J4NXegzqWSQ)
2026-02-22 05:09:16 -08:00
Protocol Compatible with **Vanilla (Classic) 1.12 + TBC 2.4.3 + WotLK 3.3.5a** .
2026-02-02 12:24:50 -08:00
> **Legal Disclaimer**: This is an educational/research project. It does not include any Blizzard Entertainment assets, data files, or proprietary code. World of Warcraft and all related assets are the property of Blizzard Entertainment, Inc. This project is not affiliated with or endorsed by Blizzard Entertainment. Users are responsible for supplying their own legally obtained game data files and for ensuring compliance with all applicable laws in their jurisdiction.
2026-03-07 00:50:45 -08:00
## Status & Direction (2026-03-07)
2026-02-14 18:05:37 -08:00
2026-02-22 05:09:16 -08:00
- **Compatibility**: **Vanilla (Classic) 1.12 + TBC 2.4.3 + WotLK 3.3.5a** are all supported via expansion profiles and per-expansion packet parsers (`src/game/packet_parsers_classic.cpp` , `src/game/packet_parsers_tbc.cpp` ). All three expansions are roughly on par — no single one is significantly more complete than the others.
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- **Tested against**: AzerothCore, TrinityCore, Mangos, and Turtle WoW (1.17).
- **Current focus**: instance dungeons, visual accuracy (lava/water, shadow mapping, WMO interiors), and multi-expansion coverage.
2026-02-17 15:05:18 -08:00
- **Warden**: Full module execution via Unicorn Engine CPU emulation. Decrypts (RC4→RSA→zlib), parses and relocates the PE module, executes via x86 emulation with Windows API interception. Module cache at `~/.local/share/wowee/warden_cache/` .
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- **CI**: GitHub Actions builds for Linux (x86-64, ARM64), Windows (MSYS2), and macOS (ARM64). Security scans via CodeQL, Semgrep, and sanitizers.
2026-02-14 18:05:37 -08:00
2026-02-02 12:24:50 -08:00
## Features
### Rendering Engine
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- **Terrain** -- Multi-tile streaming with async loading, texture splatting (4 layers), frustum culling, expanded load radius during taxi flights
Implement WoW-accurate DBC-driven sky system with lore-faithful celestial bodies
Add SkySystem coordinator that follows WoW's actual architecture where skyboxes
are authoritative and procedural elements serve as fallbacks. Integrate lighting
system across all renderers (terrain, WMO, M2, character) with unified parameters.
Sky System:
- SkySystem coordinator manages skybox, celestial bodies, stars, clouds, lens flare
- Skybox is authoritative (baked stars from M2 models, procedural fallback only)
- skyboxHasStars flag gates procedural star rendering (prevents double-star bug)
Celestial Bodies (Lore-Accurate):
- Two moons: White Lady (30-day cycle, pale white) + Blue Child (27-day cycle, pale blue)
- Deterministic moon phases from server gameTime (not deltaTime toys)
- Sun positioning driven by LightingManager directionalDir (DBC-sourced)
- Camera-locked sky dome (translation ignored, rotation applied)
Lighting Integration:
- Apply LightingManager params to WMO, M2, character renderers
- Unified lighting: directional light, diffuse color, ambient color, fog
- Star occlusion by cloud density (70% weight) and fog density (30% weight)
Documentation:
- Add comprehensive SKY_SYSTEM.md technical guide
- Update MEMORY.md with sky system architecture and anti-patterns
- Update README.md with WoW-accurate descriptions
Critical design decisions:
- NO latitude-based star rotation (Azeroth not modeled as spherical planet)
- NO always-on procedural stars (skybox authority prevents zone identity loss)
- NO universal dual-moon setup (map-specific celestial configurations)
2026-02-10 14:36:17 -08:00
- **Atmosphere** -- Procedural clouds (FBM noise), lens flare with chromatic aberration, cloud/fog star occlusion
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- **Characters** -- Skeletal animation with GPU vertex skinning (256 bones), race-aware textures, per-instance NPC hair/skin textures
- **Buildings** -- WMO renderer with multi-material batches, frustum culling, collision (wall/floor classification, slope sliding), interior glass transparency
- **Instances** -- WDT parser for WMO-only dungeon maps, area trigger portals with glow/spin effects, seamless zone transitions
- **Water & Lava** -- Terrain and WMO water with refraction/reflection, magma/slime rendering with multi-octave FBM noise flow, Beer-Lambert absorption, M2 lava waterfalls with UV scroll
2026-03-07 00:50:45 -08:00
- **Particles** -- M2 particle emitters with WotLK struct parsing, billboarded glow effects, lava steam/splash effects
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- **Lighting** -- Shadow mapping with PCF filtering, per-frame shadow updates, AABB-based culling, interior/exterior light modes, WMO window glass with fresnel reflections
- **Performance** -- Binary keyframe search for animations, incremental spatial index, static doodad skip, hash-free render/shadow culling
2026-02-02 12:24:50 -08:00
### Asset Pipeline
2026-02-14 18:05:37 -08:00
- Extracted loose-file ** `Data/` ** tree indexed by ** `manifest.json` ** (fast lookup + caching)
- Optional **overlay layers** for multi-expansion asset deduplication
2026-02-23 18:32:47 -08:00
- `asset_extract` + `extract_assets.sh` (Linux/macOS) / `extract_assets.ps1` (Windows) for MPQ extraction (StormLib tooling)
2026-02-14 18:05:37 -08:00
- File formats: **BLP** (DXT1/3/5), **ADT** , **M2** , **WMO** , **DBC** (Spell/Item/Faction/etc.)
2026-02-06 22:39:45 -08:00
### Gameplay Systems
- **Authentication** -- Full SRP6a implementation with RC4 header encryption
2026-02-17 15:05:18 -08:00
- **Character System** -- Creation (with nonbinary gender option), selection, 3D preview, stats panel, race/class support
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- **Movement** -- WASD movement, camera orbit, spline path following, transport riding (trams, ships, zeppelins), movement ACK responses
- **Combat** -- Auto-attack, spell casting with cooldowns, damage calculation, death handling, spirit healer resurrection
- **Targeting** -- Tab-cycling with hostility filtering, click-to-target, faction-based hostility (using Faction.dbc)
- **Inventory** -- 23 equipment slots, 16 backpack slots, drag-drop, auto-equip, item tooltips with weapon damage/speed
- **Bank** -- Full bank support for all expansions, bag slots, drag-drop, right-click deposit (non-equippable items)
- **Spells** -- Spellbook with specialty, general, profession, mount, and companion tabs; drag-drop to action bar; item use support
- **Talents** -- Talent tree UI with proper visuals and functionality
2026-02-06 22:39:45 -08:00
- **Action Bar** -- 12 slots, drag-drop from spellbook/inventory, click-to-cast, keybindings
2026-02-17 15:05:18 -08:00
- **Trainers** -- Spell trainer UI, buy spells, known/available/unavailable states
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- **Quests** -- Quest markers (! and ?) on NPCs and minimap, quest log, quest details, turn-in flow, quest item progress tracking
- **Auction House** -- Search with filters, pagination, sell picker with tooltips, bid/buyout
- **Mail** -- Item attachment support for sending
2026-02-19 15:54:35 -08:00
- **Vendors** -- Buy, sell, and buyback (most recent sold item), gold tracking, inventory sync
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- **Loot** -- Loot window, gold looting, item pickup, chest/gameobject looting
2026-02-06 22:39:45 -08:00
- **Gossip** -- NPC interaction, dialogue options
2026-02-14 18:05:37 -08:00
- **Chat** -- Tabs/channels, emotes, chat bubbles, clickable URLs, clickable item links with tooltips
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- **Party** -- Group invites, party list, out-of-range member health via SMSG_PARTY_MEMBER_STATS
- **Pets** -- Pet tracking via SMSG_PET_SPELLS, dismiss pet button
- **Map Exploration** -- Subzone-level fog-of-war reveal matching retail behavior
2026-02-17 15:05:18 -08:00
- **Warden** -- Warden anti-cheat module execution via Unicorn Engine x86 emulation (cross-platform, no Wine)
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- **UI** -- Loading screens with progress bar, settings window (shadow distance slider), minimap with zoom/rotation/square mode, top-right minimap mute speaker, separate bag windows with compact-empty mode (aggregate view)
2026-02-06 22:39:45 -08:00
2026-02-02 12:24:50 -08:00
## Building
### Prerequisites
```bash
# Ubuntu/Debian
2026-02-22 05:09:16 -08:00
sudo apt install libsdl2-dev libglm-dev libssl-dev \
libvulkan-dev vulkan-tools glslc \
libavformat-dev libavcodec-dev libswscale-dev libavutil-dev \
zlib1g-dev cmake build-essential libx11-dev \
libunicorn-dev \ # optional: Warden module execution
libstorm-dev # optional: asset_extract tool
2026-02-02 12:24:50 -08:00
# Fedora
2026-02-22 05:09:16 -08:00
sudo dnf install SDL2-devel glm-devel openssl-devel \
vulkan-devel vulkan-tools glslc \
ffmpeg-devel zlib-devel cmake gcc-c++ libX11-devel \
unicorn-devel \ # optional: Warden module execution
StormLib-devel # optional: asset_extract tool
2026-02-02 12:24:50 -08:00
# Arch
2026-02-22 05:09:16 -08:00
sudo pacman -S sdl2 glm openssl \
vulkan-devel vulkan-tools shaderc \
ffmpeg zlib cmake base-devel libx11 \
unicorn # optional: Warden module execution
# StormLib: install from AUR for asset_extract tool
2026-02-23 18:35:53 -08:00
# macOS (Homebrew)
brew install cmake pkg-config sdl2 glew glm openssl@3 zlib ffmpeg \
vulkan-loader vulkan-headers shaderc \
2026-02-23 18:40:26 -08:00
unicorn \
stormlib
# unicorn is optional (Warden module execution)
# stormlib is optional (asset_extract tool)
2026-02-02 12:24:50 -08:00
```
2026-02-21 01:58:11 +02:00
### Container build
You can use podman to build application in separate container.
- Install podman
- Then run `container/build-in-container.sh`
- Artifacts can be found in `/tmp/wowee.[random value].[commit hash]`
2026-02-02 12:24:50 -08:00
### Game Data
2026-02-14 18:05:37 -08:00
This project requires WoW client data that you extract from your own legally obtained install.
Wowee loads assets via an extracted loose-file tree indexed by `manifest.json` (it does not read MPQs at runtime).
2026-02-23 19:11:29 -08:00
For a cross-platform GUI workflow (extraction + texture pack management + active override state), see:
- [Asset Pipeline GUI ](docs/asset-pipeline-gui.md )
2026-02-14 18:05:37 -08:00
#### 1) Extract MPQs into `./Data/`
```bash
2026-02-23 18:32:47 -08:00
# Linux / macOS
2026-02-14 18:05:37 -08:00
./extract_assets.sh /path/to/WoW/Data wotlk
2026-02-23 18:32:47 -08:00
# Windows (PowerShell)
.\extract_assets.ps1 "C:\Games\WoW-3.3.5a\Data" wotlk
# Or double-click extract_assets.bat
2026-02-14 18:05:37 -08:00
```
2026-02-02 12:24:50 -08:00
```
2026-02-14 18:05:37 -08:00
Data/
manifest.json
interface/
sound/
world/
expansions/
2026-02-02 12:24:50 -08:00
```
2026-02-14 18:05:37 -08:00
Notes:
- `StormLib` is required to build/run the extractor (`asset_extract` ), but the main client does not require StormLib at runtime.
2026-02-23 18:32:47 -08:00
- `extract_assets.sh` / `extract_assets.ps1` support `classic` , `tbc` , `wotlk` targets.
2026-02-14 18:05:37 -08:00
#### 2) Point wowee at the extracted data
By default, wowee looks for `./Data/` . You can override with:
```bash
export WOW_DATA_PATH=/path/to/extracted/Data
```
2026-02-02 12:24:50 -08:00
### Compile & Run
```bash
2026-02-18 19:24:17 -08:00
git clone --recurse-submodules https://github.com/Kelsidavis/WoWee.git
cd WoWee
2026-02-02 12:24:50 -08:00
mkdir build & & cd build
cmake ..
make -j$(nproc)
./bin/wowee
```
2026-03-08 19:56:52 -07:00
### AMD FSR2 SDK (External)
- Build scripts (`build.sh` , `rebuild.sh` , `build.ps1` , `rebuild.ps1` ) auto-fetch the AMD SDK to:
- `extern/FidelityFX-FSR2`
- Source URL:
- `https://github.com/GPUOpen-Effects/FidelityFX-FSR2.git`
2026-03-08 22:47:46 -07:00
- Ref:
- `master` (depth-1 clone)
2026-03-08 19:56:52 -07:00
- The renderer enables the AMD backend only when both are present:
- `extern/FidelityFX-FSR2/src/ffx-fsr2-api/ffx_fsr2.h`
- `extern/FidelityFX-FSR2/src/ffx-fsr2-api/vk/shaders/ffx_fsr2_accumulate_pass_permutations.h`
2026-03-08 21:45:25 -07:00
- If the SDK checkout is missing generated Vulkan permutation headers, CMake auto-bootstraps them from `third_party/fsr2_vk_permutations` .
- If SDK files are missing entirely, CMake falls back to the internal non-AMD FSR2 path automatically.
2026-03-08 19:56:52 -07:00
2026-03-08 22:47:46 -07:00
### FidelityFX SDK (Framegen Extern)
- Build scripts and CI also fetch:
- `extern/FidelityFX-SDK`
- Source URL:
- `https://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK.git`
- Ref:
- `v1.1.4` (depth-1 clone)
- This ref includes Vulkan framegen building blocks (`frameinterpolation` + `opticalflow` ) and Vulkan shader manifests:
- `sdk/src/backends/vk/CMakeShadersFrameinterpolation.txt`
- `sdk/src/backends/vk/CMakeShadersOpticalflow.txt`
- CMake option:
- `WOWEE_ENABLE_AMD_FSR3_FRAMEGEN=ON` enables a compile-probe target (`wowee_fsr3_framegen_amd_vk_probe` ) that validates SDK FI/OF/FSR3/Vulkan interface headers at build time.
2026-03-08 21:40:26 -07:00
### Current FSR Defaults
- Upscaling quality default: `Native (100%)`
- UI quality order: `Native (100%)` , `Ultra Quality (77%)` , `Quality (67%)` , `Balanced (59%)`
- Default `FSR Sharpness` : `1.6`
- Default FSR2 `Jitter Sign` : `0.38`
- `Performance (50%)` preset is intentionally removed.
2026-02-02 12:24:50 -08:00
## Controls
2026-02-06 22:39:45 -08:00
### Camera & Movement
2026-02-02 12:24:50 -08:00
| Key | Action |
|-----|--------|
2026-02-06 22:39:45 -08:00
| WASD | Move camera / character |
| Mouse | Look around / orbit camera |
2026-02-02 12:24:50 -08:00
| Shift | Move faster |
2026-02-06 22:39:45 -08:00
| Mouse Left Click | Target entity / interact |
| Tab | Cycle targets |
### UI & Windows
| Key | Action |
|-----|--------|
2026-02-19 15:54:35 -08:00
| B | Toggle bags |
| C | Toggle character |
2026-02-06 22:39:45 -08:00
| P | Toggle spellbook |
2026-02-19 15:54:35 -08:00
| N | Toggle talents |
2026-02-06 22:39:45 -08:00
| L | Toggle quest log |
2026-02-19 15:54:35 -08:00
| M | Toggle world map |
| O | Toggle guild roster |
2026-02-06 22:39:45 -08:00
| Enter | Open chat |
2026-02-19 15:54:35 -08:00
| / | Open chat with slash |
2026-02-06 22:39:45 -08:00
| 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 |
|-----|--------|
2026-02-02 12:24:50 -08:00
| F1 | Performance HUD |
2026-02-19 15:54:35 -08:00
| F4 | Toggle shadows |
2026-02-02 12:24:50 -08:00
## Documentation
2026-02-06 22:39:45 -08:00
### Getting Started
2026-02-14 18:05:37 -08:00
- [Project Status ](docs/status.md ) -- Current code state, limitations, and near-term direction
2026-02-06 22:39:45 -08:00
- [Quick Start ](docs/quickstart.md ) -- Installation and first steps
2026-02-11 15:28:50 -08:00
- [Build Instructions ](BUILD_INSTRUCTIONS.md ) -- Detailed dependency, build, and run guide
2026-02-23 19:11:29 -08:00
- [Asset Pipeline GUI ](docs/asset-pipeline-gui.md ) -- Python GUI for extraction, pack installs, ordering, and override rebuilds
2026-02-06 22:39:45 -08:00
### Technical Documentation
2026-02-02 12:24:50 -08:00
- [Architecture ](docs/architecture.md ) -- System design and module overview
- [Authentication ](docs/authentication.md ) -- SRP6 auth protocol details
- [Server Setup ](docs/server-setup.md ) -- Local server configuration
Implement WoW-accurate DBC-driven sky system with lore-faithful celestial bodies
Add SkySystem coordinator that follows WoW's actual architecture where skyboxes
are authoritative and procedural elements serve as fallbacks. Integrate lighting
system across all renderers (terrain, WMO, M2, character) with unified parameters.
Sky System:
- SkySystem coordinator manages skybox, celestial bodies, stars, clouds, lens flare
- Skybox is authoritative (baked stars from M2 models, procedural fallback only)
- skyboxHasStars flag gates procedural star rendering (prevents double-star bug)
Celestial Bodies (Lore-Accurate):
- Two moons: White Lady (30-day cycle, pale white) + Blue Child (27-day cycle, pale blue)
- Deterministic moon phases from server gameTime (not deltaTime toys)
- Sun positioning driven by LightingManager directionalDir (DBC-sourced)
- Camera-locked sky dome (translation ignored, rotation applied)
Lighting Integration:
- Apply LightingManager params to WMO, M2, character renderers
- Unified lighting: directional light, diffuse color, ambient color, fog
- Star occlusion by cloud density (70% weight) and fog density (30% weight)
Documentation:
- Add comprehensive SKY_SYSTEM.md technical guide
- Update MEMORY.md with sky system architecture and anti-patterns
- Update README.md with WoW-accurate descriptions
Critical design decisions:
- NO latitude-based star rotation (Azeroth not modeled as spherical planet)
- NO always-on procedural stars (skybox authority prevents zone identity loss)
- NO universal dual-moon setup (map-specific celestial configurations)
2026-02-10 14:36:17 -08:00
- [Sky System ](docs/SKY_SYSTEM.md ) -- Celestial bodies, Azeroth astronomy, and WoW-accurate sky rendering
2026-02-02 12:24:50 -08:00
- [SRP Implementation ](docs/srp-implementation.md ) -- Cryptographic details
- [Packet Framing ](docs/packet-framing.md ) -- Network protocol framing
- [Realm List ](docs/realm-list.md ) -- Realm selection system
2026-02-17 15:05:18 -08:00
- [Warden Quick Reference ](docs/WARDEN_QUICK_REFERENCE.md ) -- Warden module execution overview and testing
- [Warden Implementation ](docs/WARDEN_IMPLEMENTATION.md ) -- Technical details of the implementation
2026-02-02 12:24:50 -08:00
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
## CI / CD
2026-03-08 21:51:42 -07:00
- GitHub Actions builds on every push: Linux (x86-64, ARM64), Windows (x86-64, ARM64 via MSYS2), macOS (ARM64)
- All build jobs are AMD-FSR2-only (`WOWEE_ENABLE_AMD_FSR2=ON` ) and explicitly build `wowee_fsr2_amd_vk`
2026-03-08 22:47:46 -07:00
- Each job clones AMD's FSR2 SDK and FidelityFX-SDK (`v1.1.4` )
- Linux CI asserts FidelityFX-SDK Vulkan framegen files are present (FI/OF GLSL callbacks + Vulkan shader manifests)
- All CI platform jobs explicitly build `wowee_fsr3_framegen_amd_vk_probe`
- If FSR2 generated Vulkan permutation headers are absent upstream, WoWee bootstraps them from `third_party/fsr2_vk_permutations`
Comprehensive README/status update covering 60+ commits since Feb 2026
Add instances, bank, auction house, mail, pets, party stats, map
exploration, talent/spellbook revamp, chest looting, spirit healer,
CI builds, performance optimizations, shadow/collision/lava fixes.
2026-03-07 00:55:34 -08:00
- Container build via `container/build-in-container.sh` (Podman)
2026-02-19 15:54:35 -08:00
## Security
- GitHub Actions runs a dedicated security workflow at `.github/workflows/security.yml` .
- Current checks include:
- `CodeQL` for C/C++
- `Semgrep` static analysis
- Sanitizer build (`ASan` + `UBSan` )
2026-02-02 12:24:50 -08:00
## Technical Details
2026-02-23 18:32:47 -08:00
- **Platform**: Linux (primary), Windows (MSYS2/MSVC), macOS — C++20, CMake 3.15+
2026-02-22 05:09:16 -08:00
- **Dependencies**: SDL2, Vulkan, GLM, OpenSSL, ImGui, FFmpeg, Unicorn Engine (StormLib for asset extraction tooling)
2026-02-06 22:39:45 -08:00
- **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
2026-02-14 18:05:37 -08:00
- **Asset Loading**: Extracted loose-file tree + `manifest.json` indexing, async terrain streaming, overlay layers
Implement WoW-accurate DBC-driven sky system with lore-faithful celestial bodies
Add SkySystem coordinator that follows WoW's actual architecture where skyboxes
are authoritative and procedural elements serve as fallbacks. Integrate lighting
system across all renderers (terrain, WMO, M2, character) with unified parameters.
Sky System:
- SkySystem coordinator manages skybox, celestial bodies, stars, clouds, lens flare
- Skybox is authoritative (baked stars from M2 models, procedural fallback only)
- skyboxHasStars flag gates procedural star rendering (prevents double-star bug)
Celestial Bodies (Lore-Accurate):
- Two moons: White Lady (30-day cycle, pale white) + Blue Child (27-day cycle, pale blue)
- Deterministic moon phases from server gameTime (not deltaTime toys)
- Sun positioning driven by LightingManager directionalDir (DBC-sourced)
- Camera-locked sky dome (translation ignored, rotation applied)
Lighting Integration:
- Apply LightingManager params to WMO, M2, character renderers
- Unified lighting: directional light, diffuse color, ambient color, fog
- Star occlusion by cloud density (70% weight) and fog density (30% weight)
Documentation:
- Add comprehensive SKY_SYSTEM.md technical guide
- Update MEMORY.md with sky system architecture and anti-patterns
- Update README.md with WoW-accurate descriptions
Critical design decisions:
- NO latitude-based star rotation (Azeroth not modeled as spherical planet)
- NO always-on procedural stars (skybox authority prevents zone identity loss)
- NO universal dual-moon setup (map-specific celestial configurations)
2026-02-10 14:36:17 -08:00
- **Sky System**: WoW-accurate DBC-driven architecture
- **Lore-Accurate Moons**: White Lady (30-day cycle) + Blue Child (27-day cycle)
2026-02-14 18:05:37 -08:00
- **Deterministic Phases**: Computed from server game time when available (fallback: local time/dev cycling)
Implement WoW-accurate DBC-driven sky system with lore-faithful celestial bodies
Add SkySystem coordinator that follows WoW's actual architecture where skyboxes
are authoritative and procedural elements serve as fallbacks. Integrate lighting
system across all renderers (terrain, WMO, M2, character) with unified parameters.
Sky System:
- SkySystem coordinator manages skybox, celestial bodies, stars, clouds, lens flare
- Skybox is authoritative (baked stars from M2 models, procedural fallback only)
- skyboxHasStars flag gates procedural star rendering (prevents double-star bug)
Celestial Bodies (Lore-Accurate):
- Two moons: White Lady (30-day cycle, pale white) + Blue Child (27-day cycle, pale blue)
- Deterministic moon phases from server gameTime (not deltaTime toys)
- Sun positioning driven by LightingManager directionalDir (DBC-sourced)
- Camera-locked sky dome (translation ignored, rotation applied)
Lighting Integration:
- Apply LightingManager params to WMO, M2, character renderers
- Unified lighting: directional light, diffuse color, ambient color, fog
- Star occlusion by cloud density (70% weight) and fog density (30% weight)
Documentation:
- Add comprehensive SKY_SYSTEM.md technical guide
- Update MEMORY.md with sky system architecture and anti-patterns
- Update README.md with WoW-accurate descriptions
Critical design decisions:
- NO latitude-based star rotation (Azeroth not modeled as spherical planet)
- NO always-on procedural stars (skybox authority prevents zone identity loss)
- NO universal dual-moon setup (map-specific celestial configurations)
2026-02-10 14:36:17 -08:00
- **Camera-Locked**: Sky dome uses rotation-only transform (translation ignored)
- **No Latitude Math**: Per-zone artistic constants, not Earth-like planetary simulation
- **Zone Identity**: Different skyboxes per continent (Azeroth, Outland, Northrend)
2026-02-02 12:24:50 -08:00
## License
2026-02-19 16:19:01 -08:00
This project's source code is licensed under the [MIT License ](LICENSE ).
2026-02-02 12:24:50 -08:00
This project does not include any Blizzard Entertainment proprietary data, assets, or code. World of Warcraft is (c) 2004-2024 Blizzard Entertainment, Inc. All rights reserved.
## References
- [WoWDev Wiki ](https://wowdev.wiki/ ) -- File format documentation
- [TrinityCore ](https://github.com/TrinityCore/TrinityCore ) -- Server reference
- [MaNGOS ](https://github.com/cmangos/mangos-wotlk ) -- Server reference
- [StormLib ](https://github.com/ladislav-zezula/StormLib ) -- MPQ library
2026-02-03 21:30:59 -08:00
## Known Issues
2026-02-22 05:09:16 -08:00
MANY issues this is actively under development