Dev Tracker

Help I'm stuck in a PvP Match!

in Dev Tracker

Posted by: Ray Patrick

Ray Patrick

PvP Server Programmer

Everyone should be unstuck now. Please let me know if that isn’t the case.

Slings and Arrows
Vox Machinum, 80
Hyper Threaded, 80

Guild members home world

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

You’ll need an API key for each guild member to get that data from the API. I’m not sure what the game client shows.

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Is there any chance, Lawton, that you could stick the build number in the ETag header, or something that included the build number? That is probably the most useful cache control indicator for this.

In a past life I used an etag header of “etag: ${build}:YYYY-MM-DD” to track something we didn’t want to live more than 24 hours in a cache, but might want to invalidate sooner, as a cheap way to do that without having to do anything that required deeper knowledge of the content.

The API doesn’t currently support either HEAD requests or If-Modified-Since headers, so putting it in an etag feels really wonky to me. How does just having X-Build-Id sound instead?

Sab guild event with prizes !

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

This sounds like a great idea! However, could you please post about your event in the In-Game Events sub-forum? Here’s a link: https://forum-en.guildwars2.com/forum/community/events

Thanks.

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

Glicko Temporary Manual Adjustments

in Dev Tracker

Posted by: Grant Gertz

Grant Gertz

Producer: WvW, PvP, and Fractals

Below are the world adjustments for March 24th 2017. Current is the new manual adjustment for the match making rating. Previous lists the manual adjustments that were in place prior to today’s changes. These are not additive, but rather updated values.

NA
• Jade Quarry
Current: +20
Previous: 0

• Maguuma
Current: -50
Previous: -100

• Tarnished Coast
Current: -100
Previous: -100

• Fort Aspenwood
Current: 0
Previous: +20

• Sea of Sorrows
Current: 0
Previous: +20

EU
• Piken Square
Current: -100
Previous: -150

• Riverside:
Current: -100
Previous: -150

• Baruch Bay
Current: +50
Previous: +50

• Kodash
Current: 0
Previous: +50

• Ring of Fire
Current: 0
Previous: +25

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

I just did a quick check, and at least the achievement endpoint tells me:

< Expires: Fri, 24 Mar 2017 15:54:35 GMT

when requested at 15:50 GMT. so, it’s telling me I can hold it for a little under four minutes… not an amazing cache lifetime for api.guildwars2.com/v2/achievements?id=1 but not zero either.

I should probably increase that to 24h and flush the cache when the build updates. Hmm.

Does mm consider your pvp rank? / MVP award

in Dev Tracker

Posted by: Evan Lesh

Evan Lesh

PvP Gameplay Programmer

Matchmaking configuration can be seen here:
https://wiki.guildwars2.com/wiki/PvP_Matchmaking_Algorithm#Configuration_2

Rank can be used, but was replaced with games played for the rating type because it is more accurate when people can get to rank 80 in custom arenas.

Bluxgore (80 Warr), Xilz (80 Necro), Ivo (80 Eng)
Bra (80 Guard), Fixie Bow (80 Ranger), Wcharr (80 Ele)
Xdragonshadowninjax (80 Thief)

Should ANet change the Floppy Fish?

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

This is an interesting discussion, and it’s clear there are a variety of opinions about the topic. Please feel free to share your thoughts, but we’d appreciate your doing so without the use of pejoratives or insults towards those who hold a different opinion.

TL;dr – Be kind!

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

Gem Store Wishlist w/ notifications

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

Here’s the Gem Store Gallery and Wishlist with sound alerts like TorsoReaper requested. Click the Help button on the page for how to use the app.

Awesome job! Thanks!

Oh my goodness, that’s great!

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

Gem Store Wishlist w/ notifications

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

You could ask the API developer if it’s possible to release a new node that would expose (a) the items available in the gem shop & (b) the costs. Then fan-coders could write an app that would display changes.

The relevant forum is:
https://forum-en.guildwars2.com/forum/community/api
(The developer is extremely open-minded and usually gives quick feedback about feasibility and time frames, i.e. he’d say if it was a practical impossibility with current data, if it were more work than it sounds, or if it’s something he could whip up over coffee.)

