GameTask is a global, engine-owned async helper built on top of TaskSource.
It manages async work for the entire lifetime of the current game session, rather than for a specific object or system within the game.

All GameTask operations are automatically canceled only when the session ends (for example, on a map change or reload).
There is no object-level or manual cancellation.

If your async logic belongs to something that does not live for the entire game session—such as entities, components, abilities, or other in-game systems—you should use TaskSource instead, so the async work is canceled when that object is destroyed. 


For Example:

a Global Logger that:
  • Start when the game starts
  • Not defined by an entity
  • stop when session ends
public static class PerformanceLogger
{
    public static void Start()
    {
        _ = Run();
    }

    static async Task Run()
    {
        while ( true )
        {
            await GameTask.DelaySeconds(1);
            Log.Info($"FPS: {HostStats.Fps}");
        }
    }
}
once called from a session entry point (like a GameObjectSystemusing ISceneStart) the logger will be active and persist without be attached to something within the game.