import asyncio from game_flow import PlayerWebSocketHandler async def simulate_matchmaking(num_players: int = 6, mode: str = "classic"): print(f"\n๐ŸŽฎ Spawning {num_players} players...\n") # 1) Login + WebSocket connect players = await asyncio.gather(*[ PlayerWebSocketHandler.setup_player(f"player_{i}") for i in range(num_players) ]) print("\nโœ… All players authenticated + connected\n") # 2) Start listeners BEFORE matchmaking for p in players: p.start_listener() print("\n๐Ÿ‘‚ WebSocket listeners active\n") await asyncio.sleep(0.3) # 3) Queue all players in matchmaking print(f"\n๐ŸŽฏ Queuing players for mode={mode}...\n") await asyncio.gather(*[ p.join_matchmaking(mode) for p in players ]) print("\nโœ… All players queued โ€” waiting for matches...\n") # 4) Allow enough time for Nakama matchmaker to group players await asyncio.sleep(12) # 5) Cleanup print("\n๐Ÿงน Closing player connections...\n") await asyncio.gather(*[p.close() for p in players]) print("\n๐Ÿ Matchmaking simulation complete\n") if __name__ == "__main__": asyncio.run(simulate_matchmaking(6))