Page 1 of 4

Why can I not draw card(s) first?

Posted: 03 February 2025, 01:45
by FrankJones
Greetings,

My apologies for what is probably a repeat topic - I tried the search function for "draw card" but it was not helpful.

I played the steam version for years and am glad to see that this BGA version functions properly. Being allowed to choose the order of effects is nice, especially since that is the actual rule. The "whatever" button for the situations in which I do not care about the resolution order is also a nice touch.

My only gripe is that when I played a card that is going to give me one or more cards, I want to see the card or cards first before making other decisions. Often the game dos not allow this, giving a message along the lines of, "cannot do an action that cannot be undone". Can someone please explain this to me? Yes, once a card is revealed, the action cannot be undone. So what? Why does that mean I cannot draw the card first? If the card can legally be played, what possible situation could result in needing to undo the entire action?

Re: Why can I not draw card(s) first?

Posted: 03 February 2025, 02:57
by Wacky1
I think I know what you mean but just in case maybe you should spell it out. I think you mean, for example, when you are playing point luna and play business contacts; the game seems to require you to do the draw 4 pick 2 before letting you take your point luna draw, is that what you mean? If so I am not sure why that's the case.

Re: Why can I not draw card(s) first?

Posted: 03 February 2025, 04:54
by FrankJones
Basically, yes, though I have not yet used Point Lune on here because I have not been using any expansions. I love point Luna, but I do not like preludes in general.

There are numerous such situations. It seems to happen often. Large Convoy and Convoy from Europa. Literally any play that results in a card draw, I want the card first. There is no reason not to. I remember this was discussed on Board Game geek this was discussed and someone said, "Well, what if you draw the card first and then remaining effects of the card cannot be carried out, but now a card has been revealed".

Which.... what ???

If a card's cost and effects cannot be fulfilled and carried out, the card is not playable, and the situation would not occur in the first place. Once a card is deemed playable, what could possibly happen that would make the card no longer playable and need to be canceled? I cannot think of any situation. Maybe some weird sequence with the expansion map that requires paying 6 MC for an ocean after playing a tile there? Still, if the tile can be played (Maybe Natural preserve, thus drawing a card from Mars or Olympus), and there is some weird reason why the player might lose money while resolving it and then can no longer finish resolving the effects of playing that natural preserve tile ... Well... first, I do not see how that could happen. If rebates are needed to bring the player to 6 MC to finish the actions, then have the code check to see that will be the case, and if not, then the initial card is not playable. Or just declare that for that one spot on the map, card draws must happen after the 6 MC ocean is paid for.

Re: Why can I not draw card(s) first?

Posted: 03 February 2025, 10:04
by xspuipuke
It is a computational science problem: Sometimes, you cannot really tell whether or not a card is playable before you let the chain of events unfold and see what happens. And then it might be too late. That's why the game won't let you carry out draw effects until at most one other effect remains.

Search for Boolean Satisfiability Problem to learn more.

Re: Why can I not draw card(s) first?

Posted: 04 February 2025, 00:51
by FrankJones
xspuipuke wrote: 03 February 2025, 10:04 It is a computational science problem: Sometimes, you cannot really tell whether or not a card is playable before you let the chain of events unfold and see what happens. And then it might be too late. That's why the game won't let you carry out draw effects until at most one other effect remains.

Search for Boolean Satisfiability Problem to learn more.
Having played the game more than 1000 times, I cannot think of a single situation in which it is impossible to determine whether a card is playable before playing the card. No one else has provided such an example either.

I have studied enough programming to understand the concept of Boolean Satisfiability. I fail to see how and why it applies here.

To be able to play a card, the cost, minus discounts, must be able to be paid. That's easy to determine.
Any production reductions must occur. Again, easy to check.
Any subtraction of resources must be able to be done (Such as Moss or Nitrophilic Moss). Again, easy to check.
Global parameter requirements must be met. Again, easy to check.

What possible scenario would ever cause a card's playability to be indeterminate? Has ANYONEE ever "played" a card in TFM, paid the cost, only to then find that the game had to cancel the entire sequence because the card was actually not playable?

For all the numerous flaws of the steam version, it allows card draw first and there has never been an issue of sudden unplayability of the card.

The "Free online Terraforming Mars" version, with literally every expansion and promo card, allows for card draw first and has never had a problem.

The programming here (Which is excellent, just to be clear; BGA is superior to steam almost 100% of the time), in this specific situation, is dealing with a nonexistent problem.

Citing "Boolean Satisfiability Problem" seems like a way to confuse people who do not know much about programming. I can write and understand code, at least, at the very basic level of code needed for a simple card game. But, one need not even understand actual programing languages to assess this situation. If we can simply write out the steps in pseudocode or even just plain English, and can show that this set of instructions can resolve the effects of any card initially deemed playable, then it doesn't really matter whether the person writing these steps is an actual programmer, does it? Any programmer can then translate those instructions into functional code in whatever language the game is programmed in.

