While in line at Disneyland, my friends and I came up with a 1v1 bartering game. Here's how it works:

  1. Two players are negotiating the price of a good. One player is the buyer, one is the seller.
  2. Pseudo-RNG: Each player thinks of two numbers from 0-99. Each says only one of the numbers aloud. Then each adds the other player's spoken number to their secret one and mods by 100 to obtain their final secret number, e.g. 45 and 82 become 27. If the players don't trust each other not to cheat, they can each write their secret number down.
  3. Negotiation: For the buyer, the secret number is the maximum they'll pay for the good. For the seller, it's the minimum they'll sell it for. They negotiate until a deal is reached at a certain price, which could include some role-playing for fun.
  4. Scoring: When the deal is made, each adds the absolute difference between the price and their secret number to their tallied score, in layperson's terms, how much personal profit each made. If no deal is reached, both score 0 if there was no possible deal (buyer's max was lower than seller's min), or both score -99 if a deal was possible (which only matters in a tourney with other players).
  5. Resetting: The buyer becomes the seller and vice versa for the next round.

My question is, are there any holes in this, or other downsides? At first I didn't want the RNG step, but I couldn't figure out a scoring mechanism that couldn't be abused, e.g. the buyer always picking 99. I'm pretty confident in the RNG's security since neither player can reliably guess what number the other will say. The -99 for failing to reach a deal is kind arbitrary, so I don't know about it.


5 Answers 5


Note to readers: just because this answer sorts to the top at the moment does not mean it's the best. This is still a young question, so check out the other answers and vote on them too, or consider posting your own analysis.

First: that's a clever way of generating two numbers that neither player can unilaterally control. A lot like Diffie-Hellman key exchange! As long as at least one player is choosing numbers uniformly at random, then the result is also uniformly random, so each player is incentivised to choose randomly to minimize the control their opponent has.

The downside is that this means the chance that the buyer's number is at least as high as the seller's is only 50.5% - so very nearly half the time, no deal is possible, and there's no chance to change your lead vs your opponent. In fact, since neither player should accept a deal that would score them 0 points, there's only a mutually-agreeable deal 48.51% of the time. (47.53% if I insist on only accepting deals where I might have an edge)

I'd expect this would tend to frustrate players. Compare this to a game like Solitaire, which has a solvability rate somewhere in the 80-90% range.

You may want to investigate whether you can find a way to ensure the buyer more often gets the greater of the two numbers - such as drawing chips with discernable orientation from a bag, held so each player only sees one face of the chip.

However, I think some possibility of an impossible deal is helpful, because it gives players plausible deniability: maybe I'm not being unreasonably stubborn/greedy, maybe my number's just on the wrong side of yours. That increases each player's uncertainty about their opponent's number and emphasizes the bluffing aspect of the game. So you might not want to eliminate impossible deals, just make them a less expected outcome. Especially if you explore kaya3's excellent answer suggesting a reward for being the first to correctly identify the deal as impossible.

The next problem is that, without any constraints on the negotiations, each player is incentivized to be as annoying a negotiation partner as possible.

ie. They should each start at the most extreme bid possible - $0 for the buyer, $99 for the seller - regardless of their secret price, to avoid revealing any information to their opponent. So the optimal first move is decided for you, and you're not really making a choice.

For the next move, well, the situation is the same, just with the domain of possible guesses reduced by one. That makes for a very tedious count-down, gradually narrowing the range of guesses toward the acceptable range.

The game can get more interesting once you've narrowed the range above your minimum sale price or below your maximum buying price, as you try to estimate how much farther you can push. But since the penalty for a failed deal is always the same for both players, your incentive to avoid a deal that's even slightly more favourable to your opponent than to yourself is stronger than your incentive to avoid no deal at all. That means you should reject any deal that gives you less than about a quarter of your maximum theoretical profit, resulting in successful negotiations that move the game along only about one time in eight.

In practice, human players usually won't play in the way described above (it's mind-numbingly slow and robotic). But the incentives push them to get as close as they or their partner will tolerate. It's not a good thing when the optimal strategy is to exhaust the players' patience. 😉

You should look for ways to break this symmetry and punish a player who forces no-deal by being too greedy or drags out the negotiation well past their threshold of profit, so there's an incentive to take a deal over nothing, and an opportunity to bluff/play chicken with that penalty / opponent's reward. Again, other answers have great suggestions for specific mechanisms to do this, so I'll defer to them.

Despite all of the above, you probably find that the games you've played with your friends - at least the runs you've enjoyed most - deviate significantly from this behaviour. It's likely you've invented unspoken "house rules" about what kinds of bids are "sporting" play. If someone started negotiating in the manner described above, the group would likely protest that this person isn't playing "right". Those tacit norms can give hints into how to shape play in a way that's more fun.

