CORDIAL MINUET ENSEMBLE

??????

You are not logged in.

#1 2014-11-24 21:48:54

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Just Played a Few Games

Hi, so first of all, thank you for the invite to the private alpha. wink I wasn't actually sure if I would even get a response when I e-mailed you, much less an invitation to the private testing. But since you invited me, I though you might be interested in some thoughts/suggestions I have based on my overall impression of the game, and my experience playing a few matches.

1. BitCoin. I understand why you would be reluctant to embrace BitCoin, since it currently has a limited audience. But just allowing deposits and withdraws via BitCoin and then converting them to USD locally would really take away nothing and possibly avoid have to deal with regulatory nonsense involving credit card companies. Logistically, it would be difficult to work out, but in the long run I'm sure it would be worth it.

2. C++? I was actually a little bit surprised to learn that you coded your game in a compiled language. And even offered your source code for that matter. Did you consider coding the front-end of your game in HTML5/Javascript, because to me this seems like the obvious choice for a simple multi-player game where you are mainly just clicking on numbers. Or do you have future plans that are a bit more elaborate? If you are interested, I would be willing to help with coding an HTML5/Javascript version of your game. Like I said in my e-mail, I was briefly considering cloning your game in the first place. wink

3. I didn't spend very much time actually playing (two games so far), but one thing that struck me is that it might be a good idea to add a few indicators to the game screen to help players make good decisions. For example, highlighting the current high/low numbers so you can find them at a glance, and also highlighting which columns have the highest or lowest average. Just a thought.

I'll try playing more tonight so that I have a better feel before the strategy of the game, and then hopefully I can come up with some other ideas.

Offline

#2 2014-11-24 23:39:11

jere
Member
Registered: 2014-11-23
Posts: 298

Re: Just Played a Few Games

also highlighting which columns have the highest or lowest average

Keep in mind that the average of each column and row is, interestingly, always the same average on the first round, so that wouldn't help until later.

Last edited by jere (2014-11-24 23:39:29)


Canto Delirium: a Twitter bot for CM. Also check out my strategy guide!

Offline

#3 2014-11-25 04:31:39

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

Ah... okay, that would make sense. As I said, I only played a couple of games, and I didn't actually bother to do the math. And come to think of it, it would have to be that way, or certain board layouts would end up giving an advantage to one player or another. Still, as far as the actual game strategy is concerned, some rows have a fairly even distribution while others have outliers that make them a more risky choice (especially in the first round). Although to be honest, anyone intelligent enough to see the significance of this detail would probably also not need an indicator to know which rows are the most risky/safe.

Offline

#4 2014-11-25 08:47:05

..
Member
Registered: 2014-11-21
Posts: 259

Re: Just Played a Few Games

I find that the more experience I get, the less I look at the graph on the right. I never consult it on the first move. I think it's not as useful as it could be, as for example you can't see what your expected (average) score is. Actually I find it much easier to look at the grid and figure out rough what the average of each column is, etc, than to look at the graph. In addition, you can compare different columns against each other in more detail. For example I look for a pair of columns such that if I get a high number in mine then I know that the opponent didn't get the high number in theirs (same row). The graph can't tell you that sort of thing.

IMO the main importance of the graph is to tell you what your range of possible scores is, as seen by the other player. Increasingly important the closer you get to the endgame.

Cordial Minuet is written in C++ because it builds on the codebase Jason has used for all his previous projects. Game development is like that: the majority of your code can't be reused, but repeatedly adapting and improving some parts lets you greatly speed up development and code quality. However I assume it's his intention to make it easy for other people to write clients; the protocol is well documented.

Offline

#5 2014-11-25 11:00:43

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

.. wrote:

I find that the more experience I get, the less I look at the graph on the right. I never consult it on the first move. I think it's not as useful as it could be, as for example you can't see what your expected (average) score is. Actually I find it much easier to look at the grid and figure out rough what the average of each column is, etc, than to look at the graph. In addition, you can compare different columns against each other in more detail. For example I look for a pair of columns such that if I get a high number in mine then I know that the opponent didn't get the high number in theirs (same row). The graph can't tell you that sort of thing.

