diasurgical / devilutionX

Diablo build for modern operating systems
Other
7.7k stars 751 forks source link

[Feature Request]: Diablo 2 Style Trading? #6918

Open Chonkblonk opened 5 months ago

Chonkblonk commented 5 months ago

Feature Type

Quality of Life

Describe

The ability to actually engage in trading between two players while in town, is that something which would be possible? Specifically with a setup similar to Diablo 2's.

It may be a bit of a mod thing, but so is the massively cavernous shared player stash, and when people are able to stockpile all kinds of things, it would make sense to me if people could engage in actual trading, rather than some ad-hoc "Let's drop this on the ground and hope that the other guy is good on his word."

kphoenix137 commented 4 months ago

This is a very good idea. Anything is possible, only thing involved is level of effort to make it happen.

julealgon commented 4 months ago

Instead of just copying Diablo 2's system, isn't there some other better system out there that could be used? I heard that a more recent game did a nice trading system.

For reference (the game is Last Epoch):

kphoenix137 commented 4 months ago

Instead of just copying Diablo 2's system, isn't there some other better system out there that could be used? I heard that a more recent game did a nice trading system.

For reference (the game is Last Epoch):

* https://www.youtube.com/watch?v=Ih2lM9NEEUY

There a problem though with trying to implement a complex trading system: Diablo 1 allows players to swap items by dropping them to the floor. This is a mechanic that can't/shouldn't be interrupted. The need for a trading UI is based on the fact trading items requires the honor system. A simple UI that requires consent of both players to transfer items between themselves resolves the issue.

DakkJaniels commented 4 months ago

Instead of just copying Diablo 2's system, isn't there some other better system out there that could be used? I heard that a more recent game did a nice trading system.

For reference (the game is Last Epoch):

what is the actual suggestion here? because what I'm seeing here is totally out of scope of DevilutionX and would be a totally different game from Diablo.

julealgon commented 4 months ago

@kphoenix137 Diablo 1 allows players to swap items by dropping them to the floor.

You could change that, actually.

@DakkJaniels what is the actual suggestion here? because what I'm seeing here is totally out of scope of DevilutionX and would be a totally different game from Diablo.

I'm just implying that Diablo 2 is not necessarily the gold standard on everything, and that people should look at other games for inspiration, and also consider novel approaches as well, instead of just blindly copying what D2 does.

I'm not necessarily making any specific suggestions for an actual system though.

Chonkblonk commented 4 months ago

Instead of just copying Diablo 2's system, isn't there some other better system out there that could be used? I heard that a more recent game did a nice trading system.

Potentially? I just suggested Diablo 2's setup because it's really straightforward and it works. Diablo 1 doesn't exactly have a particularly sophisticated and complex economy or inventory system or anything. It checks if there's space in both player's inventory for whatever items are offered (accounting for whatever space any given away items may open up), both players click a checkbox to agree, and if both do, there's a short countdown and then it goes through.

I didn't sit through that video (it's really late and I'm very tired lol), but looking at the first few minutes, the subject seems to be about overall gameplay balance amongst people playing multiplayer collectively? And the effect on the overarching multiplayer meta and economy as well as balancing of the entire game around that? That seems like it would be well beyond the scope of base DevilutionX.

The whole balance thing kind of goes out the window when I can stockpile a hundred elixirs in my stash and then roll a new character who gets to use those boosts right away, along with whatever other cool equipment I feel he should use.

I'm just implying that Diablo 2 is not necessarily the gold standard on everything

Well, sure, that's fine, but my point wasn't so much about whether or not Diablo 2 is superior and whether or not DevilutionX should be modeled closely after Diablo 2, I just used it as an example because it's a really straightforward and functional setup which would fit easily enough within DevilutionX's scope, and which would probably be familiar to most contributors.

I may for instance very much like Morrowind's system of bartering, but suggesting that would be a radical departure from intended scope, that'd involve all new skills and attributes.

julealgon commented 4 months ago

@Chonkblonk ...but my point wasn't so much about whether or not Diablo 2 is superior and whether or not DevilutionX should be modeled closely after Diablo 2, I just used it as an example because it's a really straightforward and functional setup which would fit easily enough within DevilutionX's scope, and which would probably be familiar to most contributors.

Fair enough. You did mention "a setup similar to Diablo 2's." in the issue, after all.

This is probably just me overreacting to the common trend of people wanting to make D1 the same as D2 by porting every single feature from D2 as-is. I think that would just make the game worse, since I believe D2 is worse than D1 in numerous areas.

DakkJaniels commented 4 months ago

For real, won't be able to trick noobs by trading in dungeon and using telekinesis to steal their stuff. D2 trading system sucks.

qndel commented 4 months ago

Just a reminder that every message here sends a notification to a lot of people and discussions or discord are more suitable for discussing stuff like this ...