Take some time to record a number of rounds that you and your friends have found enjoyable, and look for patterns in behaviour to try to suss out what these tacit rules of "good play" might be, and see if you can formalize them into the game's explicit rules in a way that keeps players from being too robotic, while still giving freedom of choice to find personal strategies within that range.

Some examples might be having a limited number of bids or ranges the bids can be placed within, so players have to gamble with larger steps and incomplete information, or even making those bids a resource that can be earned or banked so sometimes accepting a less favourable deal is worthwhile if it puts you in a better bargaining position for the next negotiation.

  • \$\begingroup\$ Comments are not for extended discussion; this conversation has been moved to chat. \$\endgroup\$
    – DMGregory
    Commented Oct 21, 2022 at 21:26
  • \$\begingroup\$ Suggested randomization rule: After arriving at a randomized number like the OP suggested, flip the digits (13->31, or 54->45) so that the buyer has the larger digit in front, and the seller has the smaller digit. Buyer number will be > Seller about 80% of the time. \$\endgroup\$ Commented Nov 23, 2022 at 5:38

I can see an exploit for a 1v1 game (i.e. outside of a tournament). As soon as one player is in the lead, their optimal strategy is to completely refuse to make a deal after that. Both players get the same penalty for not making a deal, so the player with the lead will keep that lead for all subsequent rounds.

One additional thing I noticed is that part of the process of playing the game would be trying to guess what the other player has picked as their secret number. It's normally possible to make better-than-random guesses because people are terrible at picking good random numbers. For example, if someone's previous random number was 10, I'd be surprised if their next random number was in the 0-19 range (i.e. I'd expect that to happen less often than the expected 20% chance from a good random number generator).

  • \$\begingroup\$ In hindsight, that should've been obvious to me. I need to figure out a way to fairly distribute blame for failing to make a deal. First thought is to slap the -99 on whoever's last bid/ask was closest to their secret number, but it'll take more consideration than that. \$\endgroup\$
    – harkinian
    Commented Oct 21, 2022 at 4:17

Neat idea for a game; it's something you can play with a friend while you're waiting in a queue at Disneyland, without needing any equipment or having to remember much game state.

The main problem I can see is that there is nothing forcing a deal to be reached, and in many cases (even when a mutually "profitable" deal is possible) the incentives of the scoring system mean that the players will often not to want to make any deal at all. To keep the game moving and prevent stalemates, I propose the following extra rules:

  • Players take turns.
  • The buyer's bids must be increasing, and the seller's bids must be decreasing.

This forces the game to progress, but it doesn't address the problem that the players will just bid in $1 increments starting from the extremes, and there is still no incentive to accept a bid when you can just wait for a better one. So let's add another rule:

  • Once both players have bid at least once, instead of bidding, a player may make a challenge, ending the round. The challenge is successful if the other player would have made a "profit" by accepting the previous bid, relative to their secret number. So for example, if I'm the seller and I bid $35, and the buyer's secret number is $50 but they rejected my bid, then I would win a challenge because the buyer could have profited $15 by accepting it instead. The winner of the challenge scores the full difference between the two secret numbers.

This gives players an incentive to accept bids that are profitable to them, because if they don't, their opponent might challenge them and win. It also incentivises players to make bids at greater than $1 increments, because they want to make bids that are at least slightly profitable for the opponent, to have the opportunity to win a challenge.

There is still the issue of when the buyer's secret number is less than the seller's secret number, in which case no mutually-profitable trades are possible. So we can add one more rule:

  • On any of their turns, instead of bidding a player may guess that there is no mutually-profitable trade possible, ending the round. If they are correct, then they score the difference between the two secret numbers; otherwise the opponent scores the difference.

This gives players an "out" when they would otherwise be forced to bid an unprofitable price, though there might still be an incentive to make a slightly-unprofitable bid rather than risk guessing wrong, or giving your opponent an opportunity to guess right.

  • \$\begingroup\$ You're right that the proposed uniform -99 penalty ruins the game. Whatever penalty there is, it has to be balanced carefully, because in 1v1 game you're actually concerned with the difference in the profits/penalties. The challenge idea is good, and I should try it. The other idea I came up with is to make the penalty for the buyer 100 - (secret number) and for the seller, just (secret number). The math seems to work out such that nobody has a cheesy strategy. Separately, can get rid of the impossible scenario by doing mod 50 and having the buyer add 50. Penalties tweaked accordingly. \$\endgroup\$
    – harkinian
    Commented Oct 22, 2022 at 1:34
  • \$\begingroup\$ Hm, the problem I have with the challenge is that in many scenarios, both players would be profitable at the current bid, so challenging seems overpowered. But I like the idea of rewarding a player for guessing that the deal is impossible. \$\endgroup\$
    – harkinian
    Commented Oct 22, 2022 at 1:42
  • \$\begingroup\$ @harkinian also, i know plenty games were a co-op mode theoretically is solved but in practice is very difficult to win \$\endgroup\$
    – Nathan
    Commented Oct 22, 2022 at 4:08