I think this is really good advice. I don’t know what technological requirements such a system would have, but with kind players willing to do some of the work in creating an app, I do this it’s worth asking our API-knowledgeable folks — who are some of the most amazing at participation here! — if they can offer an opinion on the possibility of putting some of this info in an acccessible form.

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

Trading Post API Question

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

So — the long answer is that the backend component that implements the trading post’s matching engine doesn’t store enough data for you to implement this 100%. You can get most of the way there, but some stuff might slip through the cracks.

Some initial notes:

  • For every order that you create (buy or sell) a single record is made in /v2/commerce/transactions/current/{buys,sells}. It’s assigned a unique id and a creation date.
  • Every time someone else’s order matches with yours, a record is made in /v2/commerce/transactions/history/{buys,sells}. The id of the historical record does not match the id of the your matching order.
  • When someone else’s order matches yours (but does not fully consume it), your current order’s quantity is adjusted. This leaves your original order available to be matched by future orders.
  • The “created” date between current/history will match up.
  • When an order is cancelled, it’s purged from current without leaving a record in history.

An example walkthrough, assuming only two people are interacting with a trading post that starts out empty:

  • You make a buy order for 250 Mithril Ore for 5c/unit. You’ll now have a record in /v2/commerce/transactions/current/buys that looks like:

{ “id” : 1, “created” : “timestamp1”, “item_id” : 19700, “quantity” : 250, “unit_price” : 5 }

You haven’t sold anything yet, so your history will be empty.

  • If you then list a sell order for mithril at 50c/unit (because buy low sell high), your current/buys will be unchanged but you’ll have a record in current/sells:

{ “id” : 2, “created” : “timestamp2”, “item_id” : 19700, “quantity” : 99, “unit_price” : 50 }

  • Then if someone comes along and purchases 1 of your mithril ore @ 50c, the current/sells entry will be amended to reflect the updated quantity, and you’ll have a record in history/sells noting that there was a purchase:

current/sells:
{ “id” : 2, “created” : “timestamp2”, “item_id” : 19700, “quantity” : 98, “unit_price” : 50 }

history/sells:
{ “id” : 3, “created” : “timestamp2”, “purchased” : “timestamp3”, “item_id” : 19700, “quantity” : 1, “unit_price” : 50 }

It should be noted here that the “created” timestamp is the same between the current order and historical order — but not necessarily unique. It should be enough to correlate between the two using item_id/unit_price, noting that you may have multiple listings for the same item_id/unit_price (which can safely be aggregated on your end). You’re going to lose track of some paid exchange fees one way or another.

  • If someone makes another purchase of your sale listing, a new history/sell record is made:

current/sells
{ “id” : 2, “created” : “timestamp2”, “item_id” : 19700, “quantity” : 93, “unit_price” : 50 }

history/sells:
{ “id” : 3, “created” : “timestamp2”, “purchased” : “timestamp3”, “item_id” : 19700, “quantity” : 1, “unit_price” : 50 }
{ “id” : 4, “created” : “timestamp2”, “purchased” : “timestamp4”, “item_id” : 19700, “quantity” : 5, “unit_price” : 50 }

The entry in current/sells will be removed once either (A) you cancel the order, or (B) the quantity reaches zero. Determining which happened requires you to store the old version of current/sells locally, notice that the record no longer exists, then search history/sells for matching transaction that would matches it. More tersely, you basically have to reconcile the current transactions with the historical logs on your end.

Anyway, I realize this is kind of a ramble and probably doesn’t help much, but it’s a rough overview of what the API is exposing and how you can get actual data out of it. You’ll have to ask a more specific question if you want a more specific answer, I’m afraid.

Thief stolen skills aren't whitelisted

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Tracking issue. There’s a bunch of one-offs that need to be whitelisted, will try to tackle that when I’ve got some time.

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Will v2/guild be bulk expandable in the future?

Probably not. Bulk expansion only makes sense when all ids can be enumerated, and guild IDs are not enumerable for technical reasons (e.g., there’s no master list of all guild IDs that’s accessible to the API frontend).

Who on Tyria would need to make 600 requests a minute? That’s sounds like bad programming to me.

