We are evaluating Nakama for a new project. One of the key features is the ability to have players in a large social space, then move to mini-games. When in a mini-game, they do not interact with anyone outside that match. But players still in the social space might see some of their actions within the mini-game. You saw this feature in games like Toontown, or Wizard 101, where the minigames played out in the social space geometry, but each mini-game was standalone, restarted its state, and excluded other players from interfering.
So the question is, how we might achieve this in Nakama. From what I’ve seen, the idea might be to use authoritative matches, and have match_loop in a mini-game do two things: 1) send updates to all joined players, 2) send a copy of (some) updates to the social space “match” so spectators can see movement and visual effects (but not interfere).
To accomplish this, the mini-game loop would need to insert messages into the social space match. I assume it is possible to find the social space match (it is a singleton, so we could store a reference to it somewhere). But is there a way to insert messages that are not being sent from a client? There are two ways to do that a) send directly to the “presences” in the social space. This might be disallowed, because we are in the mini-game loop, not the social space loop. So there is no dispatcher to use. b) send to the match somehow so that those messages are then picked up in the next social space loop, where they could be broadcast to players in the social space.
Is any of this possible? Is there a different/better way to approach this?