These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE General Discussion

 
  • Topic is locked indefinitely.
12Next page
 

Sell All Button?

Author
KnowUsByTheDead
Sunlight...Through The Blight.
#1 - 2012-04-25 20:33:53 UTC
I have seen a lot of people complain about this, in chats, on FB, etc. Is it just not possible to do this, or is CCP just being dense when it comes to listening to the player base?

Once you realize what a joke everything is, being the comedian is the only thing that makes sense.

AFK Hauler
State War Academy
#2 - 2012-04-25 20:35:43 UTC
KnowUsByTheDead wrote:
I have seen a lot of people complain about this, in chats, on FB, etc. Is it just not possible to do this, or is CCP just being dense when it comes to listening to the player base?



I still don't see the "Dislike" button... CCP must fix it now!
Tippia
Sunshine and Lollipops
#3 - 2012-04-25 20:46:22 UTC
KnowUsByTheDead wrote:
I have seen a lot of people complain about this, in chats, on FB, etc. Is it just not possible to do this, or is CCP just being dense when it comes to listening to the player base?
It's possible — it's just very very mean to the database the way it works right now.

Basically, think of what the client does when you just rclick-sell a single item: it fetches the market value for that item, figures out (or at least tries to) which is the best price you can get from your location, and then calculates how awful that deal is… All of this takes a noticeable (but not necessarily frustrating, depending on where you are) amount of time due to all the DB calls that have to be made.

Now think of how this process plays when you do it for 50 items — all that clicking and waiting for market data quickly adds up, and you can imagine the amount of DB lookups behind it all, but at least they're spaced out a bit so the server shouldn't be swearing too much.


