ProperDave.7425:

Hi all,
I have cobbled together a position tracking system and mapping tool for Guild Wars 2. I call it Plotty.
It’s currently running as a small 3MB Windows system tray client, and when you toggle it on it checks the GW2 game’s Mumble interface to work out where you are in the world, who you are (curent character), and if you’re a commander.
All the info is stored in a local SQLite db that you can query and export as CSV, and you can also map your data to a local interactive map.

I’ve also added in the option to send your map data to a mapping server to plot your data publicly and collaboratively. The collaborative aspect of the mapping allows parties/guilds to see all their data in one map so for instance – if you like to WvW raid, you can do after-battle assessments to work out how well people stayed on tag etc.

The Plotty client is independent of the mapping server, and if you’re a developer you can even make your own mapping server and have Plotty send data to it.

I’ve only just released the tool – and there’s plenty of things that need improving both client side and on my mapping server. I’m hoping someone will find it useful/interesting.

Download from: http://gw2.properdave.com/plotty/latest

Windows only at the moment. .Net 4 framework required. See the readme.txt in the download. Mac clients will follow if there’s enough interest.

Example of two players movements in DR on a communal map:
http://www.lordtrain.com/livemap/watch/1/III_Legio/18/1451612412/1454118103

ProperDave.7425:

Just another update on this. I have implemented a number of revisions. I’m hoping someone finds this useful.
I have also had one feature request – detection of teleport cheating. Something which should be easily implementable as Plotty could track unexpected changes in position. There would be false positives when wp’ing/portalling, but it could at lease be used to flag unusual movement behaviour.

Here’s two guild members running around in WvW as part of a raid:
http://www.lordtrain.com/livemap/watch/2/III_Legio/1143/1455575041/1455661441

Long straight lines are WP movement – something which I need to filter out/indicate better.

Tomiyou.3790:

Hmm, looks very interesting, too bad these API forums are rarely checked by the rest of the forum. Maybe you should post this in the WvW section?

ProperDave.7425:

Hmm, looks very interesting, too bad these API forums are rarely checked by the rest of the forum. Maybe you should post this in the WvW section?

I’ll give it a go. Hopefully the forum mods won’t mind the repost. It was rather difficult deciding the best place to mention the tool, and if it was worth getting in trouble for creating several posts throughout the forums.

famfamfam.9137:

Interesting! I was considering writing a similar tool (tracking player coords and sending to a server) for a different purpose.

Do you have source code visible for either the client tool (so I can run it) or the mapping service (so I can see how the client tool sends data and a reference impl for how it is processed server-side)?

ProperDave.7425:

Do you have source code visible for either the client tool (so I can run it) or the mapping service (so I can see how the client tool sends data and a reference impl for how it is processed server-side)?

I haven’t published source code yet as I’m still finalising and optimising stuff, but the reporting and browsing urls in Plotty are configurable from the settings window – all data is passed via a HTTP call with a GET query string to make it easy for anyone to implement their own mapping/data collection server.

This is the recording query string sent to the specified server:
?continent={1}&world={2}&key={3}&map={4}&player={5}&character={6}&x={7}&y={8}&z={9}&rotation={10}&commander={11}&created={12}
1) continent=1/2 (Tyria/Mists)
2) world=legacy pre-megaserver world id (not needed – though I’m providing it in case it is ever useful)
3) key=Plotty’s ‘Save Tag’ for grouping two or more player’s data together
4) map=the map id (eg 15 for Queensdale, 50 for Lion’s Arch etc)
5) player=Player’s username (eg ProperDave.7425)
6) character=Current active character name (Eg for me: ‘Proper Dave’, ‘Garrfunkel’, ‘Tane Belmont’, ‘Cuddly Ball of Fur’, ‘Píerce Brosnan’ etc)
7/8/9) x/y/z=Player Coordinates
10) rotation=Degrees – Which way the player camera is facing on a horizontal access, with 0 degrees being north.
11) commander=Are they taco’d up or not.
12) created=optional creation time (as an 11 digit unix timestamp), default is 0 for right now.

For viewing data from Plotty, the following MVC format is used (though the url can be modified to GET like the data recording url through the use of query string params):
/livemap/watch/{world}/{tag}/{map}/{from}/{to}
‘livemap/watch’ is an MVC controller that accepts:
{world} = continent (1=Tyria,2=Mists)
{tag} = the key or Save Tag
{map} = the map id
{from} = 11 digit unix timestamp of when to start browsing from
{to} = 11 digit unix timestamp of when to start browsing to

  • All times are in UTC (GMT+00:00)