Skip to content

Player Tracking for each GameServer #1033

@markmandel

Description

@markmandel

Is your feature request related to a problem? Please describe.
It would be very useful to track player connection and disconnection against a specific GameServer.

This would allow us to do several things:

  • Track if a GameServer is full or not (we should also track GameServer capacity as well)
  • Be able to trace and debug a player lifecycle from matchmaker to gameserver connection (we should track an id or token on connection)
  • Autoscale Fleets based on how full gameservers are (useful for persistent worlds)

Describe the solution you'd like
(Full design TBD)

  • Need a way to specify the capacity of a GameServer, at creation time, but also editable from the SDK at runtime
  • SDK methods to track a player connection, and player disconnection with an id/player token
  • GameServer CRD Events for player connections and disconnections
  • GameServer CRD Status values that track player counts and capacity. Maybe should also have a list of current connected players?
  • May want to add some labels to allow for searching for full/empty/partially full game servers through the k8s api

Describe alternatives you've considered
Have a separate system for player tracking - but based on feedback, this is a feature that almost all users should find useful, so it feels like part of Agones, and also allows some useful functionality down the road -- such as autoscaling by player count, or automating backfill operations by searching for non-full game servers.

Additional context
I do have concerns that we are adding more API QPS with this, so we should track performance with these changes.

Metadata

Metadata

Assignees

Labels

area/user-experiencePertaining to developers trying to use Agones, e.g. SDK, installation, etckind/designProposal discussing new features / fixes and how they should be implementedkind/featureNew features for Agones

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions