How do I start several coroutines and wait until they ALL return? (C#)

I’m making a turn-based game with an arbitrary number of players. Turns happen simultaneously, players plan their move and then when all players submit, the plans are resolved. Think rock-paper-scissors, you decide what you’re going to throw then throw at the same time.

So, what I need for the first phase is for it to spawn a coroutine for each player to plan their move, and then submit it to a data structure the original method can see. I need the original method to wait until all the coroutines return.

What I really need help with is how to do that waiting, and how the coroutines will give their returns to the original method?

I’m not convinced that you need more than one coroutine, but either way what you need is a counter. You should know how many players you have, so if the number of responses that you’ve received is equal to the number of players that you have, then continue.

It would make sense to have one coroutine running on the master that waits for all player submissions. Once all submissions have been received then process the submissions, and send the results to the clients.