What is the correct approach for using miminax in a game where bots make simultaneous moves ?
Minimax works fine for simultaneous move games; the only modification required is that instead of enumerating an opponent's counter-moves to each possible move, you build a payoff matrix based on what you and your opponent play at the same time.
Recall that in minimax, at each node you enumerate your (or your opponent's) possible moves, evaluate your opponent's (or your) counter-moves to get the best one corresponding to each of your moves, and then pick the move that maximises your payoff. That is, you may have this:
Then the choice is clear; A should pick A1 because it leads to the best payoff (because A expects B to play B1, which leads to A playing ... and B playing ... and so on and so on until it leads to a payoff of +3).
With simultaneous moves, you need to consider both players' moves together, in a payoff matrix:
Then the choice is not always so obvious, as you need to formulate an effective strategy to pick the best move. For example, in the above example, the choice is not obvious: A may choose A2 since it maximises the minimum expected payoff (-1, when B1 is played), but knowing that A will play A2, B may play B1 to realise the -1 payoff, but knowing that B will play B1, A may play A1 to get the +3 payoff and so on.