Thrillberg / imperial

Imperial is a fun board game.
17 stars 6 forks source link

Allow players to finance the nations #302

Closed dmcarmo closed 1 year ago

dmcarmo commented 3 years ago

When a nation doesn't have enough funds to build a factory or import units, the controlling player may spend his own funds to finance these actions. But the rules also allow other players to finance nations that aren't controlled by them.

According to the rulebook: "The players hold the treasuries they control in trust. They are not allowed to dispose of the treasuries personally nor lend or give away money from the treasury. However, they are allowed to give personal cash to the treasury at any time in order to support it financially."

And here's a clarification from the designer: https://www.boardgamegeek.com/thread/302718/article/2269881#2269881

Thrillberg commented 3 years ago

This will be interesting to implement. The concept of being able to give personal cash at any time strains our availableActions system where all actions are explicitly listed. How do we represent this in the game logic? Do we have a single action for each possible contribution to each possible nation? The multiplication gets wild with that...

Or maybe we implement something that programmatically allows any contribution actions up to a limit (the player's cash amount)? Then the mulitplication is only by 6, one for each nation.

I think I like the second option more but I don't understand as well how to implement it at the moment. I feel like it would break our naive check for available actions at every tick.

dmcarmo commented 3 years ago

I think we can split this into two goals:

  1. the active player is able to finance the current nation if needed
  2. anyone can finance a nation at any time (which would need some sort of channel for the players to negotiate this)

The first one is probably easier and more urgent to implement. The second one is trickier as it also requires negotiation/communication between players.

Thrillberg commented 3 years ago

I'm not sure I would divide it that way, personally. For one thing, is negotiation or communication necessary? I think to start we can just have players be able to contribute and presume any in-game communication is happening outside of the app (phone/Zoom call/Google Meet/Discord/telepathy).

For the mechanics of registering a "finance"-type action, I think it might be best if we make our check for available actions on each tick, linked in my previous comment, handle contributions too and not just disqualify a valid contribution because it is not an "available action". This will make our validation code a little more complicated but I think that's ok.

dmcarmo commented 3 years ago

Sure, players can use any existing channel to communicate between themselves, but I'm not sure if you're obligated to accept any proposal so some sort of negotiation is needed. I thought of breaking the problem in two because the first one is easier to solve, since it only involves the active player and the current nation. I guess that what you're proposing is a "generic" finance action that can be used by any player at any time, which would include both cases. We'll probably need to discuss the mechanics of this action though.

PedroRCSequeira commented 3 years ago

It is very usual for online implementations to have slightly different rules than the boardgame (sekigahara came to mind, with it's loyalty variants (3 of them! on yucata)

And stuff that involves negotiation is usually tricky to do, specially if people are playing async (one that comes to mind is in some 18xx games, any player at the table can force the president to run the best route possible, which could be noticed by a specific player after a bunch of actions taken place

My suggestion is, implement the "country financed by controller" and leave the other bit for literally the last thing done on the site :D

Also, in maybe 100 games I cant remember ever financing an action (except the investor, but there it's just "not receiving as much as you should), and I'm having a really hard time imagining a situation where I finance someone else's country, no matter how invested I am there too ^^

Thrillberg commented 3 years ago

@PedroRCSequeira's comment is making me think maybe we should push this feature to the back burner and handle other things first. Even financing your own nation sounds like a rare thing to do.

PedroRCSequeira commented 3 years ago

For sure, if i had to pick one rule that barely gets used is this

And among the other open tickets there are things that happens multiple times per game, instead of maybe once every 10 or so games (: imho

GitGubM8 commented 1 year ago

Partially addressed in https://github.com/Thrillberg/imperial/pull/711, we're now able to finance factories

Will open a new ticket for financing imports and swiss bank financing so they can force an investor stop