IMO the main importance of the graph is to tell you what your range of possible scores is, as seen by the other player. Increasingly important the closer you get to the endgame.

Agreed on that point. In the last game I played, I was certain I had already won thanks to the graph, but I was able to convince the other player to go all in because they were not aware I had a guaranteed win. I couldn't believe they actually did it, but I had sort of set up their expectations by playing conservatively for the entire match. Anyway, after playing the game a bit more I actually think indicators would be fairly pointless beyond the first round, since it's much easier to read the board when possibilities start to be eliminated.


.. wrote:

Cordial Minuet is written in C++ because it builds on the codebase Jason has used for all his previous projects. Game development is like that: the majority of your code can't be reused, but repeatedly adapting and improving some parts lets you greatly speed up development and code quality. However I assume it's his intention to make it easy for other people to write clients; the protocol is well documented.

I guess the main reason I was surprised he would use C++ is that it ends up just being a lot more work. Testing code on multiple platforms, having to rewrite the codebase if you want it to be usable on mobile platforms, having to write custom network code, etc. I guess if you didn't have experience developing web apps it might be faster to just write it in C++. But honestly, if I did want to clone this game as a web app, I think it would take me about a week... maybe two to fully polish it and work out all the bugs.

Anyway, I played several games tonight, and I have to admit, I this game is pretty fun. I found myself engaging in the same kind of mindgames you would when playing a fighting game (http://www.youthareawesome.com/read-peo … reasoning/). The idea that both players start on equal footing and that it is the decisions they make that influence outcome is the foundation of any great game, and one sorely missing in most games that people bet money on. But then again, I think there is actually sort of a reason for that...

One critical aspect of why people gamble, is what makes people believe they can win. It's a fairly well documented fact that the majority of people who gamble lose money, and yet people still do it. Why? Because they believe they can win. Adding an element of luck into any game, creates the illusion of fairness. If you join a poker table believing that the quality of your cards will determine whether you win, in theory your chances of winning are no more or less than anyone else at the table. In practice this is almost never true, but the illusion is strong enough that it just pulls some people in.

In a game like Cordial Minuet, that illusion is much more difficult to maintain. Someone who makes bad decisions and loses money early on, is unlikely to keep playing the game. They will quickly learn that even if they can win once in a while, against players with more experience they will be doing nothing but losing money. Luck cannot help them, because there is no luck in Cordial Minuet. It is a fundamentally fair game, and they will quickly make the connection between their losses and their inability to make good decisions.

This will create a feedback cycle, where players who are skilled at playing Cordial Minuet will eventually eat away at the competition until only the most skilled players are still playing. And even they will give up eventually, when the realize that they are essentially paying a fee to trade money back and forth without ever actually coming out ahead. This is why people almost never compulsively gamble on games of skill. Games of skill are much better at teaching you when you can and can't win, and no one wants to risk money when they know they are going to lose.

Now, I am not saying this problem is impossible to address, but I am reasonably certain the way your game is structured now, this outcome is inevitable. And paradoxically, anything you do to address the problem would necessarily have to move Cordial Minuet more into the territory of being a game of chance, which could make it subject to online gambling laws. So, uh... I guess what I'm saying is, good luck... For what it's worth, I am enjoying playing the game, and I look forward to continuing to play it while there are still other people to play. But then again, I haven't started to lose money yet.

Last edited by AnoHito (2014-11-25 11:01:45)

Offline

#6 2014-11-25 12:53:44

..
Member
Registered: 2014-11-21
Posts: 259

Re: Just Played a Few Games

Well, I recently played a few games someone who was "conservative" in the extreme, and at least once I mistook their all-in as a bluff; so that might have been you. Actually, I see strong resemblances between that person's fixed strategies and your comments about the lack of luck in CM, and focus on forethought smile

You have to make the decision whether to call what could be a bluff randomly, otherwise you'll get exploited for being predictable. I completely disagree with your comments on luck (but very nice comments, aside): you can't take luck out of a zero-sum game with hidden information. Even though there's no hidden randomness in the rules to CM, the players have to introduce it themselves. If you want to understand more about this, read about mixed strategies (a strategy which consists of choosing between several strategies randomly) and Nash equilibria. Skill only triumphs over luck in the long term. I didn't realise this when beginning to play CM (probably because I have so little Poker experience), but the randomness due to bluff is huge.

(However, I hope this doesn't have any bearing on whether CM is considered a game of chance by the law, and I assume it doesn't)

I also don't agree with your comments about the illusion of luck in CM vs Poker and what is going to happen to the playerbase. Honestly poker and CM are extremely similar, so I don't expect people to feel different when they're playing/losing at one vs. the other. However, I expect that poker probably requires longer timescales for skill to overtake luck.

Using C++ doesn't actually mean a rewrite is required if you want to port to Android and iOS. Android has the NDK, and you can compile C++ as an Obj-C++ program. SDL has Android and iOS ports, and handles a the majority of cross-platform issues.  The differences between browsers isn't trivial either, and I think you've underestimating many of the complexities in the client, like the protocol implementation and logic, the game tree search algorithm, the paint strokes drawing, encryption, etc.

Last edited by .. (2014-11-25 12:58:43)

Offline

#7 2014-11-25 13:59:32

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

.. wrote:

Well, I recently played a few games someone who was "conservative" in the extreme, and at least once I mistook their all-in as a bluff; so that might have been you. Actually, I see strong resemblances between that person's fixed strategies and your comments about the lack of luck in CM, and focus on forethought smile

Ah, yes, that would probably have been me. wink Although, I wouldn't call my strategy extremely conservative. What I figured out, is that with such a low ante, it really doesn't make sense to bet up in the first round unless you have a fairly strong first number. I basically wasn't playing anything below 20, and even then I had to weigh that against the possible numbers you might have. I did bluff some of the time, but I was trying to do it infrequently enough that you couldn't get a feel for whether I was bluffing or not. The idea was to tread water until I saw a clear advantage. If I hadn't been able to do that, I would have been forced to bet more aggressively.

.. wrote:

You have to make the decision whether to call what could be a bluff randomly, otherwise you'll get exploited for being predictable. I completely disagree with your comments on luck (but very nice comments, aside): you can't take luck out of a zero-sum game with hidden information. Even though there's no hidden randomness in the rules to CM, the players have to introduce it themselves. If you want to understand more about this, read about mixed strategies (a strategy which consists of choosing between several strategies randomly) and Nash equilibria. Skill only triumphs over luck in the long term. I didn't realise this when beginning to play CM (probably because I have so little Poker experience), but the randomness due to bluff is huge.

Interesting, so that is a little bit like a certain situation in Virtua Fighter. In the latest version of Virtua Fighter, the throw system works so that each throw has an associated direction (forward, back, or neutral). Whenever you try to use a throw command, the other player can escape the throw by inputting a throw command in the same direction you are trying to throw them. So they basically have a 1/3 chance of escaping the throw. But not all throws are created equally, and some throw commands do significantly more damage than others. This means that most of the time, the person you are playing against has one throw they want to use more than any other. So this creates a mind game where you assume the other player wants to use their most powerful throw as much as possible, but if they were to actually do that you would escape it every time. So, they are forced to mix things up with their other throws to keep you guessing. Ideally you would like to be able to out-think the other player to the point where you would always know what direction they would try to escape. But in practice it actually doesn't work to your advantage to do this, because various aspect of the situation you are in while you are trying to throw will tend to create biases that the other player will pick up on. The only solution is to adapt a pseudo random throwing strategy, where the throw you decide to use is based on a random selection, weighted by the amount of damage the throw will do if successful. But in practice this is really difficult to do, and even really good players usually don't bother.

.. wrote:

I also don't agree with your comments about the illusion of luck in CM vs Poker and what is going to happen to the playerbase. Honestly poker and CM are extremely similar, so I don't expect people to feel different when they're playing/losing at one vs. the other. However, I expect that poker probably requires longer timescales for skill to overtake luck.

Yea, I mean, I am by no means 100% sure what I predicted will actually happen, but I think it is a real risk.

.. wrote:

Using C++ doesn't actually mean a rewrite is required if you want to port to Android and iOS. Android has the NDK, and you can compile C++ as an Obj-C++ program.

Trust me, it's never as simple as just using the right compiler. The interface would have to be redone, you would have to rewrite code to use different APIs, and all sorts of other issues.

.. wrote:

SDL has Android and iOS ports, and handles a the majority of cross-platform issues.

Which would save a lot of work, but it's still not as easy as just designing a page layout for mobile browsers. And then what happens if Apple decides they don't want a game like Cordial Minuet on their App Store?

.. wrote:

The differences between browsers isn't trivial either, and I think you've underestimating many of the complexities in the client, like the protocol implementation and logic,

From what I've observed, a simple AJAX protocol would be sufficient.

.. wrote:

the game tree search algorithm,

It's not really any more difficult to implement something like that in JavaScript than it is in C++.

.. wrote:

the paint strokes drawing,

I would just do it all in CSS. You could also do it with HTML5's canvas element, but the current interface doesn't really have anything that would require it.

.. wrote:

encryption, etc.

You could avoid that issue entirely by using the TLS support build into web servers.

Offline

#8 2014-11-25 14:28:02

..
Member
Registered: 2014-11-21
Posts: 259

Re: Just Played a Few Games

I just created another thread to discuss the small antes: Being conservative: Are the intial bets/antes too small?

It's not just a little bit like the example you gave from Virtua Fighter, it's exactly the same type of situation. If you assign each throw direction a damage amount and that you want to maximise the overall/average damage, then you can calculate the optimal fraction of the time you should use each throw, assuming that the other player also learns how often you use each throw direction and adapts to it. That's called a Nash equilibrium. Obviously in the real game those biases you mentioned greatly complicate things as now you have a zillion different situations instead of 3, but it's still technically the same.

Regarding porting: yeah, porting to phones is never easy. But this is why you use abstractions that hide details like UI controls, so that you don't need to rewrite everything. But the NDK on Android is a particularly bad option if you want to use native UI widgets, etc, so...

I know nothing about AJAX except that it involves XML. The CM protocol is AFAIK purely HTTP GET requests. Is that any problem in JS? Also, I misspoken when I said encryption; should have said authentication. So unless you change the protocol you still need to use a library rather than TLS.

And then what happens if Apple decides they don't want a game like Cordial Minuet on their App Store?

Then you switch to Emscripten smile

Anyway, when listing specific features I meant to imply that there is a lot of code. I definitely agree that a lot of things are going to be easier in this fancy new world. I don't want to discourage you.

Last edited by .. (2014-11-25 14:29:03)

Offline

#9 2014-11-25 14:53:15

jere
Member
Registered: 2014-11-23
Posts: 298

Re: Just Played a Few Games

Interesting, so that is a little bit like a certain situation in Virtua Fighter. In the latest version of Virtua Fighter, the throw system works so that each throw has an associated direction (forward, back, or neutral). Whenever you try to use a throw command, the other player can escape the throw by inputting a throw command in the same direction you are trying to throw them. So they basically have a 1/3 chance of escaping the throw. But not all throws are created equally, and some throw commands do significantly more damage than others. This means that most of the time, the person you are playing against has one throw they want to use more than any other.

Check out Yomi. David Sirlin makes a lot of great board/card games and most are directly inspired by fighting games. Yomi is a sort of distillation of this reading concept ("yomi" is a Japanese word for reading) and like your example, you choose to throw/dodge/attack every turn. Sort of like rock, paper, scissors but with different outcomes for each and limited by your hand. Highly recommended if you like CM.


Canto Delirium: a Twitter bot for CM. Also check out my strategy guide!

Offline

#10 2014-11-25 14:58:51

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

.. wrote:

I know nothing about AJAX except that it involves XML. The CM protocol is AFAIK purely HTTP GET requests. Is that any problem in JS? Also, I misspoken when I said encryption; should have said authentication. So unless you change the protocol you still need to use a library rather than TLS.

Actually, AJAX and XML aren't really related, besides the fact that AJAX is often used to transport data formatted in XML. Though these days I think JSON is much more common. But AJAX is based on the idea of asynchronously executing HTTP requests, so you might even be able to implement the client side of Cordial Minuet in JavaScript without making any changes to the server at all.

Offline

#11 2014-11-25 15:02:21

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

jere wrote:

Check out Yomi. David Sirlin makes a lot of great board/card games and most are directly inspired by fighting games. Yomi is a sort of distillation of this reading concept ("yomi" is a Japanese word for reading) and like your example, you choose to throw/dodge/attack every turn. Sort of like rock, paper, scissors but with different outcomes for each and limited by your hand. Highly recommended if you like CM.

I am actually very familiar with the concept of yomi. wink The Virtua Fighter community was largely responsible for bringing the term into use in the fighting game community.

Last edited by AnoHito (2014-11-25 15:02:38)

Offline

#12 2014-11-26 06:50:49

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

I played several matches tonight, and I have gained some serious insight into what an optimal strategy for Cordial Minuet should look like. It seems like in the first round, strategy should be dictated by the rows/columns with the lowest high number. In a typical first round, you should always give your opponent the column with the lowest high number, because it ensures a level or predictability (you know they cannot have a number above that number). This will likely force your opponent to adapt the same strategy, because if they take a risk and go for a number higher number, they will often get a worse number than they would have if they had just stuck with taking the highest number in their column with the lowest high number. The only mind game that emerges from this situation, is the possibility of picking a row that will give your opponent a low number in their row with the lowest high number. But this is really a risk, because you have no way of knowing which row your opponent is picking.

This is actually disappointing to me, because it means that luck is a bigger factor in Cordial Minuet than I had hoped. Between the two players, the one with the highest number in their column with the lowest high number, has an inherent advantage. And because of the low stakes, even if you successfully counter-pick an column choice, their best option is just to fold. This mean that the only real strategy left is the betting strategy (whether to bluff), rendering the first round essentially pointless. Worse yet, the choices you make in the first round dictate the choices you will have left in the next two, meaning that the advantage due to luck will increase depending on the options that are left to you after the first round is complete.

In other words, this is bad. It makes luck a much bigger factor in Cordial Minuet than I had originally thought, and the game may in fact have an optimal strategy that leaves you with nothing but 50/50 guesses in situations where yomi is a factor. I tried to come up with a strategy to counter the strategy I outlined above when I was playing tonight, but failed miserably. At best I could achieve a tight back and forth game, and when I tried taking more risks it completely backfired. Does anyone else have any thoughts on this? I would love to be proven wrong, but I can't think of any real counter strategy that would open up additional possibilities before the second round.

Last edited by AnoHito (2014-11-26 06:52:48)

Offline

#13 2014-11-26 07:19:16

Asminthe
Member
Registered: 2014-11-21
Posts: 44

Re: Just Played a Few Games

I think there are things you are neglecting to take into consideration and that you shouldn't be so worried.

There are tradeoffs in different styles of play, and you're advocating a specific tight style and then stressing about exactly the potential downsides of that style of play.  It is not the only style, and it is not the one I use, and the numerical value of the first space you and your opponent claim is not the only thing that matters in the first round.

Offline

#14 2014-11-26 07:24:22

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

Can you give an example? If the other player was constantly giving you the row with the lowest high value, how would it benefit you to not pick the column that gives you the highest possible number in that row?

Offline

#15 2014-11-26 07:35:37

Asminthe
Member
Registered: 2014-11-21
Posts: 44

Re: Just Played a Few Games

If you can tell exactly what row someone is going to give you and can always choose whichever space you want in that row, what are you saying is the downside? Because that sounds pretty good.

Last edited by Asminthe (2014-11-26 07:38:27)

Offline

#16 2014-11-26 07:42:46

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

Because, if you are forced to make a decision that is the best out of a set of bad choices, there is a very high probability you opponent knows which column you picked for yourself. Not only does this tell them with certainty if their first number is higher than yours, and by how much, but it also tells them which column you eliminated so they will know more about your possible choices in future rounds than they would have otherwise.

Offline

#17 2014-11-26 07:45:52

Asminthe
Member
Registered: 2014-11-21
Posts: 44

Re: Just Played a Few Games

It is very rare that your best option in a given row is a bad one.

Offline

#18 2014-11-26 07:54:07

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

But by picking it consistently you are giving your opponent complete knowledge of the choices you make in the first round. This gives them an undeniable advantage. And by not picking it, you just end up with a low number, which is probably equally bad since they still at least know if their first number is higher than yours. And unless you are willing to pick a really low number, they can probably narrow down your column selection to two choices, which is still valuable information.

Offline

#19 2014-11-26 08:01:44

Asminthe
Member
Registered: 2014-11-21
Posts: 44

Re: Just Played a Few Games

Nevermind, I don't think I want to talk about strategy yet.

Offline

#20 2014-11-26 08:08:59

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

Oh, and I also actually noticed another problem I wanted to point out. By allowing players to leave tables without any penalty, you make it so that it is to your advantage to leave the room if you build up a significant lead (say more than 10 chips). This will reset the stakes, and make it less likely the other player can gain back what they lost. I think if/when when more people start to play this game this tactic could start to become a real problem, as anyone not using it will be at risk of having their chips leeched away by players that are. The obvious solution would be to just reset the stakes at the beginning of each round, and I actually don't see any reason not to do this. The only problem would be the need to buy back in when you lose a round, but a simple dialog box should take care of that.

Last edited by AnoHito (2014-11-26 08:12:31)

Offline

#21 2014-11-26 08:17:55

Asminthe
Member
Registered: 2014-11-21
Posts: 44

Re: Just Played a Few Games

The point of the game isn't that you're supposed to risk the entire amount you bought in with. Penalizing people for not staying until they do so would be bad.

Additionally, resetting to full stacks when you were ahead makes it more likely, not less likely that someone can get back what they lost from you, if they are able to play you again.  Especially if they are more skilled than you. If the game allowed players to top up their stack and/or to buy in for less than 100 antes, there would be a potential ratholing problem (ratholing is the action you described of leaving a table with more than the maximum buy-in and then coming back to it with less than you took away, and it is not allowed by casinos or online poker sites).  Since, however, all the tables are heads-up and the the small stack therefore determines effective stack size in each round played, and since people can't add-on or buy in for less than the maximum, ratholing is not the reason rational players would be leaving tables to reset the stakes.  Instead, if good players develop a habit of leaving tables, it will be because the smallest stack got too small for them to get the most out of their skill advantage against the other player, and it doesn't matter which player has the smallest stack for that.

Offline

#22 2014-11-26 08:19:26

Asminthe
Member
Registered: 2014-11-21
Posts: 44

Re: Just Played a Few Games

Jason and I have both already said quite a bit about this in this thread: http://cordialminuet.com/originensemble … c.php?id=7

Offline

#23 2014-11-26 08:23:04

Asminthe
Member
Registered: 2014-11-21
Posts: 44

Re: Just Played a Few Games

Your 'obvious solution' isn't even a solution to the thing you thought was a problem, because resetting the stakes is exactly what you were saying was the problem, and then you suggested it as the solution. It also goes against Jason's goal of keeping any particular player from being preyed upon by a stronger opponent for too long.

Offline

#24 2014-11-26 08:45:07

AnoHito
Member
Registered: 2014-11-24
Posts: 116

Re: Just Played a Few Games

It's a solution in that it allows you to continue playing against someone uninterrupted. It's extremely annoying to spend time playing against someone, trying to learn their tactics, only to have them leave the second they have a lead. Then you don't know if the next person you play is the same one you just played or someone else entirely. And someone who is unskilled is going to lose money regardless. I'm not convinced limiting stakes would slow them down that much...

Offline

#25 2014-11-26 08:57:33

Asminthe
Member
Registered: 2014-11-21
Posts: 44

Re: Just Played a Few Games

It's not about being unskilled. If the best player in the world is going against the second best player in the world, the smaller the smallest of the two stacks gets, the less of an advantage the better player has, so it always in the better player's best interest for the stacks to be reset.

Offline

Board footer

Powered by FluxBB