Comment by Subdivide8452
12 hours ago
Out of curiosity, as a fellow dev I'm interested in how you go about reverse engineering these types of things. I assume for networking, you keep track of what goes in and out of the live game. How do you go about pathing? How do you reverse engineer spells, how they scale over levels, and how bosses work, when they spawn, and how they spawn (based on non time based factors) ?
In WoW specifically, I'll chime in with some things I know about: - the WoW client contains a lot of stuff in their DBC (DataBase Client) files (for example spells and their effects, talents, achievements, etc), which you can extract (the file formats used are basically unchanged and well known since first WoW came out) - the client also uses WDB Cache files which contain things the player has encountered (creatures, items, quests), and volunteer players then send these files to projects like TrinityCore (probably the best known server emulator), which use them to build databases - for dungeon/boss scripting specifically, there's a lot of guilds competing for "world firsts" on official servers who collect a ton of information about boss behaviour, they then use that to develop addons, which help their players when actually doing the boss. then, when you want to implement the boss scripting in TrinityCore (or other emulator), these addons provide a decent starting point for things like abilities and their times, boss phases, etc. afterwards, volunteers report differences they encounter on official servers vs emulators in boss behavior
Yes kind of. You have to differentiate between all the different kinds of data. A lot of data was already included in the client files, but for the rest you had to sniff packages, analyse combat logs, watch 360p videos of boss fights and try to figure out exactly how mechanics are working. It got very ugly after a new expansion has been released, because it was not possible anymore to sniff for the older expansion.
It was always a “best effort”, but also very rewarding if you got a specific fight “somewhat” close how it was on the official servers.