If, somehow, there can be found to be a situation where a playable card is found to be unplayable partway through resolving the card's effects (which I am betting has never happened in millions of card plays), then,

1) Cancel the entire action, and reshuffle the card into the deck (An easy solution that happens frequently in poker when a card is erroneously exposed), and
2) Write a few lines of code to specifically disallow immediate card draw for that problematic card only, rather than improperly preventing immediate card draw for all cards that can draw cards.

Re: Why can I not draw card(s) first?

Posted: 04 February 2025, 01:29
by xspuipuke
I can actually think of a situation where you can‘t tell in advance whether a sequence will succeed or fail but it involves cards that are not implemented yet.

Heroku does not have this problem because it lets you undo a draw so it entices cheating.

Your proposed solution #1 is a non-solution because a cheater would undo a card draw repeatedly until they randomly draw their desired card.

Your solution #2 asks for trouble with future expansions and cards and leads to code nobody will ever understand or be able to maintain.

Re: Why can I not draw card(s) first?

Posted: 04 February 2025, 06:27
by FrankJones
I am curious what the scenario is with the not-yet implement card. Is it from an expansion not yet available? Or a promo card?

Regarding Heroku, and your point about my proposed solution #1:
I am not suggesting that a player should be allowed to voluntarily undo anything after seeing which card was drawn. If that can be done on Heroku, that's a very surprising flaw from a generally strong program that has had very few flaws or bugs.

How would someone on BGA here exploit my solution#1? My solution was to have the game reshuffle an exposed card if the (as of yet impossible) situation occurs where a card is drawn but then somehow the card's effects cannot be resolved. Both players would be shown the exposed card, and it would be reshuffled. Both players would have the same information, no on would know which card was going to come out next, and, again, this would not be something a player could do voluntarily after seeing the card, not liking it, and deciding "I'll just cancel, and hope for a better card when I try the action again".

My solution number 2 will work just fine now, and will continue to work until such a scenario actually exists, in which case, apply solution number#1. I see nothing confusing about understanding or maintaining the code. A simple if/then code block would execute a reshuffle with the exposed card shuffled back in (again, in the impossible or nearly impossible situation in which the "if" condition actually occurs.) The programmer would write a simple comment explaining what the code block is doing, even though no comment would be necessary since any programmer working on Terraforming Mars would have no trouble following a simple "if/then" block with clearly defined variables and outcomes.

In the meantime, there are numerous situations in which the game's rules are disregarded, preventing a card draw until the end of a sequence, for no compelling reason. Not to mention the wasted time when I click "draw card" when selecting the order of operations and it tells me I cannot.

Re: Why can I not draw card(s) first?

Posted: 04 February 2025, 13:03
by xspuipuke
The constructed case involves Lava Tube Settlement, Neptunian Power Consultants and the Hellas map.

Imagine you lack energy production at the time of playing Lava Tube Settlement but you place it on the South Pole, placing an Ocean, triggering NPC to get the power production you need. BUT now consider you must place the ocean in such a way to generate enough money to even use NPC but you decide to draw a card instead (and not gaining enough cash to buy power) ... Now you've drawn a card but you cannot complete Lava Tube Settlement because you can't reduce power. If you place the ocean another way, to generate more cash, this sequence would be totally legit. (If for some reason you don't agree with this like in the other thread—these are the rules.)

Again, your solution #1 involves undoing a card draw which I can then undo over and over again until I draw the desired card. Reshuffling the card into the deck is not the problem, it's the ability to cheat this solution creates.

And yet again, your solution #2 is just not maintenance-friendly and asking for trouble. Yes, you can hack your way through most stuff but sooner or later you'll run into problems and need to refactor your code anyway, which is costly. Are you going to pay for that if it happens?

BTW, I'm not a dev here, just speaking from experience.

Re: Why can I not draw card(s) first?

Posted: 04 February 2025, 15:38
by Boricua1
The discussion is great thanks all; I wonder if an employee of BGA would post a reply to help us understand the status quo. Perhaps the original poster (OP) should submit a bug report or feature request, those of us interested can upvote it, and see where it goes?

I could never afford premium on here BGA; those of you who do pay for premium, do you know if you can expect communication and/or support for these sort of situations?

Re: Why can I not draw card(s) first?

Posted: 04 February 2025, 16:46
by xspuipuke
If I understand correctly, most devs here are freelancers. I've seen the devs answer stuff on these forums so you might be lucky enough for them to elaborate. My example above, however, illustrates how it is NOT feasible, in general, to decide whether a chain of events will succeed or not and that's why undoable stuff like card draw can only happen once it is 100% clear that it can't fail, i.e., if it is the last or second-to-last thing happening.