Showing Posts For Alcarin.9024:
Months ago, I’ve done something similar to your suggestion Lawton, in about 10 hours of work (wiki was not as completed as it is now) I’ve created a DB with 29 tables without armors and weapons.
Amazed by the amount of work needed to complete the item DB (and by the amazing query needed to only get info about a single item), I’ve started to think “Ok, I’m doing something wrong”.
After some research I’ve found the solution, I’ve started to use a NoSQL DB that do not have a schema at all. With that kind of DB, I was able to create the PHP code to crawl and replicate GW2 DB in a couple of hours, query also was very easy with all kind of filtering by type/sub-type/sub-sub-type.
So StevenL, if you want to completly replicate GW2 DB go with a NoSQL DB, otherwise try to use as much as possible strings instead of subtables or enum, and create a lot of index. These are the easiest way.
- How do we build customization into this upgrade system where there currently is none? Someone suggested this and there were some talk of separating clear core functionality from the unique customized features, but that is sort of where we stopped.
I’ve wrote a possible answer on page six, I’ll expand it alittle bit here:
Basically we can use the current influence system to build consumables, there should be a consumable for each type of objects (1 cons to build chair, 1 to build table, etc…). Using a consumable give you a popup that let you choose from various skin for that item. Chosen the skin you get an enviromental weapon (same functionality that WvW siege weapon have) that let you position the item and then you can build it.
Simple, a lot of possibility, and relatibely easy to do.
For consumable popup I thought about the one that we already have when choosing weapon stats for legendary, but a popup with a preview of the skin will be aewsome.
- What changes to influence and guild progression should happen to make it more intuitive if we went with buildings?
With such system to build customization items for GH, we can use influence to create consumables, and than requesting crafting materials from guild mates to build items. Crafting materials could be new special crafting material that can be gained trough guild activity (in that way is rewarded guild activity). Those items could be soldable on TP or be soulbound (or both).
I think that those new crafting material are useful to feel GH more handcrafted and more rewarding (expecially if some materials are rare).
I’ve also solved some possible problems that such system may cause in my proposal
Regarding Alliance Hall
Someone talked about private instanced zone in PvE that can be claimed and accessible only by the guild that claimed it. I think that this functionality should be bound to Alliance, not guilds. The system should work like GW1 Factions cities, a ranking system for Alliance should unlock and reserve small zone in PvE AND WvW areas that shouldn’t be instanced. In those are should be available some discounted items/mining node/etc… or some kind of buff that can be taken only by Alliance members.
Why not instanced? Considering the amount of player that may be inside an alliance, it seems unreasonable to have a map where they all can meet at the same time.
An area or a privilege could also be given to PvP, some aesthetic items or a special temporary reward track for the first 5 ranked alliance in PvP (signs, flags, or statue could be placed in Heart of the Mists, to celebrate the first 5 ranked alliances).
For this system to work, alliance must be limited in players (number of unique players, also counting not representing ones), not guilds, so a lot of small guild can form an alliance and be stronger than an alliance composed by few big guilds.
Alliance Rank should represent the weekly activity of alliance members.
There could be 3 Rank type (PvE/WvW/PvP), each alliance can parecipate in only 1 category (member activity in each game type are summed), or can partecipate in all of them (member activity is counted only in the category that they are playing).
If I drink 1,5l of milk each day, I have to buy 2 bottle of 1l of milk, maybe I’m wrong, but I’m not used to complain that the milk producer must produce 1,5l bottle.
If you ask to item api about an item, you will get that item info, if you send junk to item api you will get an error, if you send junk to item api server, you get an http error.
It is your responsability to send a correct and understandable request to the api, you cannot complain with developers because you are not able/don’t want to clean your request.
This is what we have, and I really hope that developers don’t waste their time creating single error for every junk request they get, I hope that they spent their time developing new features instead.
200 items with id of 32 bit it’s not a valid request, items id are at maximum 17 bit long, not 32, you must provide a list of 17 bits ids, not 32 bits id.
Items api is able to reply at a list of 200 items id (17 bits each), there is no point in adjusting allowed url length server side.
Sanitize your requests, and you get no problem at all.
Ok, so the problem is that you cannot verify your url once it is generated (this is another problem, that have nothing to do with API programming!).
In that case you could simply check if items ids are numeric, 32 bit integers, and less than 100000 (max known id is 67359, you will get a too long url with more than 500 items with 5 character each).
I don’t know what programming language you are using, but you could get the integer part of id mod 100000 and you get a “valid” id, or at last you cannot generate an url longer than allowed in that way.
Here the problem is in your request, not in the reply from the server, you should be sure to not do such type of request, because you know that those requests are not allowed.
You have to draw a line somewhere between what is and isn’t violating the interface. Sending more than 200 IDs is disabled for many good reasons, but it is nevertheless a syntactically and semantically well-formed request. Responding with text/html when the protocol is to respond with application/json however is a clear violation.
API request will get a JSON reply as much as your request reach the API, to let your request reach the API you MUST do request with less than 2000 characters. As much as you request less than 500 items be assured that you will receive a JSON error, if you exceed 500 items you cannot get a JSON reply.
So the limit to get a JSON reply, is something near 500 items, try with 500 items and you get a JSON reply, try with more than about 2000 characters and you will get a standar erro page.
I understand that those thing are not easy to understand, but your request (have always JSON reply) is not really applicable. I hope now you understand why.
We are really going OT…
You cannot have a json response from the API if the API cannot read your request. Your request is stopped by ISS, API never know that you made a request.
This behavior is caused by a security feature that can be disabled. I’m not trying to steal your data, so why this has to be enabled is beyond me.
I manage a server and I’ll never disable this feature:
1) URLs long than 2000 characters are useless, you are doing something wrong if you need them (in example you should use POST instead of GET request).
2) It’s a security feature, I don’t work in server security (I only try to secure my server), but if someone think that this is a security feature there should be good reasons. I can speculate that GET headers requests are stored in ram until they are completly received (POST should be directly writed to disk I think). When a GET request exceed a certain amount of data, the server stop to accept the request and reply with an error. The client may continue to send the request, but the server drop any further data coming from that request. Disabling such a feature will force the server to wait (and load in ram) the entire request before thinking of a reply. What will happen if you send 2000 simultaneously request each with 200000000 characters with this security feature disabled? The server start to load each request in ram, and wait until each request is completly received, server will start to have ram problem very soon, will start to use swap, will slow down, and will crash if such type of request continue to come. The results are that it’s not necessary a lot of bandwidth to crash a server, it’s only needed that you send multiple request at the same time. So disabling this feature will let GW2 API server be very vulnerable to DOS attacks, that in this case may cause a server crash, not only a service interruption.
It’s never a good idea to disable a security feature, expecially if it is enabled by default.
If you get a 4xx error, you have to understand why your request is wrong, not why you dont receive an extensive response from the server that explain why your request is wrong.
The request isn’t necessarily wrong. Look at /v1/world_names.json. It returns a 4xx code even though the request is perfectly fine.
World name is disabled. It’s the API level that reply with a 404 error, not IIS, it’s a lot different.
Anyway, 404 is a wrong error in this case, maybe 403 is better, but it’s still a semantics problem. The really important thing is that there is a problem with your request, in this case you should not request for world_names.json, because it is disabled.
In this case your request have 2 errors, url is longer than maximum allowed, and you are requesting more than double (550) of max number of items requestable in a single request (200).
Really think about why we should get a proper error response for 201 IDs, but not for 550 IDs. What is the difference? I’d be glad to hear it.
Because they are two really different problem.
With 201 items you will not get a reply from the Database, because it will require too much time and database resource (developer decided that 201 items request are not acceptable).
With 550 item, it’s not a problem that you are requesting 550 items, the problem is that your request URL is too long, your request is not acceptable from the IIS server because may be a security issue (I guess that may overcharge server ram), you will not get a reply from the API (that could reply in JSON that 550 items are too much). The request is stopped by IIS, API never know that you made such request. How could API reply if it doesn’t know that you ever made a request?
I hope that this little schema will let you understand, normaly request come from the top, go until bottom and then come back to the top.
Client
|
IIS 2215 URL length request stop here, don't go down
|
API 201 items request stop here, don't go down
|
DataBase less than 201 items request come here and go back to top
API talk with json, IIS talk with predefined error file (in this case we don’t have a 414 error file, so we get a 404 instead)
You cannot have a json response from the API if the API cannot read your request. Your request is stopped by ISS, API never know that you made a request.
If you get a 4xx error, you have to understand why your request is wrong, not why you dont receive an extensive response from the server that explain why your request is wrong.
In this case your request have 2 errors, url is longer than maximum allowed, and you are requesting more than double (550) of max number of items requestable in a single request (200).
Here the problem is in your request, not in the reply from the server, you should be sure to not do such type of request, because you know that those requests are not allowed.
Check if the response code is between 399 and 500, if yes your request should be cleaned.
Having client side validation is good. Only having client side validation is bad. Our library comes with options to disable parameter validation in release mode (to save some CPU cycles), so there will still be times when a user passes some ridiculous value that doesn’t work, but doesn’t actually violate the protocol.
It’s sound simple to me, when you have a not HTTP 200 response from the server trow an exception to the user and force a client side validation. You should simply stop when you don’t get an 200 response from the server. 414 error instead of 404 it’s a semanthic problem, you should everytime stop when not receiving an HTTP 200 reply from the server, regardless of the exactly error you get.
I don’t think we really need a GH editor like The Sims. We already have a system that allow to exactly place (also choosing rotation) and build items in a map, it’s the WvW siege weapon system. Does we really need to have a The Sims piece inside GW2? A lot of people could like the idea, but hey, this is GW2, not The Sims. Using WvW siege weapon system it will really fit in a RPG game, an ad hoc editor will feel like “Hey, I’m playing an RPG or a Simulation game?”.
I don’t think tha 500 people inside a map could be a problem, WvW maps already manage such number of players also in very excited situations. Also I think that it will be very difficult to gather all 500 player at the same time, too much people to not have a lot that miss the meeting. So I think that we can survive in such rare events that all 500 guild members are in the same map and lag a little.
About alliance neighbourhoods, how to manage a neighbourhoods with four guild of 500 members each? I think that it will be very difficult to have a map with 2000 players at the same time…
Random thoughts:
-Golems should help you building heavier objects. Why moving yourself heavy objects, when a golem could do it for you?
-I told in a suggestion in this CDI that there could be PvE siege assault/defence events that could be located in GvG maps (I really think that GvG maps should be separated from GH), now I’m thinking that it could be better that those event will happen in the GH instead of GvG map. Of course they should be activated (like guild missions), but it will be awesome to defend your GH from an horde of mob. Maybe those mob may destroy some object of your GH, wasting the time and resource spent to build them. The reward of the event should be enough to let you risk, and you should be very carefull to protect more valuable items in your GH. A sort of GH raid where you have to defend your GH, or maybe reconquest it if you fail the previous event! As I mentioned in the suggestion there could be a ladder of guild. It could be a GvG alternative for PvErs…
Imagine an horde of centaurs running in your base and destroying your furniture… wow
(edited by Alcarin.9024)
I’m not sure if this is even worth looking at, but there’s still that bug where IIS crashes with a text/html response when the parameter list gets too big. Probably because IIS/ARR and the private API do not agree on the maximum URL length.
Example: http://pastebin.com/nXSR8kSb
The only problem I see in that request is that the server reply with a 404 error instead of 414 error. The URL is 2215 character long, it should be less than 2000, and the request is to have 550 items where you should only request 200. I think that you cannot have a json reply in this case, because in my opinion your request is stopped and rejected by IIS, it never reach API level. I don’t know IIS, but this response is seems to me like error page configured in apache, in this case when apache read the request, it reject it and reply with its default error page (in this case reply with a 404 error, but it should reply with 414 error) that it’s a plain html file similar to all error page saw in GW2 web services. Probably they never thought that they need a 414 page error (for a normal web service like website or forum is really uncommon to have url length problem) and didn’t created that page error, so the server reply with a default 4xx error.
I would like to ask that everyone remember that not all guilds will want any form of PvP, and giving guild halls a PvP function may place limitations on them that would otherwise be avoidable.
That is not to say that there is anything wrong with the idea, far from it. Simply remember to balance the non-PvP ideas as well, so everyone can get something good out of it.
This is exactly what I said in my proposal, GvG is a PvP feature and must not be linked with GH that is a PvX feature.
In my opinion GvG map should be a keep separated from GH, there could be customization and all sort of thing you want inside it, but should not be part of GH.
Mixing them will only create more problem to be solved and will slow down development of both.
Please don’t mix them!
Associated Risks
Such type of items MUST be build in an instanced GH, I don’t imagine what kind of problem could be placing them in open world. This idea is linked with my previous one, so GH should not be used to GvG, it could be awesome to destroy items in the opponent guild, but this will create a lot of problem not easly solvable (items placed to block passage, or in strategic position, etc…).
There could be problem in overlapping items, I don’t know if it is a real technical problem, it could be partially solvable thanks to the weapon that destroy items, but a problem that may occur should not block this type of feature!
Single man guild could be a problem, it increase the amount of GH with items a lot, but if GH need influence to unlock and items need also influence to be build, it should not be a great issue.
P.S. The idea of looking guild mates when they are literally building their GH is simply awesome!
One lack of my previous proposal was a customization system that allow to place object inside GH. I read that it’s an high requested feature so I’ll try to describe this with the same “fast development” spirit of my previous proposal.
Proposal Overview
GH customization like WvW siege
Goal of Proposal
Provide a GH customization system that could be easy/fast to implement by developers (use already available game mechanics).
Proposal Functionality
My idea of customization is inpired by WvW siege.
You could buy items blueprint from an NPC (or produce them with the existing influence system). Using the blueprint will change your weapon skill and allow you to correctly place the item (just like siege weapons), placing the item will create the raw structure that need to be built.
The kind and size of items can be a lot different and may depend on GH map size and terrain. It could be allowed to build buildings (if there are no technical impediments with such large objects, such as collisions etc…), or only items like furniture, statue, fountain, ecc….
There can be texture variation for each items (they are essentially different items, you are allowed to chose one when buying it or just after using it, like selecting stats for legendary weapons), allowing different color and material for some items.
Resource:
For WvW siege, supply are needed to complete the siege. GH items could be free of charge (you only have to buy them) or they can need resources in order to be completed. In example you could need wood in order to build a platform, or need metal ore/lingot in order to build a statue, or cloth to build a carpet, soulbound items may be required in order to require a wide guild mates partecipation. Some items may give a buff when interacted (when completed) so resources should be needed to complete them (in example, a flag that give magic find may require cloth, metal, and ecto).
If is possible to build interactive items, could be great to build (in example) crafting station in this way, so if your guild want a tailoring station in their GH, they must gather enough cloths to complete it. If it is difficult to build items like crafting station in this way, you could build a “crafting station prototype”, this item give you a single skill when interacting to it, that skill activate the crafting station destroing itself and at the same time create kittenable crafting station in the same place with the same look.
Object limits
In order to prevent abuse, items should be placed only by guild member that have the right permissions (guild builder), and they should be placed only inside the GH. To get this objective, member with right permission could have a buff when inside GH, and only member with that buff can place items, everyone in the guild could be allowed to build such placed items.
Items should be limited in number, it will be the best if items are splitted in different category, each with their own limits (in example building should have a smaller limit than furniture).
Last but not least, there should be a weapon that can destroy items (and only that weapon can), this weapon could be used only by members with the guild builder buff. The number limit, also force guild builders to think well what they want to build and where.
Unlike WvW siege weapons, GH items must not disappear. I don’t think it is a big problem (build items should simply not have the despawn buff), but it is important that built items should remain in GH until they are explicitly destroied.
Moving items
What happen if I place an item in a wrong position?
There are two possible way to manage this situation that could often occur:
1) Interactive movement: items shoul be interactable and allow to move just like siege weapons could be rotated. Not all items could work in this way, furniture could, buildings cannot (well, they could, but it’s strange!). There could be a problem with character animation because he is moving an item from distance!
2) Items could be converted back to blueprints, or at least give back resource (all or a part of them) needed to build them in case they need resource like wood etc….
3) Items cannot be moved, you have to be very carefull when placing an item.
Best soultion in my opinion is the second, but could be triky for some items if they change after activating them (like the example of crafting station implementation I writed above), and may be difficult to give back resource (maybe can be sent to guild bank?). Third solution is still acceptable, a better solution may be found in the future, but will allow to get this system as fast as possible.
Associated Risks
in the following post
Proposal Overview
GH as instanced LA areas, no link with GvG, fast develop
Goal of Proposal
Have a guild Hall system tha have minimum technical implementation cost, is linked with Living World, and have no balancing problems.
Proposal Functionality
Technical implementation costs:
Implementation cost is higher as much as are the number of new features/mechanics that need to be implemented in the GH system, so reducing the number of not already existing functionality will speed up the development process. There is always time to add new features.
GH should be instanced, there are too many problems (not easly solvable) in placing them in an open area. Instanced GH also have the benefit of a faster map travel time (less building and less players to load), and that they can be customized.
Core customization should be crafting/TP/bank/merchant NPCs that should be individually unlocked by the guild. Other good upgrades could be portals or teleport NPC (main cities/wvw/fractal/dungeon to help guild organization), boost (exp/karma/gold/magic find/wxp/etc…) banners (once unlocked they should remain at least a couple of days, then they have to be unlocked again), and resource nodes.
Because GH are instanced their size could be different, and maybe it can be expanded (to have more space and as a requirement to unlock some feature, in example portals/crafting room), this can grant a minimum space for small guild with few resources, and larger space to big guilds with lot of resources.
Living World:
LA has always been a place where different cultures meet, its reconstruction should be an effort for every Tyria culture. Every race, orders and guild must partecipate to their reconstruction. Guild Halls could be a gift from LA to thanks who helped its reconstruction. So various places inside new LA should be dedicated to a certain race/order/culture (following each building style). Those places could be used as gates to the instanced GH, and each GH should use the proper building style. Very good the idea of GH inside an airship, what about one underwater (Quaggan?)?
GH should be a guild unlock that should cost influence, this cost is the help given by the Guild to LA reconstruction.
GH should be bound to Tyria History, what a better choice than make them bound to LA reconstruction?
Two words about GvG:
In my opinion GvG should not be directly linked to GH. GvG maps should be island in the Mists for this reasons:
GvG is a PvP feature, why bound it to PvX feature?
This should greatly speed up development; This make QA test of GH and GvG a complete different task, GH should not be under a looking glass to prevent any hack/unbalance issue that are very important for a GvG map. Also GH object positioning and map feature (room unlocking, etc…) could cause effect on GvG map terrain (in exp, where place asura gates?), why we want those troublemaking decisions when we can simply separate GH map from GvG map?
Could solve logical geographical problems (where are GvG castle placed, in LA or in other maps? Those maps shoul be modified all to embed those castles? And also, every GH maps should contain 2 entire castle?).
GvG map choice could be changed at will without changing GH.
So GvG and GH maps should be build for two completly different reasons, and each must be build ad hoc to accomplish only their specific needs. Do not merge them, or you will have to solve a ton of little problems.
Two words about currencies and future features:
Influence and merits are the current guild currencies, they could be better balanced but do not add new currency, it is unnecessary and complicate guild managment (expecially linking a currency to a specific kind of activity, it may force guild mates to not do what they like to do in order to help their guild).
This is not the right CDI for the next suggestions, but I don’t know if there will be some covering those topics…
New instanced guild activity (that can be started from GH) could be:
Boss rush: kill the boss as fast as possible, less time more reward.
Keep siege/defence: PvE event, keep assault/defence versus mob horde, defend/destroy protected object. May be time limited and/or reward based on kill number. May reuse GvG map.
Those event must scale to guild size and partecipants. May have separate Guild Leaderboard (competitive PvE!).
GW2 GH should have GUI button to enter/leave, like GW1 GH.
Associated Risks
Very difficult point to write! I’ve read various post in this topic (not all, it’s a madnass to red 200 post writed in under 24 hours! Chris how do you do it?), and I’ve tried to solve a lot of them keeping developer time as low as possible ( we want GH now! ). I really don’t know how my proposal could be a problem for someone, please let me know what you think!
Way more interesting would actually be the [item_type] part (hope you also changed the naming of that because it was a pain to “guess” the right identifier for that subobject).
Example:
https://api.guildwars2.com/v1/item_details.json?item_id=49412Nope, sorry. That’s still passed-through as-is. Only difference is that we send back numbers as numbers instead of strings.
Oh, that isn’t too bad at all, though. Thanks for the info! However, any chance to get that subobject renamed in a more common way, something like “item_details” (or “itemDetails” in correct camelCase) or just “details”?
I misunderstood your question, sorry. It’s been standardized to “details”. I updated the gist w/ examples of the item you used.
Ok, I saw that the answer for my previous question is no, and I can understand why.
From your last example ( API v2), I can see that “suffix_item_id” is not present but “secondary_suffix_item_id” is present (but empty). I suppose that “suffix_item_id” is not present because Trinket don’t have a slot for rune/sigil, but why “secondary_suffix_item_id” is still present?
Will the json schema for item details change at all? Or will it be the same as v1, but with added support for bulk requests and pagination?
Very similar, but we’ve fixed some types & done some of the work for you in terms of turning items into icons.
Thanks for the info! Have you also fixed armor/weapon bonus for boon duration and condition duration that are listed inside “buff” instead of “attribute”?
I’ve noticed a huge increase in items after the 9/9 update. Is this normal? Does some API bug been fixed in this update that may justify such amount of new items (seems finally we have “Journeyman’s Salvage Kit” and “Fine Salvage Kit”, but not yet “Master’s Salvage Kit”)? Are there bugs that (just a guess) have changed item_id of some items effectively duplicating them? Have you collected some data about this item update?
This is a spreadsheet with new/updated items each day, we are talking about 3600 new items and 1200 modified items.
No sure if it is inteded or is a bug, but in my home instance I no longer have my mining nodes (Candy Corn, Quartz Crystal and Sprocket Generator) if I enter the instance with a not-80 character (in ex an alt). If I enter the instance with my lvl 80 characters I can see my mining nodes. This problem started with 9/9 update.
I had tha same problem, it is due to a 404 error on css file (that define the style of the page). I solved the problem opening this page https://guildwars2.staticwars.com/wp-content/themes/guildwars2.com-live/css/gw2.4104382584.css?ver=3.5.2 and pressing CTRL-F5, if you don’t see a lot of text like the attached image, press CTRL-F5 again until you see it. It worked the first time with Chrome, with Firefox I had to do it 5 or 6 times.
After that you see that text, you could open GW2 homepage.
It could work also clearing the browser cache.
For Developers: I see other files with 404 errors, I can read “X-Cache Error from cloudfront” in response header, are there problems identifying if the requested file is cached or not?
Don’t trust local.dat, you don’t know if the position or the coding of the language could change tomorrow. In that case you need to stay up-to-date with current local.dat format, maybe it never change, maybe you need to update your application every 2 weeks or every feature packs.
I think that the best solution could be detect system language, and if the system language is one of the GW2 “known language” use it, otherwise use English.
I agree with smiley, in any case you should allow the user to overwrite any detected language.
I made a test to try to guess what is the order and why ( http://jsfiddle.net/Alcarin/gy13r52t/2/ ).
Results are that if you request 60 times 36088,46047,46054,45881,46045 you get:
30% of the times 36088,45881,46045,46047,46054
10% of the times 36088,45881,46047,46045,46054
10% of the times 36088,46054,45881,46045,46047
10% of the times 36088,45881,46045,46054,46047
40% of the times are splitted in other 14 different orders
So my guess here is that each request is split in different workers, each worker search for a single item, and the response is built when all workers have found their items. Backend database order should be ascended by item_id, so most of the times workers complete their job following that order, but if some workers is little busy, there may be a very little delay that cause the order to no longer be ascended by item_id.
So, don’t trust at all the response order. Reorder the response as suggested by smiley, or perform a search inside the response to get items in your desired order.
Gewd, I’ve tested the url that you used, and I’ve had only results under 3 seconds with my pc (with about 50 downloads), I’ve checked also with my phone I’ve had only 1 time 10 seconds (probably due to mobile line), most of the time I get that page in under 4 seconds.
How are you downloading it? How much request/second are you making?
You have to download all items and than check the item with more sells/buys, use http://wiki.guildwars2.com/wiki/API:2/commerce/prices if you only need quantity of sells/buys with their relative lower/higher price.
Thank you for the info Stephane!
Number of ids are limited by the URL length, so the response cannot return more than about 500 items assuming ids of 2 or 3 characters, or about 320 with ids of 5 characters (if I’m correct, most of the items have ids with 5 characters). So it’s not needed to limit the amount of items in order to avoid long DB query.
On the other hand, using pagination could very easily cause long query if the number of object per page are too much, so a check to limit the amount of items per page is needed.
This decision make sense to me. Especially if items returned with pagination have some sort of ordering.
The only thing that could be “strange” is the difference between 200 items with pagination, and the 300 items with ids. But probably the only reason why this seems strange to us, it’s that we don’t know DB structure.
Max URL length is about 2000 characters (not technically 2000, but it’s better to use this as max), so it can contain at maximum about 324 item_id assuming that each item_id is 5 character length.
“https://api.guildwars2.com/v2/commerce/listings?ids=” is 52 character length;
item_id is maximum 5 character length + 1 comma to separate items;
(2000-52)/6=324.83
I’ve not done any test yet, but if GW2 APIv2 have no limit, you should consider to limit number of item_id to 320 per request to be sure to not get any errors.
There are no Runes of Holding, at least in LA crafting merchants.
how about saving the combat/chat log to a text file?
This will be very useful. Combat log saved to file mean also the possibility to post-analyze data. This could, in example, be used to effectively compare different build in a very objective way.
IMHO ArenaNet communication is very disappointing. It seems that they not care at all about API users. Why are we wasting our time and resources to provide services about a game that do not care about us and do not inform us about new/changing features?
This is about the same situation of when megaserver break API v1.
I’m scared that if this is the way ArenaNet work, we have only to wait until a next breaking change without any advice. They will stop after the third breaking change? I don’t think so…
There are no official API for TP data. Data was taken emulating in-game TP, that’s why we are scared about TP changes.
Anyway, in the last POI, devs said that old TP will stop to work when the new one will be put online.
So websites and application that use TP data will stop to work on 9th September until a solution is found and applied by each developer.
It’s very disappointing, especially to not have been informed in advance.
Anyway, now you know why from 9/9 will be problems on such websites/applications.
Me and other developers are worried about new TP. Many websites and some programs are used to collect data from TP trought webpages used by the in-game TP. With the new TP, does this pages changes or data returned by those pages change format?
Can we be reassured or not about this? If something change, can we be informed about change so we “hope” to have time in this 4 days (with a weekend in middle) to make necessary changes?
I know that this is not the correct forum section, but “API Development” section seems
abandoned for months. We urgently need to know if something will change, and in that case we need to warn our users that it’s possible that many TP-based website/program will no longer work from 9/9.
Ok, no TP API yet…
We will be discover the API on 9/9? It’s very frustrating the lack of info from AN. I think that they should give us more info, and in advance. I know that probably developers are busy, but are months that developers don’t write in this forum….
Should we create a post on general forum?
(edited by Alcarin.9024)
I’ve very appreciated this post, first because we hear again MO (there were about 2 year that we don’t listen/read something by him), second because it demostrate that ArenaNet care about what the community think.
I want to give a suggestion about game feedback/suggestions.
The main problem I think CDI have are:
- restricted time frame: CDI topics are not always opened to accept ideas, they have an end. Ideas cannot have a timeout. Any ideas born after CDI close well be simply lost, despite how good is that idea. Maybe that idea can solve problem raised during CDI, but we will never know. Often ideas about something, born when you are not thinking about it, so greater ideas could born and be forgot when a CDI about that topic is not open.
- dispersive: ideas are spreaded across pages and pages of forum posts, it’s not easy to summarize all ideas, and to track popularity of each idea.
The main source of this issue, in my opinion, is the media used: a forum.
GWW , was a better place to gather feedback and suggestions, not the best possible, but it was a lot better than a forum. An idea was well and extensively explained, there was talk pages to discussion about each single ideas, and ideas was grouped in category to better track different ideas about the same game feature. Last but not least, it was open 24/7/365 to accept ideas from everyone about every topic.
The best solution it should be an “ad hoc” web platform, it should allow:
- basic html formatting to let writers to better organize their idea (a WYSIWYG editor could be appreciated);
- ideas categorization: each idea should be a possible new category to be used by new ideas, or there should be a tag system to categorize ideas;
- voting: it’s important to see, not only feel, how much an idea is appreciated;
- votable comments: let other user contribute to idea writer, most voted comments should be highlighted to let “readers” that have little time to read only most important comments;
- ARenaNet read flag: a simply flag that show that an idea as been read by a developer;
This solution will grant an high readibility (most developer can read ideas here withouth wasting too much of their time) and allow the community to post their ideas whenever they want in an extremly tidy way.
I can create an example platform if someone want to better understand my idea.
I don’t think that this is the right forum. This forum talk only about GW2 API (interface between GW2 game and external applications). So it’s not related to any other side of GW2 development.
Other than that, this forum is pratically not followed by any developer.
I think that right forum could be “GW2 Discussions”.
Here is an example of what are you asking: http://pastebin.com/XRruKP8f
Alternatively, you can adjust downloaded value directly in download function, as shown in this example: http://pastebin.com/MYkaF1jZ
In my examples I’ve stored final values in variables because I don’t know how you use them.
When writing code that relay on an API service, keep in mind that a connection to get data from a server is a cost (for you and for the server, in terms of hardware resource utilization and time), and you should always try to reduce as much as possible the cost of your application.
In your example, you are creating 4 connection to a server to know 4 information about an item. If you look at the url about that item, you see that you are asking to the server 4 time the same informations each time discarding all you get exept 1 piece of that ifnormations. This is a waste of resource, it’s not that much if you (for example) get information about 4 different items, but for each items you add 4 new connections, and if you want to know info about 100 items, you will make 400 connections, 1000 items=4000 connections.
Regarding time needed to get information, if every connection cost 200 ms of “idle of your program”, to get all information about a single item your program have to wait 800 ms, to get info about 4 items your program must wait 3200 ms (3,2 seconds), 100 items you have to wait 80 seconds. Reducing the amount of connection you programe idle time will be 1/4, so to get info about 100 items you only have to wait 20 seconds.
In your specific situation, you should separate connections from data elaboration.
I would do so:
Create a function that get data from gw2spidy:
function GetItem(ItemID){
[...cut...]
return jsonObject
}
and then create a function for each data you need, passing the jsonObject to them:
function GetItemSellValue(jsonObject){
return (jsonObject.min_sale_unit_price /100)
}
About help on programming: I don’t know much about google spreadsheet, if you want to learn javascript there are a lot of website with guides, personally I use W3Schools and MDN as reference and some non-english for guides.
In this forum you could find a lot of examples on how to use GW2 API (not GW2Spidy API, GW2Spidy API are not developed by ArenaNet) but they are in a lot of different programming lenguage, I don’t know how much of them are in JavaScript.
You could find something in GW2 API Wrapper List or List of Application that use GW2 API.
If you have problem with some piece of code, if you ask here and post or link to your code I’m sure that someone can help you!
Don’t use images if you are sharing your code to get help, if someone want to help you and want to try your code, they have to rewrite it all, they cannot copy&paste it, use pastebin or jsfiddle) instead!
This should be a bug. There is no reason for this flag, item_id 8469 IS the item in the gem store, it was added 5 August:
http://www.gw2services.com/items/show_news/05-08-2014
and there are no other items with the same name:
http://www.gw2services.com/items/search/primer
My 2 cents regarding cloned Quaggans:
API should not waste resource printing duplicate items (Quaggans are 35, but what happen when you have to search in 36000 items?). I think that it should check for duplicate, if duplicates are found it should throw an error with a 302 HTTP redirect to the list of same objects without duplicates.
In this way error is thrown, and is also very easy to correct the wrong request (that is very helpful if list are hand-written).
It is also a solution accessible, and easly applicable, by (I think) all endpoints.
API 2.0 is really near the be available (there was a tweet of a developer that was removed probably due to problem found on API 2.0). We are waiting from a long time this API 2.0 and probably it’s this very close release that makes it seem that the time is not flowing.
We have just to wait a little more. How much more? A lot less compared to what we have waited until now.
Personally I prefer that developers spend their time developing instead of writing to a forum ;-)
For those interested, I’m tracking new items (within 10 minutes from discovery) and updated items (within about a week from the update) at this page (rss feed also available) http://www.gw2services.com/items/news
That’s pretty much the changes I was alluding to and presented far better than anything I could have made I’ll have to start watching this.
Thank you! I’ve forgot to mention that other than RSS feeds, updates are spread trough Facebook, Twitter and Google+, so you may get updates just following the website on one of those social network!
I think that items discovery is necessary in GW2 API, to not preventively spoil items and to not show “service items” such as items with id 1,2 or 6 (although sometime doesn’t work as expected!). I think that this kind of discovery have more sense with recipies than with items, but that’s what we have.
I’ve noticed that Hero’s Rare weapons are not all discovered, contrariwise to Exotic ones. Aren’t they been bought? Maybe, but it’s not “clean” to have only half of them in GW2 API.
I hope that APIv2 doesn’t suffer from same bugs!
For those interested, I’m tracking new items (within 10 minutes from discovery) and updated items (within about a week from the update) at this page (rss feed also available) http://www.gw2services.com/items/news
Shoud be writted in some post, but API 2.0 should be developed with OAuth support, to get “personal” information regarding players account. A developer said that OAuth support is already “completed”, API function that can get information through OAuth are under development.
Good suggestion, but unfortunatly I don’t think someone will read it on this forum…
During beta weekends I’ve suggested a similar TAB organization for Crafting UI, because it’s a pain to scroll the complete list of items..
I’ve added damage_type choking as known value on wiki documentation, altough it seems a test item, also the name of the only item of this type (id:6) is “((Assassin Coin Bundle))”…
Container type OpenUI and Gizmo type ContainerKey are used only for the new Black Lion Chest and Key, they are been added in the wiki documentation on 12 June.
I was experimenting with chat code creation and found that is possible to create chat links code of weapon with runes and armors with sigils.
You could try this code for the armor: [&AgH3BgBg5F8AAORfAAA=]
and this for the weapon: [&AgEVNQBgtFIAAG9gAAA=]
The weapon code abose is also using a PvP Rune (it’s not a superior rune but have 6 bonus) on a PvE Staff.
I’ve verified also that it’s not possible to use a skin of a different type of item (no chat link displayed if try to use a staff skin with a sword item), and use as upgrade component an item that is not an upgrade component.
Thank you very much, it worked!
I’ve made a website that (for the moment) show items info.
www.gw2services.com
Very good, thank you for sharing it!
I have a little problem, I use your overlay in my second monitor, and I don’t want that it stay always on top of other windows. I can set the position to normal and it works (don’t stay on top), but when I restart windows, the overlay is again on top of every other window. Is there a way to permanently set to normal? I’ve tried to change the rainmeter.ini from alwaysontop=1 to alwaysontop=0 but it change somehow back to 1 on unmount/mont the skin…
9. There are 2125 weapons withouth info about stats (weapon.infix_upgrade), some are correct, but a lot no, I’ve saw a lot of Exotic weapon withouth any info about their stat…
I bet most of those will have Pillaging/Explorer’s/Traveler’s/Wayfarer’s prefixes.
When Magic Find was removed as an equipment attribute, all affected items were modified to remove the infix attributes. At the same time, they added a new architecture to the game where players can double-click an item with no stats to select the stats from a list.
The problem is that weapon.infix_upgrade it’s not empty, it’s missing!
There are also 445 armor piece with the same behavior, 50 Back, 94 Trinket. But 2125 weapons (they are 14417 in total) are a lot. I can provide a complete item_id list if needed, but just for example:
https://api.guildwars2.com/v1/item_details.json?item_id=25951 http://wiki.guildwars2.com/wiki/Faithful
https://api.guildwars2.com/v1/item_details.json?item_id=623 http://wiki.guildwars2.com/wiki/Jatoro%27s_Boots
I picked up 4 random items with the problem, 2 of them have no wiki page, the other 2 are the above listed.
I don’t know if it’s normal, maybe there is a good reason for this, but I have no info about this noticeable behavior.