Eh, /v2/commerce/listings is updated every ~30 seconds and takes ~150 requests to pull all the data from. Sites that additionally maintain a large pool of API keys (e.g., for grabbing /v2/pvp/games) also might require higher request rates.

600 requests/minute is certainly a lot, but there are definitely cases where it’s not enough.

For static endpoints though, I highly highly recommend just pulling the data into your own database every time /v2/build updates. None of the API’s backend data is stored in a relational database so there’s a lot of things the API will never be able to provide — but that’s easily overcome by just throwing it into e.g. PostgreSQL and building your own indexes.

Looking for GW1 Party :)

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

Hello,

Posting this is ok, but not in the main Guild Wars 2 Discussion sub-forum, which is intended for conversations about the game. Best to post in our “Looking for” forum, where you will be more likely to find people who may be interested in forming a party with you in Guild Wars.

I’ll close this thread, but please feel free to create in the proper sub-forum. Thanks!

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

Back again!!

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

Everyone experiences a game somewhat differently, but there are so many subtle things in Tyria, I’d start over, personally.

And hey, welcome back!

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

The guilds endpoint isn’t bulk-expanded. The current implementation only lets you request one guild at a time.

That documentation is a bit wrong; I’ll update it. (EDIT: blam)

(edited by Lawton Campbell.8517)

/GAMEEND issue

in Dev Tracker

Posted by: Evan Lesh

Evan Lesh

PvP Gameplay Programmer

Ten plus five okays

Bluxgore (80 Warr), Xilz (80 Necro), Ivo (80 Eng)
Bra (80 Guard), Fixie Bow (80 Ranger), Wcharr (80 Ele)
Xdragonshadowninjax (80 Thief)

HEADS UP: API temporarily down

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

And the ratelimit is bumped up to 600 reqs/minute.

As far as I can see, everything is mostly humming along okay.

HEADS UP: API temporarily down

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Okay, the API is tentatively back up with a limit of 60 reqs/minute while I double-check some things.

Will bump that up to the full 600 reqs/min in an hour or so when I’m confident that nothing has caught fire (which might happen, but doesn’t look likely at this point).

Missing Gems

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

We believe that all of the momentary issues with gems not showing up on your accounts has now been resolved. If you continue to see issues with your account, please contact Customer Support and they’ll help!

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Would it be legit if I use my own server for static API requests and only use the official API for account bounded requests? My Server would then have its own database of items for example and only updates this database like every 24h? This would help reducing traffic, but I’m not sure if this would count as stealing content or intellectual property.

This isn’t an official answer, but from my reading of the content terms of use that’s perfectly fine. There’s a lot of value-add that get for running your own copy of e.g. the items database — for example, searching items by name.

HEADS UP: API temporarily down

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

I’m really hoping for today; pretty sure I’ve got all the kinks worked out.

HEADS UP: API temporarily down

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Do some sort of caching, that, when API is down, can still dispense all the resources that have been frozen on take down?

Please consider this. Static endpoints such as /recipes, /recipes/search, /items, /achievements etc are all down, and they don’t have to be.

Those endpoints aren’t actually static. Greatly increased request volume to those endpoints is what caused these crashes, unfortunately.

