Character build endpoint update time

Character build endpoint update time

in API Development

Posted by: Artemis Thuras.8795

Artemis Thuras.8795

Hi,
After the ToS compliance of DPS meters blowup a few months ago, and the reminder with a developer getting banned.

I tested the gear/build API, to see how viable it would be to share ( discounting how many steps are requiring for one to share via gw2efficiency going through several options).

I found the API/application took over 10 minutes to update to an item or trait change.

Greater than 10 minutes to update renders it next to useless for easy sharing of current build.

I’m aware this could be gw2efficiency being slow to update. Possibly due to the API throttling .
If this is the case, then perhaps its time to find/make an app specifically for build sharing so it isn’t competing for requests/minute with everything else (assuming build templates & sharing isn’t in development in-game).

Can API endpoint be improved to be more usable – approaching real time updates?

Co-Leader of The Mythical Dragons [MYTH],
Advocate of learning and being a useful party member.
http://mythdragons.enjin.com/recruitment

Character build endpoint update time

in API Development

Posted by: Tao Ythaq.6582

Tao Ythaq.6582

Look at http://gw2tool.net/ . I find it more suitable for stuff and builds.
The website is opensource and you can check yourself with a script the frequency (github https://github.com/arnapou/gw2apiclient).

It am almost 100% sure that the api is more frequent than 10 min.

On gw2tool.net, you can directly look at your build on gw2skills.net from special redirect links (the website is building the gw2skills.net link on the fly from your stuff).

Exemple of charcater page : http://gw2tool.net/fr/kqugPog2xf/character/Tao%20Belix

Character build endpoint update time

in API Development

Posted by: Artemis Thuras.8795

Artemis Thuras.8795

I will have to test that application out to see how quickly the API updates.
I still have concerns about scale though. API throttling may still be an issue if a lot of players are using it.

Also, not seeing how to share my character build data – let alone quickly enough to be worthwhile over manually pinging every single detail into chat ( which gets messy when looking at multiple people).

edit:
oh.. share a gw2skills.net link.. Yeah.. That can be edited and faked even more easily than in-game pings, and still needs a huge link which would have to be send via out of game program to be viable. Or shortened with a url shortener, which adds yet another step.

Sorry, that makes this not really viable for sharing builds in a timely manner.

Though generating the gw2skills links is a nice feature.

edit2:
to add clarity, the kind of application I have in mind would function with the following two user stories:

“As a user I want to upload my API key and make my character data public”

“As a commander I want to search a person’s character name, and view their build information”

optionally
“As a player with an input api key I want to immediately see players in my party/squad to check character data”

This one I’m not sure if there is an API endpoint for party/squad information though.

Co-Leader of The Mythical Dragons [MYTH],
Advocate of learning and being a useful party member.
http://mythdragons.enjin.com/recruitment

(edited by Artemis Thuras.8795)

Character build endpoint update time

in API Development

Posted by: Tao Ythaq.6582

Tao Ythaq.6582

> Sorry, that makes this not really viable for sharing builds in a timely manner.

If you use the internal gw2tool link, it is reliable (ie [http://gw2tool.net/fr/kqugPog2xf/gw2skills-pve/Tao Belix] – edit sry I don’t know how to make a link with a space on this forum). It will automaticaly redirect to the gw2skills.net website

> “As a player with an input api key I want to immediately see players in my party/squad to check character data”

Absolutely not possible at the moment. And I guess it won’t be possible for a long time.

> “As a user I want to upload my API key and make my character data public”

Doable through gw2tool.net. Arenanet does not directly provide this sort of tool.
Other fan sites can do that too (more or less usefull/secure) : gw2efficiency, gw2armory.

> “As a commander I want to search a person’s character name, and view their build information”

It could not be done without the person authorization, gw2tool.net does not allow that. gw2tool.net is only a “personal” gw2 api browser, not a social / game database.
gw2efficiency and gw2armory allow these kind of features (more or less).
Personal opinion : gw2armory is not enough secure. I got some informations about people I should not be able to see. gw2tool.net is the more secure of these tool.

Character build endpoint update time

in API Development

Posted by: Artemis Thuras.8795

Artemis Thuras.8795

As I said, last time I tried, gw2e took > 10 minutes to update a single item change. So that isn’t going to be viable for the purpose. Not to mention the number of steps involves is prohibitive.

As for authorisation- I’d put a disclaimer on the page “uploading your API to this site constitutes permission for others to view your character data”.

Co-Leader of The Mythical Dragons [MYTH],
Advocate of learning and being a useful party member.
http://mythdragons.enjin.com/recruitment

Character build endpoint update time

in API Development

Posted by: Tao Ythaq.6582

Tao Ythaq.6582

> As I said, last time I tried, gw2e took > 10 minutes to update a single item change.

Make a script to simply check yourself the right url to see the frequency of change : example of API url https://api.guildwars2.com/v2/characters/{CHAR_NAME}?access_token={API_KEY}

gw2efficiency has its internal schedule to get informations.

Character build endpoint update time

in API Development

Posted by: Artemis Thuras.8795

Artemis Thuras.8795

Update
I’ve done some tests.
The times are +/- ~5 seconds or so.

gw2e took 8 minutes to update after a single item was changed.

Using the API directly has yielded some mixed results – none of which come close to suitable for a substitute to in-game real-time gear inspection.
Api directly: 4:40, 4:40, 2:10 & 5:10.

So the API directly is a bit faster ( suspect gw2e uses caching to help reduce api calls).

While this isn’t nearly enough tests to be conclusive, even at the best of the 3 time, ~ 2 minutes to wait to see a gear change is going to do nothing but infuriate users of an app designed to provide an “out-of-game gear inspection solution”.

edit: Just caught your reply Tao, I was considering running a script so I can get a much larger data set, but at the moment it doesn’t seem like it will matter.

Co-Leader of The Mythical Dragons [MYTH],
Advocate of learning and being a useful party member.
http://mythdragons.enjin.com/recruitment

(edited by Artemis Thuras.8795)

Character build endpoint update time

in API Development

Posted by: pushpayload.6843

pushpayload.6843

@Artemis I’m currently working on pretty much exactly what you explained in your user stories.

On the client side its a c# app that uses the MumbleLink API to find your current char and worldId and if you have input your own API key it will show you other users on that worldId that have done the same (meaning if you are in a raid instance you will see your squad members). As I’m not entirely confident a name searchable list would be preferable for privacy related issues.

There is a server component that caches the data and due to rate limiting I’m looking into letting the client pull its own build info and have it push it to the server to save on calls instead.

It would be nice if there was a “last updated” variable or something added to the character API so you know how accurate/recent the build you are getting is. Because as Artemis said the update is really slow.

The ideal option for real time ToS compliant gear checking would be if it was added to the MumbleLink API then you could just pull it from the gw2 client real time with no load on the API whatsoever.

Character build endpoint update time

in API Development

Posted by: Artemis Thuras.8795

Artemis Thuras.8795

So you’re effectively doing a “self gear inspect” by memory reading, then sharing that, making it visible to people in the same worldID?

Technically reading your own gear should be fine since its visible in game.
However the same argument applies to health bars.. and that seems to be in the “you could get banned for developing this” category.

I’d be dubious about a tool that isn’t using an API for it currently. Though one can hope it provides enough incentive for anet to give us an option somehow.

Co-Leader of The Mythical Dragons [MYTH],
Advocate of learning and being a useful party member.
http://mythdragons.enjin.com/recruitment

Character build endpoint update time

in API Development

Posted by: pushpayload.6843

pushpayload.6843

Well that would be ideal yeah. The MumbleLink API was built into the client by ArenaNet and is AFAIK the only allowed way to do memory reading.

Right now I have to rely on the REST API for gear but it would be ideal if they put it in the ‘allowed’ region of memory. There would be nothing dubious about using that to get character state, and definitely no grounds to ban an account as they control exactly what they put in there.

Health bars are an entirely different story as they are part of ‘active’ combat data and could definitely give you an advantage over players not having it, and the entire point of the big health bars as I saw them was to see your party members health/GotL not just your own.

Character build endpoint update time

in API Development

Posted by: Artemis Thuras.8795

Artemis Thuras.8795

the entire point of the big health bars as I saw them was to see your party members health/GotL not just your own.

Which would be visible (gotl) were it not for a poorly designed UI in squads anyway, or already is ( hp). You can see all the buffs in parties already.

Ultimately doing a self gear inspect seems no different to me, than seeing an effect on my character currently.

I appreciate what you’re trying to do, and I hope anet wakes up and realises there are some major QoL improvements needed.

Co-Leader of The Mythical Dragons [MYTH],
Advocate of learning and being a useful party member.
http://mythdragons.enjin.com/recruitment

Character build endpoint update time

in API Development

Posted by: stress level zero.4907

stress level zero.4907

> Sorry, that makes this not really viable for sharing builds in a timely manner.

If you use the internal gw2tool link, it is reliable (ie [http://gw2tool.net/fr/kqugPog2xf/gw2skills-pve/Tao Belix] – edit sry I don’t know how to make a link with a space on this forum). It will automaticaly redirect to the gw2skills.net website

> “As a player with an input api key I want to immediately see players in my party/squad to check character data”

Absolutely not possible at the moment. And I guess it won’t be possible for a long time.

> “As a user I want to upload my API key and make my character data public”

Doable through gw2tool.net. Arenanet does not directly provide this sort of tool.
Other fan sites can do that too (more or less usefull/secure) : gw2efficiency, gw2armory.

> “As a commander I want to search a person’s character name, and view their build information”

It could not be done without the person authorization, gw2tool.net does not allow that. gw2tool.net is only a “personal” gw2 api browser, not a social / game database.
gw2efficiency and gw2armory allow these kind of features (more or less).
Personal opinion : gw2armory is not enough secure. I got some informations about people I should not be able to see. gw2tool.net is the more secure of these tool.

What information are you seeing that you don’t think you should be able to?

Guild Wars 2 Armory

Find, view, and share user profiles, characters, and guilds on your pc and mobile.

Character build endpoint update time

in API Development

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Can API endpoint be improved to be more usable – approaching real time updates?

The delay is caused by two things:

  • The map instance servers only persist character data back to the database periodically (once every few minutes), not in real-time.
    * Since the API backend talks directly to the character database, it caches data (five minutes) to avoid setting the entire game on fire.

Because of the first reason, primarily, real-time updates are architecturally impossible.

Character build endpoint update time

in API Development

Posted by: Artemis Thuras.8795

Artemis Thuras.8795

Can API endpoint be improved to be more usable – approaching real time updates?

The delay is caused by two things:

  • The map instance servers only persist character data back to the database periodically (once every few minutes), not in real-time.
    * Since the API backend talks directly to the character database, it caches data (five minutes) to avoid setting the entire game on fire.

Because of the first reason, primarily, real-time updates are architecturally impossible.

Thanks for the reply. You’ve confirmed what I suspected regarding how this works.

Unfortunately it also confirms – the api is not suitable for an app used along side the game client for gear inspection ( regardless of player “agreement to share”). Simply because even with the long winded effort needed to ping everything individually ( and then try to interpret/understand the pings, which may get mixed with other players due to not being able to ping everything in a single chat line) is still quicker in game, than it takes the endpoint to update.

tl;dr: we need a better way to share builds ( including gear) in the game client, the API just physically can’t be a practical solution.

It’s fine for something used while not logged into the game of course.

Co-Leader of The Mythical Dragons [MYTH],
Advocate of learning and being a useful party member.
http://mythdragons.enjin.com/recruitment