diff --git a/README.md b/README.md index 25e62a5..3b51b11 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,58 @@ -# WowPresence +# 🎮 WowPresence Native Discord Rich Presence for **World of Warcraft 1.12.1 (build 5875)** and compatible clients. -WowPresence keeps the game-side component deliberately small: a read-only DLL samples character status from the WoW process and writes a local JSON snapshot, while a separate companion executable handles Discord IPC outside the game process. +Focused on a **small game-side footprint, stable character detection and native Discord IPC**. -## Features +> WowPresence targets **WoW 1.12.1 / build 5875-compatible client environments**. -- Character name and guild -- Level and class -- Race and faction -- Current zone -- Stable elapsed-session timer across character changes -- Automatic companion startup -- Exact WoW process tracking -- Read-only game-memory access -- No Discord bot, Client Secret, or network service required +## 🔌 Requirements -## Compatibility +- **World of Warcraft 1.12.1 (build 5875)** or a compatible client +- **Discord Desktop** +- A compatible DLL loader such as **VanillaFixes** + +The DLL only samples character information from the game. Discord communication is handled by a separate companion process. + +## 📦 Installation + +1. Download **`WowPresence.dll`** and **`WowPresence.exe`** from Releases. +2. Place both files in your WoW game directory. +3. Add `WowPresence.dll` to your VanillaFixes `dlls.txt`. +4. Launch WoW normally through VanillaFixes. + +`WowPresence.exe` is started automatically by the DLL and normally does **not** need to be launched manually. + +Runtime files are created automatically under: + +```text +\.modernization_tool\WowPresence\ +``` + +## ✨ Features + +- Discord Rich Presence for WoW 1.12.1. +- Character name and guild display. +- Level and class display. +- Race and faction display. +- Current zone display. +- Stable elapsed-session timer across character changes. +- Automatic companion startup. +- Exact WoW process tracking. +- Read-only game-memory sampling. +- Native Discord IPC with no bot or Client Secret required. +- Optional privacy flags for individual character fields. + +## 🔧 Compatibility ### Tested -- OctoWoW client based on WoW 1.12.1 / build 5875 +- **OctoWoW** — WoW 1.12.1 / build 5875 based client -### Expected compatibility +### Expected compatible -- World of Warcraft 1.12.1 build 5875 -- Compatible private-server clients that preserve the same relevant client memory layout +- **World of Warcraft 1.12.1 build 5875** +- Private-server clients preserving the relevant 1.12.1 client memory layout ### Not compatible @@ -36,38 +63,36 @@ WowPresence keeps the game-side component deliberately small: a read-only DLL sa Other modified 1.12.1 clients should be considered **untested until verified**. -## Files +## ⚙️ How it works ```text -WowPresence.dll -WowPresence.exe +WoW + └─ WowPresence.dll + ├─ read-only character sampling + ├─ local JSON status + └─ starts WowPresence.exe + └─ Discord local IPC ``` -The DLL is loaded into WoW by a compatible DLL loader such as VanillaFixes. After WoW is running, the DLL automatically starts `WowPresence.exe`. +The DLL does not communicate directly with Discord. -The companion executable should normally **not** be launched manually. +The companion executable does not read or write WoW memory. -## Installation - -1. Download `WowPresence.dll` and `WowPresence.exe` from Releases. -2. Place both files in the WoW game directory. -3. Add this line to the VanillaFixes `dlls.txt` file: +Character status is written to: ```text -WowPresence.dll +.modernization_tool\WowPresence\discord_wow_status.json ``` -4. Launch WoW normally through VanillaFixes. - -WowPresence creates its runtime files under: +The companion log is written to: ```text -\.modernization_tool\WowPresence\ +.modernization_tool\WowPresence\WowPresence.log ``` -## Discord application +## 🛰️ Discord application -The current build includes the OctoWoW Discord Application ID as its default so it works immediately with the configuration it was originally developed and tested against. +WowPresence currently includes the **OctoWoW Discord Application ID** as its built-in default. Advanced users can override it by creating: @@ -75,11 +100,11 @@ Advanced users can override it by creating: .modernization_tool\WowPresence\discord_application_id ``` -The file should contain only the numeric Discord Application ID. +The file must contain only the numeric Discord Application ID. -No Client Secret is used or required. +No Discord Client Secret is used or required. -## Privacy flags +## 🔒 Privacy flags The optional file: @@ -99,44 +124,19 @@ controls which character details are published to Discord. | 32 | Zone | | 63 | All fields | -If the file is missing, all supported fields are enabled. +If the file does not exist, all supported fields are enabled. -## Administrator privileges +## 🛡️ Administrator privileges Discord and WoW should run with matching privilege levels. -If Discord is running as administrator, WoW must also run as administrator for local Discord Rich Presence IPC to work reliably. +If Discord runs as administrator, WoW must also run as administrator for local Rich Presence IPC to work reliably. -Running both normally is recommended unless elevation is actually required by the local setup. +Running both normally is recommended unless elevation is required by the local setup. -## Runtime design +## 🛠️ Building -```text -WoW - └─ WowPresence.dll - ├─ read-only character sampling - ├─ local JSON status - └─ starts WowPresence.exe - └─ Discord local IPC -``` - -The DLL does not communicate directly with Discord. The companion executable does not read or write WoW memory. - -Status data is written to: - -```text -.modernization_tool\WowPresence\discord_wow_status.json -``` - -The companion log is written to: - -```text -.modernization_tool\WowPresence\WowPresence.log -``` - -## Building - -The native components target **32-bit x86 Windows**, matching WoW 1.12.1. +WowPresence targets **32-bit x86 Windows**, matching WoW 1.12.1. With an x86 MSVC developer environment: @@ -145,12 +145,32 @@ cl /nologo /O2 /MT /W3 /LD src\WowPresence.c /Fe:WowPresence.dll /link /INCREMEN cl /nologo /O2 /MT /W3 src\WowPresenceLauncher.c user32.lib /Fe:WowPresence.exe /link /SUBSYSTEM:WINDOWS /INCREMENTAL:NO ``` -GitHub Actions also builds both binaries automatically. Tagged versions matching `v*` publish a GitHub Release containing the DLL, EXE, and ZIP package. +GitHub Actions builds: -## Credits and provenance +- `WowPresence.dll` +- `WowPresence.exe` +- `WowPresence.zip` + +Tags matching `v*` can publish these files as a GitHub Release. + +## 📜 Project identity & licensing + +WowPresence is an **independent community project**. + +Compatibility with **World of Warcraft**, **Discord**, **OctoWoW**, **VanillaFixes**, **IchaLaunch**, or other referenced projects does not imply affiliation, endorsement, sponsorship, or ownership by their respective rights holders or maintainers. + +**World of Warcraft**, **Warcraft**, **Blizzard Entertainment**, **Discord**, and related names and marks remain the property of their respective rights holders. + +This repository does not currently declare a software license. + +For detailed provenance and third-party information, see: + +- [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) + +## 🙏 Credits WowPresence is maintained by **Dusk-92**. -The project was inspired in part by the WoW character-status / Discord Rich Presence work in **IchaLaunch** by **brutaliccus**. The current implementation is maintained separately and does not include IchaLaunch binaries. +The project was inspired in part by the WoW character-status / Discord Rich Presence implementation in **IchaLaunch** by **brutaliccus**. -See [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) for additional provenance and trademark information. +The current WowPresence implementation is maintained separately and does not include IchaLaunch binaries.