please fix the bloody issues with Bank and Fortune :-)

Previous topic - Next topic

santamonica811

More than 2.5 years ago, it was a known issue that Lord Rat would play Bank first, rather than last.  Can someone take 30 seconds out of their valuable day to explain why this has not been fixed?  It is an EASY fix...just tell LR to play Bank ***Last***.  Always.

Sort of the same issue with Fortune.  Rat will play a few coins, then play Fortune, and then play more coins...deliberately missing out on doubling those latter coins.

These bugs really affect my enjoyment of the game.  It is almost impossible to lose a game with Bank or Fortune (or Counterfeit, for that matter) in the kingdom, so now I usually just resign such games...I take no pleasure in playing Lord Rat when there is no way that I will lose.

1.  Can you fix these?
2.  If you are unwilling/unable to fix them, can someone please give us the courtesy of taking a minute or two to tell us this--to our face (so to speak)--that these bugs simply will not be fixed?  Then, we can move on.  I feel like I'm stuck in Kubler-Ross's "Five Stages of Grief" with no way to move on from anger to, finally, acceptance.  :)  What I simply hate about my local cable company is their refusal to respond to questions . . . it makes us customers feel like we are not valued, and makes us feel like we are worthless clumps of crap, and of value only for our monthly subscriptions.  Please strive to be less evil than cable companies . . . I'm setting the bar pretty low.   LOL  :-)

Ingix

Of course, both (Bank/Fortune) are good points. I'm not sure how easy it is to fix this, but I'll bring it up with Stef. There is another update in the pipeline that will probably get pushed out first, though, which will need Stef's attention.

santamonica811

Thanks for the quick response.  I am not a programmer, so I rarely have any idea if a particular fix is easy or difficult.  But logic tells me that these are the very easiest to fix, since you do not have to program the AI to think or evaluate situations.  Just program in, "ALWAYS play last when playing treasures."

"Always" and "never" should be far far easier than anything where the AI needs to make a decision that is (ideally) dependent on the game situation, who is ahead/behind, other cards in the kingdom, etc etc etc.

Ingix

The main source of problems is often the design of something, that makes an apparently easy change complicated.

To give you an example, when I did a bit of Dominion programming for myself years ago, I just started with the base set. In that time, a supply pile during the game could easily be described by 2 things: The card it represents, and the number of cards still in it.

When you start with this and continue and do work, then everything is fine, until Dark Ages comes out and suddenly you have 2 piles that contain different cards (Ruins and Knights), later of course more (split piles, Castles).

What's easy to do and handle in real life becomes a problem in your code. In real life, you always had to put down 10 cards per pile, that doesn't change with Kniths. But in the code, you just had 2 things representing a pile: The card in it and the number of cards left in it. That has to change, you must now represent each card in a pile by its own thing (thats an object in todays programming paradigm).

That's some busywork, but usually doable. The big problem is that probably in some places in your code you have assumed that only one kind of card can come from a pile. Consider Talisman, a Treasure card that when it is in play and you buy a card costing $4 or less, you gain another copy of that card.

So, what you could have done in the Dominon world before Dark Ages is to check, when you buy a card, how many Talismans are in play (call that number X), and how many copies of the card you want to buy are still in the supply (call that number Y).

If X+1 is less than or equal to Y, then you give the player X+1 copies of the card from the pile (one bought and one each for the X Talismans). If not, then you give them the remaining Y copies of the card, emptying the pile. That would have worked pretty well.

When Dark Ages comes around, you implement the changes I outlined above. You will have to change how to represent a supply pile and probably have a function that gives a player the top card of a pile, because that is needed very often (gaining cards happens regularly). If you don't have a special function that gives a player several cards from a pile, you'll change the check I described above to give the aditional cards from Talisman out one at a time. Everything works, even after extended testing.

So, on the surface all is well, until Empires comes out a few years later. You implement the split piles like you did Knights and Ruins. But 1 day after the online implementation goes life, you get bug reports. One player is complaining that their opponent got a Fortune in addition to the Gladiator they bought. Another says they don't think it is correct that they got an Emporium with the Patrician they bought. You look up the games and see that in both cases the players had a Talisman in play.

So what happened? The old assumption that you only need to count the cards in a pile to handle Talisman is now incorrect. If you buy the last Patrician/Gladiator, Talsiman is not supposed to give you the next card in the pile, because it is  differently named card! That situation could not exist when you  programmed Talisman, so you did not take it into account. Such kind of problems are the source for many bugs, one of them the loss of an Ariadne 5 rocket: https://www.bugsnag.com/blog/bug-day-ariane-5-disaster
What happened was that an assumption that was correct for Ariadne 4 rockets was no longer true for Ariadne 5 rockets!

What I want to show with this is changing things that appear easy may have consequences that are not easily understandable from an outside perspective, because that doesn't take into account how the current behavior has been implemented. Maybe the part of the program that plays out the Treasure cards for bots isn't really part of the bot code, but some other code that needs to exist anyway for other reasons. Then you have to make new code (because the old code is still needed).

Sometimes information needed is not available at the place that executes that code, or it is complicated to bring this infomation to the place (think of transmitting someone who is physically away from you a lengthy shopping list, in the days before mobile phones; usually you had to talk to them on a (fixed) phone and they had to write it down, if they had something to write with and on). Information flow in a program is restricted for good reasons, so sometimes things are harder to do than then they appear.




Hangar18

In general, the AI doesn't know how to use most treasures. If Counterfeit is in the supply, the AI goes crazy and buys as much as possible, but doesn't even use the Counterfeit to trash coppers (or any treasures). Most treasures beyond Gold and Silver are simply ignored by the AI, which should be no surprise, as the AI ignores most cards. I'd say the entire AI could use an overhaul, but I'm not sure how important that actually is. Most of us play against each other and not the AI. I like to use the AI fairly frequently, but its still secondary to human vs human play.

I agree with you that this seems like such a simple fix, as Banks and Fortunes should always be played last. There may be an issue however where the AI hasn't been programmed to play the treasures in ANY order.

santamonica811

Hmm...well, SOMETHING must have been programmed.  Because Lord Rat NEVER plays Fortune or Bank last.  Never!!!  If it were random (ie, no programming specific to order of playing Treasures), then it would be terrible plays in general, but at least it would sometimes be played correctly due to mere chance.  (E.g., 4 Treasures means that Bank will be played last 25% of the time, if truly random.)  But since these cards are never played last; it seems as though Lord Rat has been programmed to never play these cards correctly.  That's odd to me.