I think in practice this game will end in a stale mate 100% of the time, as there is no incentive to buy for more than 0$ or sell for less than 99$.

One change I would make would be to make the game cooperative. A good way to do this would be to allow a set number of rounds in which each player needs to reach a specific amount of points.

In my opinion this would make the game more fun and more true to life: negotiations should not be a zero sum game imo.

This increases the need to reach a deal as both players benefit from making a sale. This also mirrors real life where both parties generally gain from a sale and how much you gain compared to the other party is of less interest.

It also allows scaling the difficulty by increasing/decreasing the goal, so that it might be enjoyed by more people.

  • \$\begingroup\$ I've been struggling with the 1v1 mode for the reason you describe. Trading with an adversary is weird, maybe fundamentally broken. With 3 or more players, this isn't a problem. Co-op sounds like a way to fix 1v1, but repeated $50 bids would win. The way I've been trying to make adversarial 1v1 work is by creating scenarios where both players can think they're benefiting more than the other, and using the penalty to force them to take that chance. If you never sell for less than $99, the new penalty I proposed in another answer of last bid - X (and just X for buyer) will punish you. \$\endgroup\$
    – harkinian
    Commented Oct 21, 2022 at 23:27
  • \$\begingroup\$ Oops, actually the penalty I had in mind for the seller was M - S, and just B for the buyer, where M is the modulo (100 in the original question) and S and B are the secret numbers. Last bid wasn't involved. It'll always be best to kill the deal as the seller if S > M - B, which is more likely than not true if S > M / 2, but you won't really know. \$\endgroup\$
    – harkinian
    Commented Oct 22, 2022 at 0:19
  • \$\begingroup\$ @harkinian maybe gaining points with delta p ^ 1.5? This solves the 50 point thing \$\endgroup\$
    – Nathan
    Commented Oct 22, 2022 at 4:07
  • \$\begingroup\$ What prevents two players from telling each other their secret numbers and doing the math so that they both win? If that's simply outlawed, it becomes about guessing the secret numbers based on the bids alone, but then it becomes a matter of establishing a protocol. \$\endgroup\$
    – harkinian
    Commented Oct 22, 2022 at 4:59
  • \$\begingroup\$ @harkinian it's similar to prisoners dillema, with perfect play working together the game seems easy enough, but such a protocol wouldnt be followed. \$\endgroup\$
    – Nathan
    Commented Oct 22, 2022 at 5:04

Thanks for all the feedback. It's made me think more clearly about the game, and I think I've realized how to fix it. (Not gonna accept my own answer, just collecting stuff here.)

  1. Same as before. One buyer, one seller, 1v1.
  2. RNG: Same but each player thinks of numbers in [0, 59] and mods by 60. The buyer adds 40. So seller's cost S is in [0, 59], and buyer's demand B is in [40, 99]. This makes impossible deals less likely. Could easily tweak this to eliminate impossible deals altogether by doing mod 50 offset 50.
  3. Same negotiation step, but either player can instantly kill the deal if desired. And as an optional rule to spice it up, I like katya3's idea of letting either player profit from guessing that the deal is impossible.
  4. Profit scoring is the same. Penalties for killing a possible deal are reworked. For the buyer, it's 100 - B. For the seller, it's just S. So the penalty is within [0, 59] for each. Both are penalized regardless of who kills the deal.
  5. Same, you take turns being buyer vs seller.

#4 is the crucial part. The uniform -99 was broken, as answers pointed out. In 1v1, you only care about the difference in profits or penalties, cause it's zero-sum. A seller with higher-than-average S or a buyer with lower-than-average B has a positive expected (not known) value from killing the deal, but they can do even better by pushing the advantage, or the other player can scare them by bluffing. It's a little like heads-up Hold'Em.

It's also been pointed out that this doesn't mimic real haggling. Normally the buyer and seller are mutually benefiting rather than trying to harm each other. But it still works in a cutthroat way. Consider a 4-player Catan game where only two players have a real chance of winning; should one titan ever trade with the other? Maybe you think that the trade benefits you more than the other player realizes, and the other player thinks the same. I guess the IRL examples are grim, like predatory economic systems or enemy armies agreeing on a battle location.

  • \$\begingroup\$ I'm interested to hear what your experiences playtesting this are like. Drop by Game Development Chat sometime and let us know how it goes, or update this answer with your findings. 😁 \$\endgroup\$
    – DMGregory
    Commented Oct 23, 2022 at 16:52
  • \$\begingroup\$ @DMGregory Thanks! Haven't tested it yet because I had to miss game night last time, but I'll come back once I have. \$\endgroup\$
    – harkinian
    Commented Oct 24, 2022 at 16:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .