@startuml
'https://plantuml.com/sequence-diagram
participant Matchmaker
participant Agones
participant "Canary Fleet\nResource" as CanaryFleet
participant "Stable Fleet\nResource" as StableFleet
Matchmaker -> Agones: Create: GameServerAllocation
note left
GameServerAllocation is implemented to prefer
allocating from the Canary Fleet, but if a Ready
GameServer cannot be found in the Canary Fleet,
to fall back to the Stable Fleet.
end note
group GameServerAllocation
else Check Canary Fleet first
Agones -> CanaryFleet: Check if GameServer is available
note right
The Canary Fleet is
usually a small, fixed size
end note
else None available in Canary Fleet
Agones -> StableFleet: Check if GameServer is available
note right
When the Canary Fleet is fully allocated, the
allocation falls over to the Stable Fleet.
end note
end group
Matchmaker <-- Agones: returns Allocated GameServer record
@enduml