Dungeon Teller

Reading memory regions from World of Warcraft to notify about queue progression

September 13th, 2010

Back

Outline

DungeonTeller, one of my initial pieces of software, provided users with the ability to temporarily disengage from their computer while awaiting a dungeon queue within World of Warcraft.

Problem

World of Warcraft has three distinct player types: Damage Dealers (DPS), Healers, and Tanks. A typical dungeon group consists of one tank, one healer, and three DPS's. Despite the prominence of DPS roles within a dungeon group, individuals who took on these roles often experienced prolonged waiting periods due to an oversaturation of the DPS player pool. It was not uncommon, for individuals to endure waiting periods of 20 to 30 minutes before a group had been found. Once a group had been found, participants were got a 30-minute window to confirm their participation. Failing to accept would lead to an automatic removal from the queue, requiring a restart of the waiting process.

Solution

DungeonTeller was designed to monitor the queue status externally from the World of Warcraft application and notify the player when a group had been found. This feature enabled players to do other things while waiting, alleviating worry that they would miss out on a potential group

Context data

This project not only represented my early exploration of software development but also marked my initial venture into memory management through the use of "unsafe" code, in C# programming. Using CheatEngine, I successfully identified the memory pointer that World of Warcraft manipulated when a group had been found. By reading this memory region, my program was able to actively monitor queue progression and deliver notifications to its users.

However, it is essential to recognize that this approach had a limitation: with every subsequent update to World of Warcraft, the memory address read would change, requiring a manual rediscovery to ensure the continued functionality of the program.

Stack

C#
WinForms