InitPlayer using For Loop spawning async tasks - Waiting for all to finish

I ran into an issue where my player would spawn before the OnBegin of the creative device could initialize my spawners to initialize the players.

In digging for a solution I found that you can collect an array of tasks and then .Await() for them to all finish. I tried to do this with “Sync:” but you can’t just plop a for loop in there. It still wants two async functions. So, I came to this:

    InitGame()<suspends>:void=
        Tasks := for( Player : GetPlayspace().GetPlayers() )
        {
            spawn{ InitPlayer(Player) }
        }
        for( Task :Tasks ):
            Print("Task Waiting")
            Task.Await()

Since InitGame is async all the InitPlayers will complete and then the InitGame function finishes. I call it in the OnBegin sequence and after I will InitSpawners() and check for first time spawners for players joining late.

What do you guys think? Have you ran into this?

Here’s code I used to test it to give you a complete picture.

    OnBegin<override>()<suspends>:void=
        TaskCheckInitGame()


    TaskCheckInitGame()<suspends>:void=
        Print("Starting array of spawns of TaskCheckInitPlayer(X)")
        Tasks := for ( X := 0..20):
            spawn{ TaskCheckInitPlayer(X) }
        
        Print("Starting Await() LOOP TaskCheckInitPlayer(X)")
        for (Task : Tasks):
            Print("Task.Await()")
            Task.Await()
            Print("Task.Await() Complete")
        
        Print("All TaskInitPlayers Completed. THIS SHOULD BE LAST!")


    TaskCheckInitPlayer(X:int)<suspends>:void=
        Sleep(10.0)
        Print("TaskCheckInitPlayer Completed for X= {X}")

The Log:

[2025.06.24-18.37.05:072][439]LogVerse: : Starting array of spawns of TaskCheckInitPlayer(X)
[2025.06.24-18.37.05:072][439]LogVerse: : Starting Await() LOOP TaskCheckInitPlayer(X)
[2025.06.24-18.37.05:073][439]LogVerse: : Task.Await()
[2025.06.24-18.37.15:079][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 10
[2025.06.24-18.37.15:081][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 18
[2025.06.24-18.37.15:081][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 11
[2025.06.24-18.37.15:082][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 9
[2025.06.24-18.37.15:082][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 17
[2025.06.24-18.37.15:082][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 15
[2025.06.24-18.37.15:083][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 20
[2025.06.24-18.37.15:083][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 14
[2025.06.24-18.37.15:083][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 13
[2025.06.24-18.37.15:084][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 7
[2025.06.24-18.37.15:084][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 3
[2025.06.24-18.37.15:084][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 16
[2025.06.24-18.37.15:084][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 12
[2025.06.24-18.37.15:086][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 8
[2025.06.24-18.37.15:086][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 4
[2025.06.24-18.37.15:086][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 6
[2025.06.24-18.37.15:087][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 5
[2025.06.24-18.37.15:087][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 0
[2025.06.24-18.37.15:087][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:087][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:087][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 2
[2025.06.24-18.37.15:089][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 1
[2025.06.24-18.37.15:089][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:089][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:090][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:090][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:090][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:090][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:091][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:091][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:091][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:092][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:093][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:093][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:093][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:094][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:094][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:094][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:095][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:095][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:095][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:095][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:096][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:096][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:096][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:097][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:098][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:098][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:098][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:098][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:098][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:099][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:099][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:099][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:099][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:101][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:101][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:101][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:102][ 40]LogVerse: : TaskCheckInitPlayer Completed for X= 19
[2025.06.24-18.37.15:102][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:102][ 40]LogVerse: : Task.Await()
[2025.06.24-18.37.15:102][ 40]LogVerse: : Task.Await() Complete
[2025.06.24-18.37.15:102][ 40]LogVerse: : All TaskInitPlayers Completed. THIS SHOULD BE LAST!