any info when this will be up? i need my tradepost stuff ;(

I’m trying to get it back up today; I still need to get someone to review my changes to make sure I don’t cascade the failure to other systems if I turn everything back on.

Could there please have a rough Eta as to how long the API site will be down for? I understand that if ya give an ETA and things dont turn out the way ya expect it may take longer. Any info would be appreciated.

ETA was yesterday, except during testing there was a small bug in my implementation that caused it to use the wrong instance of the centralized rate-limiting service (i.e. it used the one that everything else uses instead of the API-specific one). So I punted on the deploy until we’re sure that the changes aren’t going to overwhelm anything.

Did GW2 lose its identity?

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

This thread had been temporarily removed to allow me to review it (because there were some side conversations that threatened to pull it badly off topic). It seems a conversation of interest to our members, and I note that most participants have remembered to show respect towards their fellow forum members and post in a constructive manner. With that in mind, the thread is now reinstated.

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

(edited by Gaile Gray.6029)

"I'd really like this..." [Gifting Strangers]

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

Edit: Someone fulfilled my request in full, thank you so much. And I’d also like to add, if anyone wants help with jumping puzzles, I can help with most of them besides the hardest ones like Ember bay. Feel free to message me or add me and we can figure out when to get you through whatever puzzle you need help with.

I started working towards Bolt last month and got lucky with the mystic forge and got Zap. So I’ve been working towards getting the materials, but the charged lodestones required have really killed my enthusiasm since it take so much time to farm for just a couple of them even following event trains, I only got a couple in the last few days since I have other stuff to get done. I plan to farm silverwastes to work towards the gifts of magic and might, but I’d appreciate it if someone could send some Charged lodestones my way. I have 9 out of 100 needed, I’m not asking for all 91, but even just a few would be greatly appreciated.

Thank you for editing to show (1) your wish was fulfilled and (2) to credit our nice community for doing that! Glad you’re on your way to that item.

Thanks also for offering to help with Jumping Puzzles. As someone who sometimes ~coughoftencough~ has difficulty with the more challenging ones, it’s great when a more veteran player offers to help!

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

Thank you for Caladbolg quest

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

I agree with you guys. This is a beautiful addition to the game.

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

ANet stop claiming keeps

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

Forum glitch. Will remove later.

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

ANet stop claiming keeps

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

I apologize for this thread because in no way should it have drawn an ANet response.

Actually, I think you brought up things that others may have wondered about. If you did not, then they arose in the thread from other forum members. I was happy to give the information that I could on the subject at hand.

My guess is that the ArenaNet tag has special meaning to players.

I am sure players love to see developers playing their own game,

but seeing the developer’s tag could be distracting to others.

Distracting, it’s true. Also, “target creating.” I’ve been there, done that, many, many times. If you’re wearing the flair, you’re going to be a target. There have been times I’ve spent more time taking dirt naps than contributing to a fight, and I even tell people when we party up that they should expect to carry my corpse if I’m tagged. It’s all good — we know it’s likely when we tag up. (Whisper: If I can be the distracting factor that leads to my team’s victory, it’s alll good. )

Thanks for the reply Gaile!

I do have a request… We want more devs playing because many of us really need the “Conquer the Creator” title. Can you make that happen?

Well, you know you’re going to have to beat us, right?

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

(edited by Gaile Gray.6029)

ANet stop claiming keeps

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

Ok, seems there are a few concerns, so let me give some info here (with no slight intended for the OP or anyone else participating in this thread):

  • We encourage our team members to play the game. Many of us do. This is a good thing for the game and for the community! This is good for every aspect of the game, from PvP, to WvW, to PvE, and beyond.
  • Sometimes playing the game in a competitive sense means.. you win! It doesn’t seem fair to suggest that a developer — who has absolutely no advantage on the live game — should back off, or intentionally take a dive, or move to a different server. After all, it’s likely they are and have been a participating member of a particular world for some time, and moving isn’t reasonable, nor is it required, nor should it be expected. I’m on a world that isn’t highly competitive, but I don’t find myself feeling the urge to move to a higher-ranked world. Conversely, if my world suddenly becomes competitive, I won’t be shuffling out of there to satisfy some edge-case expectation of me as a player or staff member.
  • No one is required to represent the ArenaNet guild. In fact, no one at the company is even required to join the Anet guild. Both are entirely voluntary. I rep other guilds, sometimes, but I rep Anet most of the time because that’s my choice. Other members of my team are not members of the guild at all. It’s very much an individual decision.
  • We don’t have a fully decked out guild hall if you mean in the decoration sense. You should have seen me scrambling to decorate for Wintersday. I’ve thought of taking up scribing to do more. Quite frankly, I feel we have a real dearth of decorations and going to other guilds’ halls to see how they decorate is always a treat for me, because they do it so well!
  • Did I mention ArenaNet playing ArenaNet’s game is a good thing?
Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

(edited by Gaile Gray.6029)

HEADS UP: API temporarily down

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Distributed systems are hard

Tomorrow might be a better day.

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Do we know if the problem is individual users or popular apps that may be poorly designed?

Not currently. Due to volume, we don’t keep detailed request logs; I know how many requests each endpoint handles, but not where the requests are coming from.

Is there a way to require an app provide the api key/account that generated the request so the app’s volume can be split out by account to track if its individuals within an app or the app itself?

Not currently; probably going to add something like that in for applications to request higher rate limits, but not require it for access. Not requiring this means there’s no barrier to entry, which is something I prefer. Requiring it for high-usage apps means I can track request volume on a per-application basis and can get a better idea of what happens when something goes wrong.

Note that since we’re going to use IP-based rate-limiting, this is mostly moot for client-side requests. If you’ve got a browser app sending more than 600 requests/minute that’s … probably not the best way of going about it. Increased rate limits only really make sense when you’re doing a bunch of stuff on a server (with a fixed IP, hopefully) like persisting historical data, tracking aggregate metrics, providing indexing, etc.

I still need to work out all the details though, so I don’t really have much on how the higher rate-limit bits will work yet.

Guild Wars 2 Card Game: Heroes of the Mists

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

This is a very exciting project, and I’m sure Guild Wars 2 fans will have a lot of fun with it. I’ll get back to you with a couple of suggestions for copyright notification. In the meantime, if you have not done so, please review our Content Terms of Use: https://www.guildwars2.com/en/legal/guild-wars-2-content-terms-of-use/

Thanks.

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

A peak into hackers heads

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

Are you saying it saves our CC (or whatever) information, even if we don’t check ‘Save Billing Information’?

I cannot answer for others, but I know my computer sometimes “helpfully” saves information that I don’t intend to save. So I may leave unchecked a merchant’s “Save my info” box, but my actual computer thinks it knows best, and I find when I start to input the CC number, it auto-fills.

I am happy to check into this concern about saved info, but I’d like to do so after I know this isn’t a system rather than store issue.

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Will it only influence the utilization of my account api keys on 3rd party tools like gw2bltc, if I want to load my full listing overview or purchase history or also my trading post performance in game?

This will only affect API keys on 3rd party tools. This has no effect on anything in-game.

Hopefully, in the future, there will be an “api-app-key” for every app/website and the rate-limit will be evenly counted per app/website and not per ip?

It’s kind of a hassle on my end, but that’s what we’re probably going to have to do. The main logic is that, since we’re doing IP-based rate limiting, it’s trivial to get around by just buying a $2.50 VPS or twelve. That’s silly and wasteful, so we’ll probably have a signup process for getting IPs whitelisted for a higher limit.

Whitelisting is a super annoying approach for everyone, but it lets me explicitly tag requests with the originating site and graph them and so forth. So if something goes totally haywire I can look at the chart and have a better clue what’s going wrong, which is something I can’t easily do today.

Eh… Lawton, was the outage caused by someone request thousands of times?

Tens of thousands. This is my fault for not implementing rate-limiting sooner :<

HEADS UP: API temporarily down

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Which timezone? I made the config change at 3/18/2017 7:06 PM PDT (UTC-7); and it normally takes a few minutes to propagate out.

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Some users have hundreds of thousands of Trading Post transactions.

what.

Well, that’s not a use-case I considered.

600 requests/minute with 200 results/request is 120000 results/minute — depending on how the data’s being presented adding a throttle and a progress bar to the client might be okay? It’s unfortunate the data is structured the way it is — it would be a lot more efficient for everyone if there was a better way to communicate a diff of what’s been bought/sold/listed since a given point in time, but alas.

It’s definitely going to be a bit bumpy though, I’m planning on keeping a close eye on things when this gets turned on.

HEADS UP: API temporarily down

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Regarding the sporiadic up nature, queicherius provided a graph and that correlates strongly with a minor config change I made (to turn the APIs back on for the office IP addresses). I’m not sure why/????/how there’s a correlation there, but I’ve undid it (so the behavior should go back to the solid red bar of “down”.

This week is going to be a lot of fun.

(EDIT: boo the forums strip emoji).

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

600 requests/minute is nice, but I want to know if authenticated endpoints (/v2/account* for example) count in this limit ?

I guess yes, but I need to know, because I made a public tool and if a lot of people use it, I will work on a way to spread authenticated requests to avoid peaks (I previously already added a random margin into my cache retention to spread global item requests).

They do count towards the limit. It’s altogether possible that 600 reqs/minute is too low a number; if your application can’t fit within that, let me know what numbers would work better. The goal here is to break as few things as possible while being able to keep the APIs from crashing.

HEADS UP: API temporarily down

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

looks like, at least certain, endpoints have been up and down today. How big is the fire? ie would you appreciate it if people held off work on new features today that would hit the endpoints that seem to be up (or were up last time my services ran)

They should be entirely down, except around 24h ago when I briefly turned them on to get some metrics out.

Which endpoints seem to be up? I’m terrified.

HEADS UP: API temporarily down

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

One small suggestion. If the service is off, maybe you could send a 503 header service unavailable so we can better handle this case in the future.

I should adjust that. Been turning off the APIs by disabling all endpoints via config; I should add an explicit off switch that sends the proper response.

Thanks for the heads up!
Is there any way to determine the API’s current status? Something like https://api.guildwars2.com/v2/status ? That would be really nice.

The root (https://api.guildwars2.com) kind of works like this? When the v1/v2 endpoints are disabled they’re removed from the list. But using an explicit status code to indicate “the world is on fire” is probably easier on the client side.

Does this have any relation to the recent issues with the in-game TP where requests seem to stall and have to be repeated? That has been happening for some weeks now.

AFAIK the API failure was totally self-contained and shouldn’t have affected other systems.

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Yeah, those are both single requests.

HEADS UP: rate limiting is coming

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Due to increased popularity, the API needs to have rate limits added to ensure that it can continue functioning properly. This is going to be a bumpy transition, but here’s what I’m thinking so far —

  • The rate limit is per-IP,
  • Global across all endpoints (e.g., separate endpoints do not have separate rate limits),
  • Is (probably) tracked on a per-minute basis, and
  • Is continuously updated, rather than resetting at a specific interval.

The main change is that, upon reaching the rate limit, more requests just return “HTTP 429 Limit Exceeded” with the response body {"error":“rate limit exceeded”}. Rate-limited requests still count against the limit (this is an implementation detail of the existing backend service that manages limits). Additionally, responses will contain a new header:

  • X-Rate-Limit-Limit is the maximum number of requests that may be issued within a minute. This is a static value doesn’t contain count for requests you have already sent.

At some point in the future I’d like to add X-Rate-Limit-Remaining, which would contain the actual number of requests that can still be made before hitting the limit, but that needs more extensive backend changes to support.

For the actual limit, the current number I’m thinking of is 600 requests/minute. I think that’s enough to pull all of the trading post listings every 30 seconds (which is how long they’re cached for). The limit is a rolling limit, so if an application makes 600 requests, then waits for 30 seconds, it should be able to make another 300 requests without going over.

This isn’t set in stone yet, so let me know if you have feedback/concerns/questions. Rate limiting does need to be implemented before the API can be turned back on, though, otherwise the API will just continue falling over. I would like to get everything back up and running on Monday, but the schedule might slip a bit if something unexpected happens.

HEADS UP: API temporarily down

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Just disabled all of the APIs.

Not entirely sure of the reason, but the Javascript contexts for the API frontend servers are constantly crashing. Due to the holiday I won’t have the bandwidth to debug the problem until tomorrow evening, so I’ve temporarily taken the APIs down in the meanwhile. I should be able to figure out what’s going wrong tomorrow and probably get everything back up by Sunday.

I’ll post updates to this thread if something goes horribly wrong.

Sorry about the downtime

EDIT: Going to be down until Monday at least; going to add explicit rate-limiting to the API. I’ll have some more details later, still need to run some numbers.

(edited by Lawton Campbell.8517)

Some endpoints i'd like.

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Made a pull request containing a first-pass attempt at exposing the localized story data. The personal story is a bit wonky in that it’s branching — which is kind of weird to expose due to the implementation. There’s a handful of additional endpoints that will need to be made in /v2/characters (and maybe /v2/account?) to expose which story paths have been chosen, as well as which stories/chapters have been unlocked. And which have been completed, naturally.

Comments/suggestions are always welcome; especially RE: expressing chapter branches.

"Activation Time" property in skills API

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Ugh I just made a really long post about this and the forums ate it. It was probably the best post I’ve ever made and this is a poor facsimile.

Anyway.

After looking at the data, I’m pretty sure that “etime” and “atime” are poking into the animation sequence data. The animation sequence data does contain both the evade frames and the activation timings.

“etime” looks like it basically has the time offsets for the animation sequence steps that control the end of precast/end of cast. I’m not entirely sure where this data is coming from, but the timings are matching what I’m looking at. “etime.a” appears to be the time between casting the spell and the precast being over; “etime.b” is the time between casting the spell and the spell being over.

Or, that’s what it looked like until I just now looked up Meteor Shower

Mar 07 02:27:54 sdef 5501 Bn0VAAA= at 18b1b98eb9c: Meteor Shower
Mar 07 02:27:54 —etime
Mar 07 02:27:54 --— a: 3.8100s
Mar 07 02:27:54 —-- b: 1.8000s
Mar 07 02:27:54 —atime
Mar 07 02:27:54 --— 5: 1.4000s
Mar 07 02:27:54 —-- 1: 1.4000s
Mar 07 02:27:54 —-- 4: 1.4000s
Mar 07 02:27:54 —-- 5: 1.8000s
Mar 07 02:27:54 —-- 5: 2.2000s
Mar 07 02:27:54 —-- 5: 2.6000s
Mar 07 02:27:54 —-- 5: 2.8000s
Mar 07 02:27:54 —-- 5: 3.4000s
Mar 07 02:27:54 —-- 2: 3.8010s
Mar 07 02:27:54 —-- 0: 3.8010s
Mar 07 02:27:54 —-- 3: 3.8100s

I’m actually not totally certain what etime is because that doesn’t look quite right. Or — meteor shower might be a bit of a special pickle because it’s got really wonky animation timings.

Assuming that “etime” is a subset of the animation sequence step data — the animation sequence step data contains the evade frames, but those don’t appear to be exposed by this.

Anyway, “atime” has the animation sequence’s trigger data. The “number:” prefix is the trigger id — the important ones, I think, are “0” is the trigger for “give the player back control”, and “1” is “do the skill’s effects”. Pretty sure the other ones are totally irrelevant for gameplay purposes.

tl;dr, man this would really be useful to have in the API so we didn’t have to root around all crazy-like.

Trait skills aren't whitelisted too!

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Oof, gonna add that to the skill enumeration bits. Here’s a tracking issue.

my tickets dont get awnsered

in Dev Tracker

Posted by: Gaile Gray

Gaile Gray

ArenaNet Communications Manager

I looked at this lightly. While I’m not a CS Agent, I know CS processes and procedures, and they have followed them with great care. You have been answered, in detail and in depth. I would assume that the reason you no longer receive answers is (1) you have received explicit information about your suspension and (2) you have submitted a barrage of tickets asking for information you already have received.

The forums is not the place to discuss this. In fact, in my opinion, discussing this is likely going to be fruitless. However, if you wish to discuss this matter, close all your duplicate tickets and review the first that you received. Then, if you have questions, you can respond to that first ticket. The fact is, though, that tickets can reach a point where they no longer merit responses.

Looking at this matter from my view, as forum lead, you may not discuss this matter on the forums and this thread is now closed.

Gaile Gray
Communications Manager
Guild & Fansite Relations; In-Game Events
ArenaNet

Sigil Proposals v2

in Dev Tracker

Posted by: Ben Phongluangtham

Ben Phongluangtham

Game Designer

NEW: Sigil of Ruthlessness: Gain 5 might (3 seconds) when interrupting a foe.

Although, I’d be the first to add the “on interrupt” sigil to my build. This screams for an ICD!!

Agreed.

Are activated pet skills whitelisted?

in Dev Tracker

Posted by: Lawton Campbell

Lawton Campbell

Web Programmer

Whoops, they’re not. Tracking issue.

Unable to queue for 24+ hrs

in Dev Tracker

Posted by: Ray Patrick

Ray Patrick

PvP Server Programmer

@joshmossas.6542, you should be able to queue now. Apologies. I’m looking into that issue.

Slings and Arrows
Vox Machinum, 80
Hyper Threaded, 80