arcdps: gw2 dps meter (and general metrics tool)


how does it work
 arcdps hooks client network data before it is overwritten (among other helper functions), making it not user agreement friendly.
 however, in the feb 2017 ama, arenanet has granted 3rd party tools permission to collect and display combat stats via means previously not allowed.
 these are runtime modifications only, no changes are made to files on disk.

how do i install, update, or uninstall it
 save d3d9.dll into 'gw2 install dir/bin64/' with the other dlls while the game is not running.
 config will be created in 'gw2 install dir/addons/arcdps/', additional ini options can be found in the downloads example.
 to update, replace d3d9.dll.
 expect to have to update after balance changes (accuracy) and around significant game feature additions (crashes).
 no official auto update, but solutions exist.
 to reset, exit gw2 and remove the config folder above.
 to disable/remove, exit gw2 and rename/delete d3d9.dll.

how do i use it
 don't be a dick.
 alt shift t is the hotkey to bring up the options window.
 most windows are hidden on character select and map load.
 left click on windows to interact.
 right click on windows to bring up their independent options (if available).

about accuracy
 while two sources of data are provided (area = server direct + simulated buff; personal = chat log), assuming the chat log is "correct" is
 not always correct. area stats may be missing some confusion on-activation, but it will not be missing hits from some fast strike skills
 (guardian gs2) or condition ticks (vs shroud). consider also that there is no overkill or overheal being reported - if 10 players autoattack
 an almost-dead target at the same time, only a single player will get credit; if 10 players have conditions ticking on that same target,
 all 10 will get credit. both numbers should be close, but a 100% accurate representation of your damage or healing is not possible.

 without modifiers held:
 esc: close non-permanent windows.
 with modifiers held (default alt+shift):
 b: toggle buff table visibility.
 c: toggle area stats visibility.
 h: toggle global hide/unhide.
 o: reload (some) config.
 s: toggle detail window on target.
 t: toggle options visibility.

can i chain load another wrapper d3d9.dll
 arcdps will attempt to load d3d9_chainload.dll, and if found, redirect the direct3dcreate9 call to it instead of the system library.
 make sure you are using the 64bit version of wrappers (gemfx, sweetfx).
 due to how reshade works, arcdps (like most wrappers) will not natively load reshade.
 you can try using the loader found here for overlay compatibility (unsupported).

evtc logging
 available in instanced content and wvw.
 pve: starts on all players in combat when npc with recognized id exists nearby, stops when all players exit combat.
 wvw: starts on player vs player damage near squad center, stops when all players near center exit combat.
 npc id can be found via detail window and looking for species in title, or own target list (mouseover) after attacking.
 logs are written to 'documents/gw2/addons/arcdps/arcdps.cbtlogs/.../date-time.evtc', depending on options.
 compression requires powershell with compress-archive, could be windows10 only.

evtc parsing
 /u/Baaron4: GW2-Elite-Insights-Parser/
 /u/blahdot3h: GW2RaidarUploader/
 /u/platinummyr: L0G-101086, simpleArcParse
 evtc code and readme:

