Somnium discussion

Hmm...I just looked at the code, and it looks more complicated than I had hoped. What would I have to change to make it play by these "house rules:"

1. The Death Card empties the player's Bank, leaving their hand alone.

2. If you draw a Fool while your opponent's bank is empty and yours is not, then the opponent can take one card from your bank. (If both banks are empty then it is still just discarded.)

3. If your top cards in every suit are all of the same number, your score is doubled. Thus, ten 4s (= 80 points) would be better than nine 7s and one 6 (= 69 points), and you would sometimes really not want to get better cards.
 
Hmm...I just looked at the code, and it looks more complicated than I had hoped. What would I have to change to make it play by these "house rules:"

1. The Death Card empties the player's Bank, leaving their hand alone.

2. If you draw a Fool while your opponent's bank is empty and yours is not, then the opponent can take one card from your bank. (If both banks are empty then it is still just discarded.)

3. If your top cards in every suit are all of the same number, your score is doubled. Thus, ten 4s (= 80 points) would be better than nine 7s and one 6 (= 69 points), and you would sometimes really not want to get better cards.
You should wait 2 weeks when i would have restructured the code. Anyway, this will not be easy for 2 and the interface. And the 3, for the AI choices.

Tcho !
 
Played a game last night and noticed "bugged" AI behavior.

Situation:
1 card remaining in the deck
AI is up, already drew 3 cards
AI knows that there is still one 7 card remaining
The last 7 card happens to match a suit already drawn
AI chooses to not draw the last card and instead banks
The last card (the 7) gives me the necessary points to take the lead and win.

In this situation (and even without knowledge of what card is left) the AI should ALWAYS draw the last card. Worst case the card matches and the bank is lost; but since the AI is leading it doesn't matter and it will win anyway.

Proposed Solution:
Put a logic gate before any other draw/no-draw considerations -
IF (isLastCard AND iAmAheadWithoutBanking) THEN
Draw()
END IF
 
Ok this is noted. I need to remake the AI choices for the end of the game anyway, that will help. The card remembered by the AI are just taken in count to calculate the percentage of good draws for the moment.

Tcho !
 
had a game against arendel where the death card was the final card to be drawn. Arendel already had 4 cards in the center when she drew her fifth card, the final card in the deck: death, thus discarding the other 4 cards aswell, costing her 15 points. Another thing to take into account in the end game ;)
 
Strange , this should never happen ...
 
A couple of ideas:
1. Speed the game up. The second or so that it takes between card draws makes games take way too long.
2. Consider giving each leader or faction an "affinity", that gives them double points from that suit. So Infernals and Sheaim get double points from Devils, Malakim get double points from sun, Basium and Bannor get double points from angels, Elves get double points from Pentacles, Kuriotates gets double points from Dragons, etc. etc.
3. Create events that allow a game of Somnium with significant results from the outcome; eg winner gets a free powerful unit, or a golden age or something.
 
Great idea to include a mini-game in FfH and superb implementation! I also love the graphics.

One minor issue - my game with Alexis finished with result 48 to 48. The message said "You have finished tied with Alexis". To be honest I'd rather prefer not to :mischief: Way too dangerous...
I think it should be something like "Your game finished with a tie". Please someone with better English skills correct me.
 
Great idea to include a mini-game in FfH and superb implementation! I also love the graphics.

One minor issue - my game with Alexis finished with result 48 to 48. The message said "You have finished tied with Alexis". To be honest I'd rather prefer not to :mischief: Way too dangerous...
I think it should be something like "Your game finished with a tie". Please someone with better English skills correct me.

One common phrase is:
"Your game ended in a draw."
 
I guess this is the right place to post this.

Text that is too long gets not wrapped. Not a problem with the english text (maybe for lower resolutions though) but when translating this becomes a problem.
 

Attachments

  • Somnium.jpg
    Somnium.jpg
    386.3 KB · Views: 143
I just saw Os-Gabella use a Fool to take a 3 of Dragons instead of a 5 of a couple other suits I have, even though she already had drawn 4 very good cards including the 7 of Dragons. It was a very dumb move, as none of the more valuable cards would have made her discard her hand.

She still won the game though. I was very unlucky with the cards I drew, never drawing a card as good as some she discarded.
 
I just saw Os-Gabella use a Fool to take a 3 (or was it a 4?) of Dragons instead of a 5 or 6 of a couple other suits I have, even though she already had drawn 4 very good cards including the 7 of Dragons. It was a very dumb move, as none of the more valuable cards would have made her discard her hand.

Taking a 3 knocks you down 3 points. Taking a 6 when you have a 5 in the suit only knocks you down 1 point. So it could be a good move.

But, as in all Ai programming, the question is "overall is the AI playing appropriatly?" Its not about doing the ideal thing in one case as much as if the AI tends to make correct decisions overall. We don't program for the specifics.