kphoenix137 commented 4 months ago

Just a reminder that every message here sends a notification to a lot of people and discussions or discord are more suitable for discussing stuff like this ...

Julealgon doesn't use discord

qndel commented 4 months ago

Just a reminder that every message here sends a notification to a lot of people and discussions or discord are more suitable for discussing stuff like this ...

Julealgon doesn't use discord

It's not a reason to turn every issue into a wall of text

AJenbo commented 4 months ago

Yeah I would keep it super simple, we are not a multi million dollar game company here.

Cons with current system:

This could be solved by a UI dedicated to trading:

To make it simple we could reuse the inventory for your side of the trade and instead of picking items up a click would mark the item as part of the trade. A stash like UI could then show what the other player is offering and have the accept button/toggle.

Additionally a count down can prevent someone quickly removing there trade item and finalizing the trade right before and the player accepts the trade.

Not I don't really recall what the D2 trading system is like so I'm mostly basing this of of DevliutionX and what has been mentioned in this issue. So any resemblance will be mostly coincidental.

NuSynth commented 4 months ago

maybe the trades between players could happen through Griswald? Players could right click on him to do player trade, and instead of seeing what Griswald has, they see what the other player is marking from their inventory to sell, and both have to accept the trade in order for it to take place? Not much, if any, new UI would need to be made. Just some change in logic to the way commerce is done for a new option added to Griswald.

NiteKat commented 4 months ago

Yeah I would keep it super simple, we are not a multi million dollar game company here.

Cons with current system:

  • Risks the item being lost on crash
  • Risk someone else picking up the items
  • Risk the other player picking up both there own and your item
  • It's easy to get tricked as you cannot inspect the item before the trade has effectively happened

This could be solved by a UI dedicated to trading:

  • Where the item is never removed from the player before an actual trade happens
  • You get to see what you will receive
  • Checks that both players will have room for the trade.

To make it simple we could reuse the inventory for your side of the trade and instead of picking items up a click would mark the item as part of the trade. A stash like UI could then show what the other player is offering and have the accept button/toggle.

Additionally a count down can prevent someone quickly removing there trade item and finalizing the trade right before and the player accepts the trade.

Not I don't really recall what the D2 trading system is like so I'm mostly basing this of of DevliutionX and what has been mentioned in this issue. So any resemblance will be mostly coincidental.

Instead of a timer, why not have a confirmation button that both sides of the trade have to click to finalize the trade, and if you've clicked it on your side the confirmation is revoked if the other side changes anything about the trade? So someone trying to last second remove an item from the trade would remove their item and click confirm, but trade doesn't go through because the other player's confirmation was revoked?

AJenbo commented 4 months ago

Because clever people can still estimate when you click accept, especially if they stress you during the process, and then make the change just before you accept and then finalize the trade before you have time to react.

Ideally I would prefer to not have the timer, but I have seen tactics like this so I think it's best to prevent it and I can't come up with a better alternative.

Except maby two buttons/toggle, but I don't know if that works well or clunky.

kphoenix137 commented 4 months ago

Because clever people can still estimate when you click accept, especially if the stress you during the process, and then make the change just before you accept and then finalize the trade before you have time to react.

Ideally I would prefer to not have the timer, but I have seen tactics like this so I think it's best to prevent it and I can't come up with a better alternative.

Except maby two buttons/toggle, but I don't know if that works well or clunky.

What if alternatively, we use the inventory and inspect inventory. You click on the item you want and the item you're willing to trade, which adds a highlight to both items that shows for the other player. The other player does the same thing. basically both people have to "select" the same 2 items. once the game confirms that both items are selected by both players, the trade commences without needing a confirmation button. If an item is selected by either player and moves for any reason from its spot, it becomes unselected for both players. Also no new UI is required to do this. However I suppose there would need to be some kind of prompt to initiate trading. I suppose just clicking on the player in town and walking up to them could automatically open the windows. Could just do something visually with the inventory windows to show the other person hasn't clicked on you to open trade windows on their side, like darkening the other person's entire inventory window and put some text over it like "Waiting for other player". As far as coordinating the trade in the first place to signal interest, they could just do that in chat

AJenbo commented 4 months ago

That's a pretty good idea, though I would not initiate trade instantly when both have selected the same items.

What if you select your item first and the other player as well, but you haven't yet selected what to get in return.

StephenCWills commented 4 months ago

How about...

AJenbo commented 4 months ago

That does simplify it, and is still an improvement even if negotiation has to be done outside of the UI

Apocalypse612 commented 1 week ago

Something like a trade window would be awesome, but yeah it seems there are many here that don't want the game changed "too much", despite how many of Diablo 1 mechanics suck.

DakkJaniels commented 1 week ago

I don't think people are opposed to that, it just needs to be implemented in a way that can't be abused.