now imagine what would happen if you asked it to do all those checks at once. The amount of DB calls to get all the data and calculate all the values and relative order values; all the extra calls needed to check that all items can actually be sold (otherwise it wouldn't be a very useful “sell all” button, now would it?); and how many pots of tea you could brew in the time it took for the UI to start responding. Also, try to think how this will be presented to cover such eventualities as having to fill multiple sell orders at differing prices for many of the piles of stuff you're trying to sell — how will this information be conveyed in an understandable manner?

It's not as easy as one might imagine due to how the market works and due to how we interact with it. It's probably not impossible, as such, but it would require some pretty severe fiddling with both the back-end and the front end of the market mechanics to make it all work without having both the client and the server blow up.
Roll Sizzle Beef
Space Mutiny
#4 - 2012-04-25 20:48:11 UTC
I would love a sell all button. Then I can pick up the vast majority of your crap for 1isk when I'm the only close buyer.
TWHC Assistant
#5 - 2012-04-25 21:03:52 UTC
There is no real need for a "sell all" button. You can reprocess most items and sell their minerals. Or you can auction it all off with a single contract. This is probably why CCP does not see it as a high priority feature in need of implementation.

Technically it is very much possible, but it is not a small thing to do. Just think of all the transactions it needs to make and having to handle the conditions that can occur like not finding a buy order for an item or a buy order filling up and disappearing.

And do not forget that it is still just a game and the point of a game is to let you do something, not to let the game do everything for you.
KnowUsByTheDead
Sunlight...Through The Blight.
#6 - 2012-04-26 00:08:57 UTC
Thanks for the input (especially you Tippia), was something I had always wondered and never had the answer to. Thanks guys

Once you realize what a joke everything is, being the comedian is the only thing that makes sense.

Just Alter
Futures Abstractions
#7 - 2012-04-26 00:32:51 UTC
I'm also of the opinion that a sell all button would be really useful.

As for the db call: just give it a loading bar like the undock one.


I'd also think that it could actually be less stressful for the servers.

Just think in jita, how many people click sell at the same time?
With this feature many of that clicks would be handled by an algorithm.

However ccp has definitely more important things to do than this.
KnowUsByTheDead
Sunlight...Through The Blight.
#8 - 2012-04-26 00:36:18 UTC
Just Alter wrote:
I'm also of the opinion that a sell all button would be really useful.

As for the db call: just give it a loading bar like the undock one.


I'd also think that it could actually be less stressful for the servers.

Just think in jita, how many people click sell at the same time?
With this feature many of that clicks would be handled by an algorithm.

However ccp has definitely more important things to do than this.


It isn't really an issue for me personally, just one I see come up often and am quite curious why it hasn't been addressed or iterated on. But yea definitely agree that CCP has bigger fish to fry lol

Once you realize what a joke everything is, being the comedian is the only thing that makes sense.

Ai Shun
#9 - 2012-04-26 00:42:11 UTC  |  Edited by: Ai Shun
Tippia wrote:
Now think of how this process plays when you do it for 50 items — all that clicking and waiting for market data quickly adds up, and you can imagine the amount of DB lookups behind it all, but at least they're spaced out a bit so the server shouldn't be swearing too much.


I would be very, very surprised if CCP was issuing multiple calls to the database when it could be wrapped in one. If you're looking at optimal what would you have:

Option 1 - Individual requests for each bit of information
(Request 1 to Server) - (DB call) - (Response 1 to client)
(Request 1.1 to Server) - (DB call) - (Response 1.1to client)
...
(Request 1.5 to Server) - (DB call) - (Response 1.5 to server)
(Market Window displays)

or

Option 2 - Single request for all information
(Request 1 to Server) - (DB call in elegant T-SQL) - (Response 1 to Client)
(Market Window displays)

Granted, the larger the volume of data transferred the longer the response will be - but if CCP is making multiple calls to the database to generate the market information for one sell order they are doing something wrong. With proper indexes, etc. that data should be very accessible to a single statement.

This is of course based on the presumption that, as their dev blogs on hardware and their data dumps show, they are actually using a SQL back-end. If it is a homebaked solution then all bets are off.

Edit: Now that covers the request for data. You still need to submit the sell orders and any that fail (Order filled etc.) will need to come back again. But those can be wrapped in a single response as well and properly handled on the client end in whichever way the client wants.

I just can't buy the DB as being the limiting factor in this. It's not sensible.
Just Alter
Futures Abstractions
#10 - 2012-04-26 00:49:09 UTC
Ai Shun wrote:
Tippia wrote:
Now think of how this process plays when you do it for 50 items — all that clicking and waiting for market data quickly adds up, and you can imagine the amount of DB lookups behind it all, but at least they're spaced out a bit so the server shouldn't be swearing too much.


I would be very, very surprised if CCP was issuing multiple calls to the database when it could be wrapped in one. If you're looking at optimal what would you have:

Option 1 - Individual requests for each bit of information
(Request 1 to Server) - (DB call) - (Response 1 to client)
(Request 1.1 to Server) - (DB call) - (Response 1.1to client)
...
(Request 1.5 to Server) - (DB call) - (Response 1.5 to server)
(Market Window displays)

or

Option 2 - Single request for all information
(Request 1 to Server) - (DB call in elegant T-SQL) - (Response 1 to Client)
(Market Window displays)

Granted, the larger the volume of data transferred the longer the response will be - but if CCP is making multiple calls to the database to generate the market information for one sell order they are doing something wrong. With proper indexes, etc. that data should be very accessible to a single statement.

This is of course based on the presumption that, as their dev blogs on hardware and their data dumps show, they are actually using a SQL back-end. If it is a homebaked solution then all bets are off.

Edit: Now that covers the request for data. You still need to submit the sell orders and any that fail (Order filled etc.) will need to come back again. But those can be wrapped in a single response as well and properly handled on the client end in whichever way the client wants.

I just can't buy the DB as being the limiting factor in this. It's not sensible.


What i was wanting to say more or less.
ELECTR0FREAK
#11 - 2012-04-26 01:23:23 UTC  |  Edited by: ELECTR0FREAK
I can forsee a sudden increase in the number of petitions if a Sell All button was implemented.

"I can just sell all this, it's junk... ca-ching, 15 million ISK richer!
... wait a sec... why aren't my Officer fits in their can?! Did I just... !!!"

[F12!!!]

So in short, CCP should go for it, just give me time to put up a whole lot of Buy Orders first!
MadMuppet
Critical Mass Inc
#12 - 2012-04-26 01:43:33 UTC
How about a 'sell this item for whatever I have selected whatever I can get for it' hot-key-able command?

Then again, I just finished training scrapmetal processing so I really don't care.

This message brought to you by Experience(tm). When common sense fails you, experience will come to the rescue. Experience(tm) from the makers of CONCORD.

"If you are part of the problem, you will be nerfed." -MadMuppet

Thor Kerrigan
Guardians of Asceticism
#13 - 2012-04-26 01:52:35 UTC
Right-click, select all, reprocess.
Even the faction mods.
Even the dead-space mods.
EVEN. THE. OFFICER. MODS.
...
Profit from selling them all.

If it really is too much of a hassle, I will gladly act as a third party, for a small fee, of course Blink
Tippia
Sunshine and Lollipops
#14 - 2012-04-26 02:07:00 UTC
Ai Shun wrote:
I would be very, very surprised if CCP was issuing multiple calls to the database when it could be wrapped in one.
[…]
This is of course based on the presumption that, as their dev blogs on hardware and their data dumps show, they are actually using a SQL back-end. If it is a homebaked solution then all bets are off.
[…]
I just can't buy the DB as being the limiting factor in this. It's not sensible.
It's MSSQL last time I heard. Anyway, yes, I'm sure a lot of it is folded up into one request, but I also think that there are things that are being handled inefficiently… somehow… somewhere.

Granted, I can't tell from my position whether it's really in the DB calls/responses or if it's in the client trying to collate and filter that information for display in the trade window, but just sit down for a while and compare the response time you get from just doing a “show market details” on an item and trying to sell it — I consistently feel that the latter is slower. It could just be a matter of the sell window having a few built-in filters that just makes the DB call slower, or the same filters meaning the client has to discard more junk data that comes back, but there is a difference.

And likewise, yes, you could probably optimise things if you did a mass-sell, asking for more than one cluster of item data at once, but once again, just looking at the difference you see from loading an “item class” list in the trade window and trying to actually get useful sell info on those items, and it's a significant difference.

Either way, without some pretty significant optimisations in how data is retrieved and/or managed on both ends, I foresee a trade-all function as scaling horribly as the number of items increase. There are undeniably some inefficiencies there (just look at the fanfest presentation where they discussed improving client-side lag, where the trade window showed huge room for improvement, some of which had already been made), and this kind of mass-negotiation of suitable data will probably activate all of them at once.
Burseg Sardaukar
Free State Project
#15 - 2012-04-26 02:56:02 UTC
A sell-all button would be a great "little thing" I'd like to see implemented. Even if I was forced to set a "cannot be lower than X regional average" I'd be fine.

Can't wait to dual box my Dust toon and EVE toon on the same machine!

Ai Shun
#16 - 2012-04-26 04:09:09 UTC
Tippia wrote:
Either way, without some pretty significant optimisations in how data is retrieved and/or managed on both ends, I foresee a trade-all function as scaling horribly as the number of items increase.


I agree with that. I'd be happy with a way to batch multiple orders into one view and submitting them. Even if it takes a while.
Marcus Ichiro
IchiCorp
#17 - 2012-04-26 04:10:30 UTC
A sell all button would absolutely destroy the servers.

If you want to sell all your items in a station just pick out the valuable ones and reprocess the rest.
Ai Shun
#18 - 2012-04-26 04:32:11 UTC
Marcus Ichiro wrote:
A sell all button would absolutely destroy the servers.


It depends on how it is handled. Take, for example, a solution like this:

(a) Select items for sale as per the Reprocessing view with an upper maximum for the batch.
(b) Fetch market data for those items; which runs a query against the back-end server to update details for the items. This should be possible in a single query.
(c) Show a UI where the user can see the list of items against market average, max, min prices, etc. Not the full detail, just the useful bits.
(d) User configures the price for each item.
(e) Client begins sending sell orders for each item in the list, with a minimal delay between items (OR batches and sends it all in one with an async update as they are processed)

This should see slightly better performance than a right click-sell, ok, right-click-sell, ok, right-click sell, ok scenario.

Look at it. If you have a numeric data type with precision between 29 and 38. That consumes 13 bytes. How many numerics would you need? Item ID + Quantity + Regional Average + Min + Max. What else? You wouldn't give full market details - just an overview. Let's call it 256 bytes per item, which seems like hopelessly too much data. (I'd expect more like 64 - 128 bytes)

At 256 bytes per item you're looking at network traffic of 12800 bytes per 50 items. 200 items is 51200 bytes. 400 ... you can do the math.

At 128 bytes per item you are looking at 6400 bytes per 50, 25600 per 200 and 51200 per 400.

Add in a bit of overhead for the packet command structure, but it is still a very small volume of data. Now combine this ...

Yeah okay. I'm ranting a bit.

TL;DR It is slow currently; it should not be slow and it should be possible to do with the underlying technologies.

TWHC Assistant
#19 - 2012-04-26 05:35:24 UTC  |  Edited by: TWHC Assistant
Ai Shun wrote:
TL;DR It is slow currently; it should not be slow and it should be possible to do with the underlying technologies.

I completely agree with you. I believe that a "sell all"-feature is not only very much possible to do, but it certainly should get implemented so that it reduces the load on the servers and to be more than just a "sell all"-feature. People do sell everything currently and they do cause transactions for every item. A "sell all"-feature cannot be slower than how it already is done by the player unless one is stupid at programming.

One optimization I can already think of is to query the available buy orders for a list of items in one single request. The request should contain a max. average derivation for all items, too. The server then returns only those buy orders that can be filled at the time of the request and which fall within the threshold. The client then tries to sell each item (or item stack) one by one as before. What cannot be sold stays in the hangar just as before.

Another optimization the client could make is to try to sell two items simultaneously in a single request. If it fails then it will have to fail for both items, but the amount of time it saves will be significant while the failure chance of such a double-sell request will not be much higher than compared to a single-sell request. With a bit of added logic on the client side could the client switch back to single-sell requests in cases where the failure rate increases (i.e. at Jita peak time) and switch to double- or even quad-sell requests when the failure rate is low (i.e. off peak times and away from market hubs).

A third optimization is to estimate the success chance of a sell by looking at the lifetime and volume of a buy order. Buy orders, which fill by less than 10% per day and still have 50% of their volume left will have a high chance for accepting another 1%, for example. Such orders can get grouped into double-sell, quad-sell or just a N-sell request for selling multiple items in a single request.

Just three optimizations and there may be more in there, which will be worth exploring.
Chribba
Otherworld Enterprises
Otherworld Empire
#20 - 2012-04-26 07:52:24 UTC
Account hackers would love that option I think, instant clean out - although maybe they do already just reprocess everything I dunno.

★★★ Secure 3rd party service ★★★

Visit my in-game channel 'Holy Veldspar'

Twitter @ChribbaVeldspar

12Next page