Your feedback is still valuable, but trends are even more important (which if many people are seeing what you are seeing is a trend). Otherwise you get into a system where you are tweaking behavior forever.

So some general questions:

1. Does the Ai using its fools effectivly?
2. Do different opponents play differently?
3. Assuming that multiple opponents play differently are they all reasonable challenging opponents?
4. Assumign that multiple opponents play differently who seems to be the most difficult one to beat?
 
So some general questions:

1. Does the Ai using its fools effectivly?
2. Do different opponents play differently?
3. Assuming that multiple opponents play differently are they all reasonable challenging opponents?
4. Assumign that multiple opponents play differently who seems to be the most difficult one to beat?

1 - Yes
2 - Yes
3 - Yes, but Fools make a big wildcard
4 - haven't been keeping track.
 
1-3: clearly yes in my experience. :) (Emperor base difficulty)

4: for me the more conservative ones. Most notably Capria (tested: Kyleen, Baeri, Capria). Though the games they do lose those really get pummeled most of the time. But i play a bit risky at times so that might be down to playstyle. Not much variety tested yet but still.

Keelyn has been rather beatable for me (before she went do..*cough* cheerfully got tolerated :assimilate: by my holy elhoim warriors.). But if i lose i really get hit hard (sometimes doublefool in one draw. That sucks. :()
Definately have to adjust my playing if i switch opponents. Otherwise i loose the first one or two.
 
I just saw Os-Gabella use a Fool to take a 3 of Dragons instead of a 5 of a couple other suits I have, even though she already had drawn 4 very good cards including the 7 of Dragons. It was a very dumb move, as none of the more valuable cards would have made her discard her hand.

She still won the game though. I was very unlucky with the cards I drew, never drawing a card as good as some she discarded.

I concur with Kael about AI programming but in this case two questions are pertinent:

Does the AI remember what cards are under the top-card in your (and their for that matter) stacks?

Is a general behavior such that the AI selects the biggest net value card (assuming 1 is true) that does NOT match an already existing suit in the current draw?

(warning: tanget)

Mind you I have never attempted to program an AI (though I am a programmer) but I am assuming that you program the AI to have a certain degree of knowledge and, through that knowledge, calculate probabilities and choose an action that has the highest favorable probability. The coding of boundary cases (last card, fool card with suits already drawn, etc) is a matter of programming knowledge into the AI to make it behave more "rationally". Unfortunately programming an AI is an ongoing exercise of programming in additional knowledge as we (humans) observe the behavior. This is necessary since the AI (in current commercial forms) is incapable of programming itself to any meaningful degree.

Kael wrote:

But, as in all Ai programming, the question is "overall is the AI playing appropriatly?" Its not about doing the ideal thing in one case as much as if the AI tends to make correct decisions overall. We don't program for the specifics.

This fails to distinguish "specifics". There are both specific conditions (1 card remaining, suits already drawn, etc) and specific instances of certain conditions (there is a sword, angel, demon and fool drawn). I agree that it is undesirable to code to specific instances, but If Kael is arguing against coding to specific conditions then I, as an interested learner, would request a brief outline of his rationale since without changing the rules of the game those conditions are unable to be changed (and if the rule change then the AI would have to be changed anyway).
 
This fails to distinguish "specifics". There are both specific conditions (1 card remaining, suits already drawn, etc) and specific instances of certain conditions (there is a sword, angel, demon and fool drawn). I agree that it is undesirable to code to specific instances, but If Kael is arguing against coding to specific conditions then I, as an interested learner, would request a brief outline of his rationale since without changing the rules of the game those conditions are unable to be changed (and if the rule change then the AI would have to be changed anyway).

I was saying that in AI programming we have to look at the whole picture. Specifics are helpful if they help display a larger trend. But we wouldnt want to code against specifics, be it the way an adept responds to a threatening chariot when surrounded by hills, or the play of a specific somnium card. Instead we need to wonder about the generals, do AI spellcasters respond appropriatly when threatened overall, does the ai play Somnium well.
 
i just had an idea that i think would be a cool way of making somnium that little more integrated into the game: it would also be cool if some events could choose options where you are forced into a somnium game with another leader to resolve an issue. ie:

"Perpentach has sent emissaries asking if we could resolve this war through a game of somnium, rather than wasting the lives of our citizens. he proposes that if he wins we must give him [random tech] and [x gold], but if we win, he will give us [random tech] and [x gold]."

"an old wanderer has challenged you to a game of somnium. he claims to have found secret information regarding a distant civilization and offers to give it to you if you win. however, he is asking that if he wins, we must give him [x gold]" (effect: if you win get maps of an undiscovered civilizations cultural area, if you lose, lose [x gold] from your treasury.)

etc...
 
Back
Top Bottom