realtime api
 place extensions in gw2 install dir/bin64/.
 example code and readme:

 place translation in gw2 install dir/addons/arcdps/, named arcdps_lang.ini.
 /u/Snowy1794: (chinese simplified).
 /u/bluelovers: (chinese traditional).
 /u/ReActif: (french).
 Linus The One.7432: (german).
 creating a translation:

 area is missing buff damage (eg. conditions, siphons) - not notified by server.
 area is missing buff extension (eg. rev glint nature active) - source not notified by server.
 area is missing percent-based damage (eg. matthias' hadouken) - not notified by server.
 area is missing gadget damage association (eg. engineer turrets, sylvari turrets) - owner not notified by server.
 area condition damage uses simulated attribute building from gear, traits, and buffs.
 area condition damage uses simulated timing and accumulate-add model.
 area condition damage scaling is different from the game's scaling - affects accuracy at sub-80 zones.
 area condition damage may be off if the fight contains long periods of "skill lag" - represented by r in metrics.
 area condition damage will not scale to 50% for wvw cannons/mortars - reduction undetectable.
 area condition damage from confusion active procs on animation start instead of on skill use - not notified by server.
 area condition timer will be off on characters that come into range with a timer-affecting buff already on them.
 area physical damage notify bubble may cause some results (eg. deimos) to be out of range - not notified by server.
 area physical damage may be missing source or target (eg. range), will not proc siphons or on-hit.
 area strips ignore last-stack stability - cc and strip indistinguishable.
 area skill activation will only count skills which have animations, not shouts or instants - not notified by server.
 area overstack and applied do not include ignored stacks (lower than lowest existing stack) - not notified by server.
 area healing and absolute buff damage are presently impossible - not notified by server.
 area breakbar damage is presently impossible - not notified by server.
 area combo field finishers are presently impossible - not notified by server.
 area knockback, knockdown, pull, and blowout have no origin context - not notified by server.

its not working
 check your 'gw2 install dir/addons/arcdps/' folder for an arcdps.log (will appear after you launch and are in char select).
 if there is no log, it isn't being loaded. it is up to you to find out where your system is trying to load it from.
 if there is a log, check to see there are no warnings or errors and that the date isn't old, if it is old, see above.
 if you use the nopatchui switch, d3d9.dll needs to be placed next to gw2.exe.
 if the game crashes on character select, another application may be interfering (eg d3dgear).
 if folders can't be created or settings not saved, make sure gw2.exe has read/write permission to the folder it's installed in.
 if you are playing on linux/wine, add override(s) in winecfg.
 if you have a problem not listed here, try asking on reddit.
 if you message me about a problem that is listed here, i will not respond.

reporting crashes, bugs, and suggestions
 if you notice an issue in accuracy, take a screenshot of details skill list beside personal skill list, isolate which buff/trait is the cause.
 make sure the reason behind the inaccuracy is not among the limits above.
 if you suspect arcdps as the cause of a crash, change (or add) 'ueh_filter=11111' under [main] in arcdps.ini where 11111 equals game build.
 send me a copy of arcdps.log or arcdps_lastcrash.log, whichever has more recent data, before restarting the game.
 when/if the game crashes again with an anet prompt, copy all the text in it.
 if can't copy, open '%appdata%/guild wars 2/arenanet.log', scroll to the bottom, make sure the date is correct, copy from there.
 paste everything below "*--> Crash <--*" in an unlisted paste.
 paste the contents of arcdps.log or arcdps_lastcrash.log, whichever is more recent, into the above before restarting the game.
 send me the link - deltaconnected on reddit, deltaconnected.4058/arclyte in game. include as many specifics as possible.
 use the above to let me know about other bugs and suggestions. i may not always respond but i will at least read.

 jan.08.2020: fixed minion skill flag/downed count.
 jan.08.2020: fixed buff overstack being double counted to buff table number.
 dec.25.2019: adjusted buff table name width option and padding.
 dec.25.2019: buff table player tooltip will show subgroup target distribution of friendly buffs.
 dec.25.2019: buffs removed with 0 src will be scaled by time since last tick (damage).
 dec.25.2019: buffs removed with valid src will be zeroed (damage).
 dec.25.2019: buffs applied to minions will not count to masters buff in stat.
 dec.25.2019: buffs overstack will not count to buff in stat.
 dec.25.2019: fixed buff retal/siphon simulation being applied against invuln targets.
 dec.25.2019: clicking on target in details target list will display dmg lines like skills.
 dec.25.2019: some details window layout changes and cleanup and fixes.
 dec.25.2019: better match personal stats timing to area stats.
 dec.25.2019: added strike missions to default logging list.
 dec.25.2019: prevent loading same extension twice (by sig).
 dec.25.2019: removed build templates ui, anyone still needing it should check out buildpad.
 dec.25.2019: added finer control over map load timeouts.
 dec.25.2019: stat reset decoupled from log start, will happen when log target is eligible to take damage.
 dec.25.2019: group all marked/loggable characters under one target id.
 dec.25.2019: group all gadgets that have attacktargets associated with them under the same id.
 dec.25.2019: targetless will default to displaying vs that grouped damage as target damage.
 dec.25.2019: changed encounter logging to use lowest visible species id as boss id.
 dec.25.2019: changed encounter logging to only start if a boss is within 3500 units in all cases.
 dec.25.2019: removed internal agent cap.
 dec.25.2019: evtc: added buffinfo, buffformula, skillinfo, skillformula statechanges (see readme).
 dec.25.2019: strings: end of as common.
 nov.19.2019: updated for nov19 game build (maybe).
 nov.19.2019: evtc log start on combat enter use deferred instead of instant.
 nov.19.2019: added option to disable bars in area stats.
 nov.19.2019: added bars to buff table (and option to disable).
 nov.19.2019: added padding and title style options to buff table.
 nov.19.2019: buff table values multiplied by 100 for a bit more space (no .).
 nov.19.2019: buff table use generic skill tooltip.
 nov.19.2019: fixed buff table to use same end time as area stats.
 nov.19.2019: fixed target summary in detail not calculating crit etc.
 nov.19.2019: strings: end of as common.
 nov.10.2019: skill timing additions set properly as milliseconds, oops.
 nov.07.2019: added twisted castle to logging defaults.
 nov.07.2019: stats calc changed to use last damage for end timing.
 nov.07.2019: added area stats option to return to combat duration.
 nov.07.2019: extensions will also be loaded from arcdps' dll path.
 nov.07.2019: fixed timing things from last build.
 nov.07.2019: fixed keybinds not being loaded on first map load.
 nov.07.2019: prevent loading keybinds if profession still unknown.
 nov.07.2019: modified skill cancel guess to use animation sim (past end-start).
 nov.07.2019: skill animation sim will use native formulas, capped at 33% inc.
 nov.07.2019: added detection for skills not affected by attack speed change.
 nov.07.2019: evtc/api: actv_quickness is no longer used in is_activation.
 nov.07.2019: evtc/api: buff_dmg in actv reset/cancel/fire is scaled duration.
 nov.07.2019: evtc/api: buff_dmg in actv start is time control returned to agent.
 nov.07.2019: strings: end of as common.
 oct.29.2019: updated for oct29 game build.
 oct.29.2019: added support for gw2 addon loader.
 oct.17.2019: fixed a crash that could happen if extras or templates dll existed.
 oct.17.2019: removed build templates.
 oct.17.2019: fixed av exception on log start/stop.
 oct.17.2019: evtc: fixed missing logend.
 oct.10.2019: fixed vs target since game build.
 oct.10.2019: defunc code cleanup.
 oct.10.2019: extras merged into main arcdps dll.

 x64: current (20200109-004905)