system

package
v0.20.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2026 License: LGPL-3.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AssignShardCommand

type AssignShardCommand struct {
	LobbyID   string                 `json:"lobby_id"`
	RequestID string                 `json:"request_id"`
	GameWorld component.ShardAddress `json:"game_world"`
	Reason    string                 `json:"reason,omitempty"`
}

AssignShardCommand is sent by an external orchestrator to complete a session start that is waiting in SessionStateAwaitingAllocation. The lobby writes GameWorld directly onto the lobby component, transitions to SessionStateInSession, and dispatches NotifySessionStartCommand. The orchestrator is responsible for providing a complete GameWorld address (Region, Organization, Project, ShardID).

If GameWorld.ShardID is empty, the assignment is treated as a failure: the lobby returns to SessionStateIdle and a failure StartSessionResult is emitted with Reason as the failure message.

RequestID must equal the lobby's current Session.PendingRequestID (which the orchestrator reads from the LobbyComponent). Mismatched RequestIDs are rejected; this rejects late duplicate or stale commands that arrive after the original pending cycle has already been completed or cancelled.

func (AssignShardCommand) AppendWire added in v0.16.9

func (c AssignShardCommand) AppendWire(b []byte) []byte

func (AssignShardCommand) FromProto added in v0.14.0

func (AssignShardCommand) MarshalWire added in v0.15.0

func (c AssignShardCommand) MarshalWire() []byte

func (AssignShardCommand) Name

func (AssignShardCommand) Name() string

Name returns the command name.

func (AssignShardCommand) ProtoDescriptor added in v0.16.4

func (AssignShardCommand) SizeWire added in v0.16.9

func (c AssignShardCommand) SizeWire() int

func (AssignShardCommand) ToProto added in v0.14.0

func (AssignShardCommand) UnmarshalWire added in v0.15.0

func (c AssignShardCommand) UnmarshalWire(data []byte) (any, error)

type Config added in v0.16.5

type Config struct {
	// LobbyWorld is this lobby shard's address (for game shard to send NotifySessionEndCommand back).
	LobbyWorld component.ShardAddress `json:"lobby_world"`

	// HeartbeatTimeout is how long (in seconds) before a player is removed for not sending heartbeats.
	// Clients should send heartbeats more frequently than this (e.g., every timeout/3 seconds).
	// Default: 30 seconds.
	HeartbeatTimeout int64 `json:"heartbeat_timeout"`

	// AssignmentAuthority is an accident-prevention filter, NOT an
	// authentication boundary. The plugin compares it against the sending shard
	// and drops mismatches. This prevents an unrelated system that
	// happens to send AssignShardCommand from accidentally completing the
	// wrong lobby's session start. Clients cannot send as a shard, but it
	// does NOT defend against a service on NATS that names another
	// sender, because the sender address is not signature-verified. Real
	// authentication must live above the plugin (NATS ACLs). Empty = no
	// filter.
	AssignmentAuthority string `json:"assignment_authority,omitempty"`

	// MaxAllocationTimeout bounds how long (in seconds) a lobby may remain
	// in SessionStateAwaitingAllocation before the lobby shard fails the
	// start itself and returns to Idle. Values <= 0 disable timeout
	// enforcement entirely.
	MaxAllocationTimeout int64 `json:"max_allocation_timeout,omitempty"`
}

Config is the runtime configuration the systems read, supplied by the shard's main.go through the lobby plugin at registration.

It lives here rather than in the component package because it is not a component: it has no Name(), is wired to no system, never becomes an entity, and is never snapshotted. The component package holds only types that are actually stored in the world.

type CreateLobbyCommand

type CreateLobbyCommand struct {
	RequestID string `json:"request_id"` // For matching request/response
	// Preset is the label of a server-registered team configuration.
	Preset string `json:"preset"`
	// PlayerPassthroughData is opaque client JSON for the creating player, relayed to other clients.
	PlayerPassthroughData string `json:"player_passthrough_data,omitempty"`
	// SessionPassthroughData is opaque client JSON for the lobby session, relayed to other clients.
	SessionPassthroughData string `json:"session_passthrough_data,omitempty"`
}

CreateLobbyCommand creates a new lobby with the sender as leader. The server resolves Preset against lobby.Config.LobbyPresets and rejects unknown or empty preset labels. Clients cannot supply arbitrary team configuration; the server is the source of truth.

The target game shard is not specified here: it is assigned later by an external orchestrator via AssignShardCommand when the session starts.

func (CreateLobbyCommand) AppendWire added in v0.16.9

func (c CreateLobbyCommand) AppendWire(b []byte) []byte

func (CreateLobbyCommand) FromProto added in v0.14.0

func (CreateLobbyCommand) MarshalWire added in v0.15.0

func (c CreateLobbyCommand) MarshalWire() []byte

func (CreateLobbyCommand) Name

func (CreateLobbyCommand) Name() string

Name returns the command name.

func (CreateLobbyCommand) ProtoDescriptor added in v0.16.4

func (CreateLobbyCommand) SizeWire added in v0.16.9

func (c CreateLobbyCommand) SizeWire() int

func (CreateLobbyCommand) ToProto added in v0.14.0

func (CreateLobbyCommand) UnmarshalWire added in v0.15.0

func (c CreateLobbyCommand) UnmarshalWire(data []byte) (any, error)

type CreateLobbyResult

type CreateLobbyResult struct {
	RequestID string                    `json:"request_id"`
	IsSuccess bool                      `json:"is_success"`
	Message   string                    `json:"message"`
	Lobby     component.LobbyComponent  `json:"lobby"`
	Player    component.PlayerComponent `json:"player"`
}

CreateLobbyResult is sent back to the client after CreateLobbyCommand.

func (CreateLobbyResult) AppendWire added in v0.16.9

func (c CreateLobbyResult) AppendWire(b []byte) []byte

func (CreateLobbyResult) FromProto added in v0.15.0

func (CreateLobbyResult) MarshalWire added in v0.15.0

func (c CreateLobbyResult) MarshalWire() []byte

func (CreateLobbyResult) Name

func (r CreateLobbyResult) Name() string

Name returns the request-prefixed event name.

func (CreateLobbyResult) ProtoDescriptor added in v0.16.4

func (c CreateLobbyResult) ProtoDescriptor() protoreflect.MessageDescriptor

func (CreateLobbyResult) SizeWire added in v0.16.9

func (c CreateLobbyResult) SizeWire() int

func (CreateLobbyResult) ToProto added in v0.15.0

func (CreateLobbyResult) UnmarshalWire added in v0.15.0

func (c CreateLobbyResult) UnmarshalWire(data []byte) (any, error)

type DefaultProvider

type DefaultProvider struct{}

DefaultProvider provides default implementations.

func (DefaultProvider) GenerateInviteCode

func (DefaultProvider) GenerateInviteCode(lobby *component.LobbyComponent, seed int64) string

GenerateInviteCode generates a 6-character invite code from Hash(LobbyID + seed). Pure in (lobby, seed): the caller owns the clock and must vary seed per attempt.

func (DefaultProvider) ValidateJoin

ValidateJoin accepts all joins by default. Games override this to enforce per-game requirements (version, region, level, etc.).

type GenerateInviteCodeCommand

type GenerateInviteCodeCommand struct {
	RequestID string `json:"request_id"` // For matching request/response
}

GenerateInviteCodeCommand generates a new invite code (leader only).

func (GenerateInviteCodeCommand) AppendWire added in v0.16.9

func (c GenerateInviteCodeCommand) AppendWire(b []byte) []byte

func (GenerateInviteCodeCommand) FromProto added in v0.14.0

func (GenerateInviteCodeCommand) MarshalWire added in v0.15.0

func (c GenerateInviteCodeCommand) MarshalWire() []byte

func (GenerateInviteCodeCommand) Name

Name returns the command name.

func (GenerateInviteCodeCommand) ProtoDescriptor added in v0.16.4

func (GenerateInviteCodeCommand) SizeWire added in v0.16.9

func (c GenerateInviteCodeCommand) SizeWire() int

func (GenerateInviteCodeCommand) ToProto added in v0.14.0

func (GenerateInviteCodeCommand) UnmarshalWire added in v0.15.0

func (c GenerateInviteCodeCommand) UnmarshalWire(data []byte) (any, error)

type GenerateInviteCodeResult

type GenerateInviteCodeResult struct {
	RequestID  string `json:"request_id"`
	IsSuccess  bool   `json:"is_success"`
	Message    string `json:"message"`
	InviteCode string `json:"invite_code,omitempty"`
}

GenerateInviteCodeResult is sent back to the client after GenerateInviteCodeCommand.

func (GenerateInviteCodeResult) AppendWire added in v0.16.9

func (c GenerateInviteCodeResult) AppendWire(b []byte) []byte

func (GenerateInviteCodeResult) FromProto added in v0.15.0

func (GenerateInviteCodeResult) MarshalWire added in v0.15.0

func (c GenerateInviteCodeResult) MarshalWire() []byte

func (GenerateInviteCodeResult) Name

Name returns the request-prefixed event name.

func (GenerateInviteCodeResult) ProtoDescriptor added in v0.16.4

func (GenerateInviteCodeResult) SizeWire added in v0.16.9

func (c GenerateInviteCodeResult) SizeWire() int

func (GenerateInviteCodeResult) ToProto added in v0.15.0

func (GenerateInviteCodeResult) UnmarshalWire added in v0.15.0

func (c GenerateInviteCodeResult) UnmarshalWire(data []byte) (any, error)

type GetAllPlayersCommand

type GetAllPlayersCommand struct {
	RequestID string `json:"request_id"` // For matching request/response
}

GetAllPlayersCommand fetches all players in the caller's lobby.

func (GetAllPlayersCommand) AppendWire added in v0.16.9

func (c GetAllPlayersCommand) AppendWire(b []byte) []byte

func (GetAllPlayersCommand) FromProto added in v0.14.0

func (GetAllPlayersCommand) MarshalWire added in v0.15.0

func (c GetAllPlayersCommand) MarshalWire() []byte

func (GetAllPlayersCommand) Name

Name returns the command name.

func (GetAllPlayersCommand) ProtoDescriptor added in v0.16.4

func (GetAllPlayersCommand) SizeWire added in v0.16.9

func (c GetAllPlayersCommand) SizeWire() int

func (GetAllPlayersCommand) ToProto added in v0.14.0

func (GetAllPlayersCommand) UnmarshalWire added in v0.15.0

func (c GetAllPlayersCommand) UnmarshalWire(data []byte) (any, error)

type GetAllPlayersResult

type GetAllPlayersResult struct {
	RequestID    string                                               `json:"request_id"`
	IsSuccess    bool                                                 `json:"is_success"`
	Message      string                                               `json:"message"`
	Players      [component.MaxLobbyPlayers]component.PlayerComponent `json:"players,omitempty"`
	PlayersCount int                                                  `json:"players_count"`
}

GetAllPlayersResult is sent back to the client after GetAllPlayersCommand.

func (GetAllPlayersResult) AppendWire added in v0.16.9

func (c GetAllPlayersResult) AppendWire(b []byte) []byte

func (GetAllPlayersResult) FromProto added in v0.15.0

func (GetAllPlayersResult) MarshalWire added in v0.15.0

func (c GetAllPlayersResult) MarshalWire() []byte

func (GetAllPlayersResult) Name

func (r GetAllPlayersResult) Name() string

Name returns the request-prefixed event name.

func (GetAllPlayersResult) ProtoDescriptor added in v0.16.4

func (GetAllPlayersResult) SizeWire added in v0.16.9

func (c GetAllPlayersResult) SizeWire() int

func (GetAllPlayersResult) ToProto added in v0.15.0

func (GetAllPlayersResult) UnmarshalWire added in v0.15.0

func (c GetAllPlayersResult) UnmarshalWire(data []byte) (any, error)

type GetLobbyCommand

type GetLobbyCommand struct {
	RequestID string `json:"request_id"` // For matching request/response
}

GetLobbyCommand fetches the caller's current lobby snapshot. Used by reconnecting clients to restore their full view (teams, session state, assigned GameWorld, etc.) in a single round-trip.

func (GetLobbyCommand) AppendWire added in v0.16.9

func (c GetLobbyCommand) AppendWire(b []byte) []byte

func (GetLobbyCommand) FromProto added in v0.14.0

func (GetLobbyCommand) MarshalWire added in v0.15.0

func (c GetLobbyCommand) MarshalWire() []byte

func (GetLobbyCommand) Name

func (GetLobbyCommand) Name() string

Name returns the command name.

func (GetLobbyCommand) ProtoDescriptor added in v0.16.4

func (c GetLobbyCommand) ProtoDescriptor() protoreflect.MessageDescriptor

func (GetLobbyCommand) SizeWire added in v0.16.9

func (c GetLobbyCommand) SizeWire() int

func (GetLobbyCommand) ToProto added in v0.14.0

func (GetLobbyCommand) UnmarshalWire added in v0.15.0

func (c GetLobbyCommand) UnmarshalWire(data []byte) (any, error)

type GetLobbyResult

type GetLobbyResult struct {
	RequestID string                   `json:"request_id"`
	IsSuccess bool                     `json:"is_success"`
	Message   string                   `json:"message"`
	Lobby     component.LobbyComponent `json:"lobby"`
}

GetLobbyResult is sent back to the client after GetLobbyCommand.

func (GetLobbyResult) AppendWire added in v0.16.9

func (c GetLobbyResult) AppendWire(b []byte) []byte

func (GetLobbyResult) FromProto added in v0.15.0

func (GetLobbyResult) MarshalWire added in v0.15.0

func (c GetLobbyResult) MarshalWire() []byte

func (GetLobbyResult) Name

func (r GetLobbyResult) Name() string

Name returns the request-prefixed event name.

func (GetLobbyResult) ProtoDescriptor added in v0.16.4

func (c GetLobbyResult) ProtoDescriptor() protoreflect.MessageDescriptor

func (GetLobbyResult) SizeWire added in v0.16.9

func (c GetLobbyResult) SizeWire() int

func (GetLobbyResult) ToProto added in v0.15.0

func (c GetLobbyResult) ToProto() *pbsystem.GetLobbyResult

func (GetLobbyResult) UnmarshalWire added in v0.15.0

func (c GetLobbyResult) UnmarshalWire(data []byte) (any, error)

type GetPlayerCommand

type GetPlayerCommand struct {
	RequestID string `json:"request_id"` // For matching request/response
	PlayerID  string `json:"player_id"`  // Target player ID (empty = self)
}

GetPlayerCommand fetches a specific player's component data.

func (GetPlayerCommand) AppendWire added in v0.16.9

func (c GetPlayerCommand) AppendWire(b []byte) []byte

func (GetPlayerCommand) FromProto added in v0.14.0

func (GetPlayerCommand) MarshalWire added in v0.15.0

func (c GetPlayerCommand) MarshalWire() []byte

func (GetPlayerCommand) Name

func (GetPlayerCommand) Name() string

Name returns the command name.

func (GetPlayerCommand) ProtoDescriptor added in v0.16.4

func (c GetPlayerCommand) ProtoDescriptor() protoreflect.MessageDescriptor

func (GetPlayerCommand) SizeWire added in v0.16.9

func (c GetPlayerCommand) SizeWire() int

func (GetPlayerCommand) ToProto added in v0.14.0

func (GetPlayerCommand) UnmarshalWire added in v0.15.0

func (c GetPlayerCommand) UnmarshalWire(data []byte) (any, error)

type GetPlayerResult

type GetPlayerResult struct {
	RequestID string                    `json:"request_id"`
	IsSuccess bool                      `json:"is_success"`
	Message   string                    `json:"message"`
	Player    component.PlayerComponent `json:"player"`
}

GetPlayerResult is sent back to the client after GetPlayerCommand.

func (GetPlayerResult) AppendWire added in v0.16.9

func (c GetPlayerResult) AppendWire(b []byte) []byte

func (GetPlayerResult) FromProto added in v0.15.0

func (GetPlayerResult) MarshalWire added in v0.15.0

func (c GetPlayerResult) MarshalWire() []byte

func (GetPlayerResult) Name

func (r GetPlayerResult) Name() string

Name returns the request-prefixed event name.

func (GetPlayerResult) ProtoDescriptor added in v0.16.4

func (c GetPlayerResult) ProtoDescriptor() protoreflect.MessageDescriptor

func (GetPlayerResult) SizeWire added in v0.16.9

func (c GetPlayerResult) SizeWire() int

func (GetPlayerResult) ToProto added in v0.15.0

func (GetPlayerResult) UnmarshalWire added in v0.15.0

func (c GetPlayerResult) UnmarshalWire(data []byte) (any, error)

type HeartbeatCommand

type HeartbeatCommand struct {
}

HeartbeatCommand is sent periodically by clients to indicate they're still connected. Players who don't send heartbeats within the timeout period are automatically removed.

func (HeartbeatCommand) AppendWire added in v0.16.9

func (c HeartbeatCommand) AppendWire(b []byte) []byte

func (HeartbeatCommand) FromProto added in v0.14.0

func (HeartbeatCommand) MarshalWire added in v0.15.0

func (c HeartbeatCommand) MarshalWire() []byte

func (HeartbeatCommand) Name

func (HeartbeatCommand) Name() string

Name returns the command name.

func (HeartbeatCommand) ProtoDescriptor added in v0.16.4

func (c HeartbeatCommand) ProtoDescriptor() protoreflect.MessageDescriptor

func (HeartbeatCommand) SizeWire added in v0.16.9

func (c HeartbeatCommand) SizeWire() int

func (HeartbeatCommand) ToProto added in v0.14.0

func (HeartbeatCommand) UnmarshalWire added in v0.15.0

func (c HeartbeatCommand) UnmarshalWire(data []byte) (any, error)

type HeartbeatSystem

type HeartbeatSystem struct {
	// contains filtered or unexported fields
}

HeartbeatSystem tracks player liveness each tick using the plugin's runtime.

func NewHeartbeatSystem added in v0.17.0

func NewHeartbeatSystem(runtime *Runtime) *HeartbeatSystem

NewHeartbeatSystem creates a system using the plugin's runtime.

func (*HeartbeatSystem) Run added in v0.17.0

func (s *HeartbeatSystem) Run(w *cardinal.World)

HeartbeatSystem processes heartbeat commands and removes stale players.

type InitSystem

type InitSystem struct {
	// contains filtered or unexported fields
}

InitSystem invalidates derived lobby lookups when the world initializes.

func NewInitSystem added in v0.17.0

func NewInitSystem(runtime *Runtime) *InitSystem

NewInitSystem creates a system using the plugin's runtime.

func (*InitSystem) Run added in v0.17.0

func (s *InitSystem) Run(_ *cardinal.World)

InitSystem invalidates the lookup index. Runs on boot and again inside World.reset().

It does not build the index, because Init runs before restore and restore replaces the world wholesale — an index built here would describe the pre-restore world. The rebuild happens on the first tick instead, which is the earliest point the world is final. See Runtime.rebuildIndex.

type InviteCodeGeneratedEvent

type InviteCodeGeneratedEvent struct {
	LobbyID    string `json:"lobby_id"`
	InviteCode string `json:"invite_code"`
}

InviteCodeGeneratedEvent is emitted when a new invite code is generated.

func (InviteCodeGeneratedEvent) AppendWire added in v0.16.9

func (c InviteCodeGeneratedEvent) AppendWire(b []byte) []byte

func (InviteCodeGeneratedEvent) FromProto added in v0.15.0

func (InviteCodeGeneratedEvent) MarshalWire added in v0.15.0

func (c InviteCodeGeneratedEvent) MarshalWire() []byte

func (InviteCodeGeneratedEvent) Name

Name returns the event name.

func (InviteCodeGeneratedEvent) ProtoDescriptor added in v0.16.4

func (InviteCodeGeneratedEvent) SizeWire added in v0.16.9

func (c InviteCodeGeneratedEvent) SizeWire() int

func (InviteCodeGeneratedEvent) ToProto added in v0.15.0

func (InviteCodeGeneratedEvent) UnmarshalWire added in v0.15.0

func (c InviteCodeGeneratedEvent) UnmarshalWire(data []byte) (any, error)

type JoinLobbyCommand

type JoinLobbyCommand struct {
	RequestID  string `json:"request_id"`        // For matching request/response
	InviteCode string `json:"invite_code"`       // Required: invite code to join
	TeamID     string `json:"team_id,omitempty"` // Optional: team to join by ID (joins first available if empty)
	// PlayerPassthroughData is opaque client JSON for the joining player, relayed to other clients.
	PlayerPassthroughData string `json:"player_passthrough_data,omitempty"`
}

JoinLobbyCommand joins an existing lobby via invite code.

func (JoinLobbyCommand) AppendWire added in v0.16.9

func (c JoinLobbyCommand) AppendWire(b []byte) []byte

func (JoinLobbyCommand) FromProto added in v0.14.0

func (JoinLobbyCommand) MarshalWire added in v0.15.0

func (c JoinLobbyCommand) MarshalWire() []byte

func (JoinLobbyCommand) Name

func (JoinLobbyCommand) Name() string

Name returns the command name.

func (JoinLobbyCommand) ProtoDescriptor added in v0.16.4

func (c JoinLobbyCommand) ProtoDescriptor() protoreflect.MessageDescriptor

func (JoinLobbyCommand) SizeWire added in v0.16.9

func (c JoinLobbyCommand) SizeWire() int

func (JoinLobbyCommand) ToProto added in v0.14.0

func (JoinLobbyCommand) UnmarshalWire added in v0.15.0

func (c JoinLobbyCommand) UnmarshalWire(data []byte) (any, error)

type JoinLobbyResult

type JoinLobbyResult struct {
	RequestID        string                                               `json:"request_id"`
	IsSuccess        bool                                                 `json:"is_success"`
	Message          string                                               `json:"message"`
	Lobby            component.LobbyComponent                             `json:"lobby"`
	PlayersList      [component.MaxLobbyPlayers]component.PlayerComponent `json:"players_list,omitempty"`
	PlayersListCount int                                                  `json:"players_list_count"`
}

JoinLobbyResult is sent back to the client after JoinLobbyCommand.

func (JoinLobbyResult) AppendWire added in v0.16.9

func (c JoinLobbyResult) AppendWire(b []byte) []byte

func (JoinLobbyResult) FromProto added in v0.15.0

func (JoinLobbyResult) MarshalWire added in v0.15.0

func (c JoinLobbyResult) MarshalWire() []byte

func (JoinLobbyResult) Name

func (r JoinLobbyResult) Name() string

Name returns the request-prefixed event name.

func (JoinLobbyResult) ProtoDescriptor added in v0.16.4

func (c JoinLobbyResult) ProtoDescriptor() protoreflect.MessageDescriptor

func (JoinLobbyResult) SizeWire added in v0.16.9

func (c JoinLobbyResult) SizeWire() int

func (JoinLobbyResult) ToProto added in v0.15.0

func (JoinLobbyResult) UnmarshalWire added in v0.15.0

func (c JoinLobbyResult) UnmarshalWire(data []byte) (any, error)

type JoinTeamCommand

type JoinTeamCommand struct {
	RequestID string `json:"request_id"` // For matching request/response
	TeamID    string `json:"team_id"`
}

JoinTeamCommand moves a player to a different team.

func (JoinTeamCommand) AppendWire added in v0.16.9

func (c JoinTeamCommand) AppendWire(b []byte) []byte

func (JoinTeamCommand) FromProto added in v0.14.0

func (JoinTeamCommand) MarshalWire added in v0.15.0

func (c JoinTeamCommand) MarshalWire() []byte

func (JoinTeamCommand) Name

func (JoinTeamCommand) Name() string

Name returns the command name.

func (JoinTeamCommand) ProtoDescriptor added in v0.16.4

func (c JoinTeamCommand) ProtoDescriptor() protoreflect.MessageDescriptor

func (JoinTeamCommand) SizeWire added in v0.16.9

func (c JoinTeamCommand) SizeWire() int

func (JoinTeamCommand) ToProto added in v0.14.0

func (JoinTeamCommand) UnmarshalWire added in v0.15.0

func (c JoinTeamCommand) UnmarshalWire(data []byte) (any, error)

type JoinTeamResult

type JoinTeamResult struct {
	RequestID string                    `json:"request_id"`
	IsSuccess bool                      `json:"is_success"`
	Message   string                    `json:"message"`
	Player    component.PlayerComponent `json:"player"`
}

JoinTeamResult is sent back to the client after JoinTeamCommand.

func (JoinTeamResult) AppendWire added in v0.16.9

func (c JoinTeamResult) AppendWire(b []byte) []byte

func (JoinTeamResult) FromProto added in v0.15.0

func (JoinTeamResult) MarshalWire added in v0.15.0

func (c JoinTeamResult) MarshalWire() []byte

func (JoinTeamResult) Name

func (r JoinTeamResult) Name() string

Name returns the request-prefixed event name.

func (JoinTeamResult) ProtoDescriptor added in v0.16.4

func (c JoinTeamResult) ProtoDescriptor() protoreflect.MessageDescriptor

func (JoinTeamResult) SizeWire added in v0.16.9

func (c JoinTeamResult) SizeWire() int

func (JoinTeamResult) ToProto added in v0.15.0

func (c JoinTeamResult) ToProto() *pbsystem.JoinTeamResult

func (JoinTeamResult) UnmarshalWire added in v0.15.0

func (c JoinTeamResult) UnmarshalWire(data []byte) (any, error)

type KickPlayerCommand

type KickPlayerCommand struct {
	RequestID      string `json:"request_id"` // For matching request/response
	TargetPlayerID string `json:"target_player_id"`
}

KickPlayerCommand kicks a player from the lobby (leader only).

func (KickPlayerCommand) AppendWire added in v0.16.9

func (c KickPlayerCommand) AppendWire(b []byte) []byte

func (KickPlayerCommand) FromProto added in v0.14.0

func (KickPlayerCommand) MarshalWire added in v0.15.0

func (c KickPlayerCommand) MarshalWire() []byte

func (KickPlayerCommand) Name

func (KickPlayerCommand) Name() string

Name returns the command name.

func (KickPlayerCommand) ProtoDescriptor added in v0.16.4

func (c KickPlayerCommand) ProtoDescriptor() protoreflect.MessageDescriptor

func (KickPlayerCommand) SizeWire added in v0.16.9

func (c KickPlayerCommand) SizeWire() int

func (KickPlayerCommand) ToProto added in v0.14.0

func (KickPlayerCommand) UnmarshalWire added in v0.15.0

func (c KickPlayerCommand) UnmarshalWire(data []byte) (any, error)

type KickPlayerResult

type KickPlayerResult struct {
	RequestID string `json:"request_id"`
	IsSuccess bool   `json:"is_success"`
	Message   string `json:"message"`
}

KickPlayerResult is sent back to the client after KickPlayerCommand.

func (KickPlayerResult) AppendWire added in v0.16.9

func (c KickPlayerResult) AppendWire(b []byte) []byte

func (KickPlayerResult) FromProto added in v0.15.0

func (KickPlayerResult) MarshalWire added in v0.15.0

func (c KickPlayerResult) MarshalWire() []byte

func (KickPlayerResult) Name

func (r KickPlayerResult) Name() string

Name returns the request-prefixed event name.

func (KickPlayerResult) ProtoDescriptor added in v0.16.4

func (c KickPlayerResult) ProtoDescriptor() protoreflect.MessageDescriptor

func (KickPlayerResult) SizeWire added in v0.16.9

func (c KickPlayerResult) SizeWire() int

func (KickPlayerResult) ToProto added in v0.15.0

func (KickPlayerResult) UnmarshalWire added in v0.15.0

func (c KickPlayerResult) UnmarshalWire(data []byte) (any, error)

type LeaderChangedEvent

type LeaderChangedEvent struct {
	LobbyID     string `json:"lobby_id"`
	OldLeaderID string `json:"old_leader_id"`
	NewLeaderID string `json:"new_leader_id"`
}

LeaderChangedEvent is emitted when leadership is transferred.

func (LeaderChangedEvent) AppendWire added in v0.16.9

func (c LeaderChangedEvent) AppendWire(b []byte) []byte

func (LeaderChangedEvent) FromProto added in v0.15.0

func (LeaderChangedEvent) MarshalWire added in v0.15.0

func (c LeaderChangedEvent) MarshalWire() []byte

func (LeaderChangedEvent) Name

func (LeaderChangedEvent) Name() string

Name returns the event name.

func (LeaderChangedEvent) ProtoDescriptor added in v0.16.4

func (LeaderChangedEvent) SizeWire added in v0.16.9

func (c LeaderChangedEvent) SizeWire() int

func (LeaderChangedEvent) ToProto added in v0.15.0

func (LeaderChangedEvent) UnmarshalWire added in v0.15.0

func (c LeaderChangedEvent) UnmarshalWire(data []byte) (any, error)

type LeaveLobbyCommand

type LeaveLobbyCommand struct {
	RequestID string `json:"request_id"` // For matching request/response
}

LeaveLobbyCommand leaves the current lobby.

func (LeaveLobbyCommand) AppendWire added in v0.16.9

func (c LeaveLobbyCommand) AppendWire(b []byte) []byte

func (LeaveLobbyCommand) FromProto added in v0.14.0

func (LeaveLobbyCommand) MarshalWire added in v0.15.0

func (c LeaveLobbyCommand) MarshalWire() []byte

func (LeaveLobbyCommand) Name

func (LeaveLobbyCommand) Name() string

Name returns the command name.

func (LeaveLobbyCommand) ProtoDescriptor added in v0.16.4

func (c LeaveLobbyCommand) ProtoDescriptor() protoreflect.MessageDescriptor

func (LeaveLobbyCommand) SizeWire added in v0.16.9

func (c LeaveLobbyCommand) SizeWire() int

func (LeaveLobbyCommand) ToProto added in v0.14.0

func (LeaveLobbyCommand) UnmarshalWire added in v0.15.0

func (c LeaveLobbyCommand) UnmarshalWire(data []byte) (any, error)

type LeaveLobbyResult

type LeaveLobbyResult struct {
	RequestID string `json:"request_id"`
	IsSuccess bool   `json:"is_success"`
	Message   string `json:"message"`
}

LeaveLobbyResult is sent back to the client after LeaveLobbyCommand.

func (LeaveLobbyResult) AppendWire added in v0.16.9

func (c LeaveLobbyResult) AppendWire(b []byte) []byte

func (LeaveLobbyResult) FromProto added in v0.15.0

func (LeaveLobbyResult) MarshalWire added in v0.15.0

func (c LeaveLobbyResult) MarshalWire() []byte

func (LeaveLobbyResult) Name

func (r LeaveLobbyResult) Name() string

Name returns the request-prefixed event name.

func (LeaveLobbyResult) ProtoDescriptor added in v0.16.4

func (c LeaveLobbyResult) ProtoDescriptor() protoreflect.MessageDescriptor

func (LeaveLobbyResult) SizeWire added in v0.16.9

func (c LeaveLobbyResult) SizeWire() int

func (LeaveLobbyResult) ToProto added in v0.15.0

func (LeaveLobbyResult) UnmarshalWire added in v0.15.0

func (c LeaveLobbyResult) UnmarshalWire(data []byte) (any, error)

type LobbyCreatedEvent

type LobbyCreatedEvent struct {
	LobbyID    string `json:"lobby_id"`
	LeaderID   string `json:"leader_id"`
	InviteCode string `json:"invite_code"`
}

LobbyCreatedEvent is emitted when a lobby is created.

func (LobbyCreatedEvent) AppendWire added in v0.16.9

func (c LobbyCreatedEvent) AppendWire(b []byte) []byte

func (LobbyCreatedEvent) FromProto added in v0.15.0

func (LobbyCreatedEvent) MarshalWire added in v0.15.0

func (c LobbyCreatedEvent) MarshalWire() []byte

func (LobbyCreatedEvent) Name

func (LobbyCreatedEvent) Name() string

Name returns the event name.

func (LobbyCreatedEvent) ProtoDescriptor added in v0.16.4

func (c LobbyCreatedEvent) ProtoDescriptor() protoreflect.MessageDescriptor

func (LobbyCreatedEvent) SizeWire added in v0.16.9

func (c LobbyCreatedEvent) SizeWire() int

func (LobbyCreatedEvent) ToProto added in v0.15.0

func (LobbyCreatedEvent) UnmarshalWire added in v0.15.0

func (c LobbyCreatedEvent) UnmarshalWire(data []byte) (any, error)

type LobbyDeletedEvent

type LobbyDeletedEvent struct {
	LobbyID string `json:"lobby_id"`
}

LobbyDeletedEvent is emitted when a lobby is deleted.

func (LobbyDeletedEvent) AppendWire added in v0.16.9

func (c LobbyDeletedEvent) AppendWire(b []byte) []byte

func (LobbyDeletedEvent) FromProto added in v0.15.0

func (LobbyDeletedEvent) MarshalWire added in v0.15.0

func (c LobbyDeletedEvent) MarshalWire() []byte

func (LobbyDeletedEvent) Name

func (LobbyDeletedEvent) Name() string

Name returns the event name.

func (LobbyDeletedEvent) ProtoDescriptor added in v0.16.4

func (c LobbyDeletedEvent) ProtoDescriptor() protoreflect.MessageDescriptor

func (LobbyDeletedEvent) SizeWire added in v0.16.9

func (c LobbyDeletedEvent) SizeWire() int

func (LobbyDeletedEvent) ToProto added in v0.15.0

func (LobbyDeletedEvent) UnmarshalWire added in v0.15.0

func (c LobbyDeletedEvent) UnmarshalWire(data []byte) (any, error)

type LobbyProvider

type LobbyProvider interface {
	// GenerateInviteCode generates a custom invite code for the lobby.
	//
	// seed is the only source of variation between calls for the same lobby, and
	// the caller must vary it per attempt: generateInviteCodeWithRetry retries on
	// collision and depends on each attempt yielding a different code.
	// Implementations should be pure in (lobby, seed).
	GenerateInviteCode(lobby *component.LobbyComponent, seed int64) string

	// ValidateJoin runs game-specific guards on a JoinLobbyCommand after
	// the generic guards (already-in-lobby, invalid code, in-session)
	// pass and before team selection. Return ok=false with a non-empty
	// reason to reject the join; the plugin emits a JoinLobbyResult
	// failure carrying that reason. Return ok=true to allow.
	ValidateJoin(lobby *component.LobbyComponent, cmd JoinLobbyCommand) (ok bool, reason string)
}

LobbyProvider defines customizable behavior for the lobby system.

type LobbySystem

type LobbySystem struct {
	// contains filtered or unexported fields
}

LobbySystem processes lobby commands each tick using the plugin's runtime. The commands it reads and the events it emits are registered by the plugin; see lobby.Plugin.Register.

func NewLobbySystem added in v0.17.0

func NewLobbySystem(runtime *Runtime) *LobbySystem

NewLobbySystem creates a system using the plugin's runtime.

func (*LobbySystem) Run added in v0.17.0

func (s *LobbySystem) Run(w *cardinal.World)

LobbySystem processes lobby commands.

type NotifySessionEndCommand

type NotifySessionEndCommand struct {
	LobbyID string `json:"lobby_id"`
}

NotifySessionEndCommand is sent from game shard to lobby when session ends.

func (NotifySessionEndCommand) AppendWire added in v0.16.9

func (c NotifySessionEndCommand) AppendWire(b []byte) []byte

func (NotifySessionEndCommand) FromProto added in v0.14.0

func (NotifySessionEndCommand) MarshalWire added in v0.15.0

func (c NotifySessionEndCommand) MarshalWire() []byte

func (NotifySessionEndCommand) Name

Name returns the command name.

func (NotifySessionEndCommand) ProtoDescriptor added in v0.16.4

func (NotifySessionEndCommand) SizeWire added in v0.16.9

func (c NotifySessionEndCommand) SizeWire() int

func (NotifySessionEndCommand) ToProto added in v0.14.0

func (NotifySessionEndCommand) UnmarshalWire added in v0.15.0

func (c NotifySessionEndCommand) UnmarshalWire(data []byte) (any, error)

type NotifySessionStartCommand

type NotifySessionStartCommand struct {
	LobbyID    string                 `json:"lobby_id"`
	LobbyWorld component.ShardAddress `json:"lobby_world"`
}

NotifySessionStartCommand is sent to game shard when a session starts. NotifySessionStartCommand tells the game shard a session is starting. It's a wire DTO: it carries only what the receiver needs (the lobby id and this lobby shard's address to reply to), not the live LobbyComponent/PlayerComponent — those are domain types and never go on the wire.

func (NotifySessionStartCommand) AppendWire added in v0.16.9

func (c NotifySessionStartCommand) AppendWire(b []byte) []byte

func (NotifySessionStartCommand) FromProto added in v0.14.0

func (NotifySessionStartCommand) MarshalWire added in v0.15.0

func (c NotifySessionStartCommand) MarshalWire() []byte

func (NotifySessionStartCommand) Name

Name returns the command name.

func (NotifySessionStartCommand) ProtoDescriptor added in v0.16.4

func (NotifySessionStartCommand) SizeWire added in v0.16.9

func (c NotifySessionStartCommand) SizeWire() int

func (NotifySessionStartCommand) ToProto added in v0.14.0

func (NotifySessionStartCommand) UnmarshalWire added in v0.15.0

func (c NotifySessionStartCommand) UnmarshalWire(data []byte) (any, error)

type PlayerChangedTeamEvent

type PlayerChangedTeamEvent struct {
	LobbyID   string                    `json:"lobby_id"`
	OldTeamID string                    `json:"old_team_id"`
	NewTeamID string                    `json:"new_team_id"`
	Player    component.PlayerComponent `json:"player"`
}

PlayerChangedTeamEvent is emitted when a player changes team.

func (PlayerChangedTeamEvent) AppendWire added in v0.16.9

func (c PlayerChangedTeamEvent) AppendWire(b []byte) []byte

func (PlayerChangedTeamEvent) FromProto added in v0.15.0

func (PlayerChangedTeamEvent) MarshalWire added in v0.15.0

func (c PlayerChangedTeamEvent) MarshalWire() []byte

func (PlayerChangedTeamEvent) Name

Name returns the event name.

func (PlayerChangedTeamEvent) ProtoDescriptor added in v0.16.4

func (PlayerChangedTeamEvent) SizeWire added in v0.16.9

func (c PlayerChangedTeamEvent) SizeWire() int

func (PlayerChangedTeamEvent) ToProto added in v0.15.0

func (PlayerChangedTeamEvent) UnmarshalWire added in v0.15.0

func (c PlayerChangedTeamEvent) UnmarshalWire(data []byte) (any, error)

type PlayerJoinedEvent

type PlayerJoinedEvent struct {
	LobbyID string                    `json:"lobby_id"`
	TeamID  string                    `json:"team_id"`
	Player  component.PlayerComponent `json:"player"`
}

PlayerJoinedEvent is emitted when a player joins a lobby.

func (PlayerJoinedEvent) AppendWire added in v0.16.9

func (c PlayerJoinedEvent) AppendWire(b []byte) []byte

func (PlayerJoinedEvent) FromProto added in v0.15.0

func (PlayerJoinedEvent) MarshalWire added in v0.15.0

func (c PlayerJoinedEvent) MarshalWire() []byte

func (PlayerJoinedEvent) Name

func (PlayerJoinedEvent) Name() string

Name returns the event name.

func (PlayerJoinedEvent) ProtoDescriptor added in v0.16.4

func (c PlayerJoinedEvent) ProtoDescriptor() protoreflect.MessageDescriptor

func (PlayerJoinedEvent) SizeWire added in v0.16.9

func (c PlayerJoinedEvent) SizeWire() int

func (PlayerJoinedEvent) ToProto added in v0.15.0

func (PlayerJoinedEvent) UnmarshalWire added in v0.15.0

func (c PlayerJoinedEvent) UnmarshalWire(data []byte) (any, error)

type PlayerKickedEvent

type PlayerKickedEvent struct {
	LobbyID  string `json:"lobby_id"`
	PlayerID string `json:"player_id"`
	KickerID string `json:"kicker_id"`
}

PlayerKickedEvent is emitted when a player is kicked.

func (PlayerKickedEvent) AppendWire added in v0.16.9

func (c PlayerKickedEvent) AppendWire(b []byte) []byte

func (PlayerKickedEvent) FromProto added in v0.15.0

func (PlayerKickedEvent) MarshalWire added in v0.15.0

func (c PlayerKickedEvent) MarshalWire() []byte

func (PlayerKickedEvent) Name

func (PlayerKickedEvent) Name() string

Name returns the event name.

func (PlayerKickedEvent) ProtoDescriptor added in v0.16.4

func (c PlayerKickedEvent) ProtoDescriptor() protoreflect.MessageDescriptor

func (PlayerKickedEvent) SizeWire added in v0.16.9

func (c PlayerKickedEvent) SizeWire() int

func (PlayerKickedEvent) ToProto added in v0.15.0

func (PlayerKickedEvent) UnmarshalWire added in v0.15.0

func (c PlayerKickedEvent) UnmarshalWire(data []byte) (any, error)

type PlayerLeftEvent

type PlayerLeftEvent struct {
	LobbyID  string `json:"lobby_id"`
	PlayerID string `json:"player_id"`
}

PlayerLeftEvent is emitted when a player leaves a lobby.

func (PlayerLeftEvent) AppendWire added in v0.16.9

func (c PlayerLeftEvent) AppendWire(b []byte) []byte

func (PlayerLeftEvent) FromProto added in v0.15.0

func (PlayerLeftEvent) MarshalWire added in v0.15.0

func (c PlayerLeftEvent) MarshalWire() []byte

func (PlayerLeftEvent) Name

func (PlayerLeftEvent) Name() string

Name returns the event name.

func (PlayerLeftEvent) ProtoDescriptor added in v0.16.4

func (c PlayerLeftEvent) ProtoDescriptor() protoreflect.MessageDescriptor

func (PlayerLeftEvent) SizeWire added in v0.16.9

func (c PlayerLeftEvent) SizeWire() int

func (PlayerLeftEvent) ToProto added in v0.15.0

func (PlayerLeftEvent) UnmarshalWire added in v0.15.0

func (c PlayerLeftEvent) UnmarshalWire(data []byte) (any, error)

type PlayerPassthroughUpdatedEvent

type PlayerPassthroughUpdatedEvent struct {
	LobbyID string                    `json:"lobby_id"`
	Player  component.PlayerComponent `json:"player"`
}

PlayerPassthroughUpdatedEvent is emitted when a player's passthrough data is updated.

func (PlayerPassthroughUpdatedEvent) AppendWire added in v0.16.9

func (c PlayerPassthroughUpdatedEvent) AppendWire(b []byte) []byte

func (PlayerPassthroughUpdatedEvent) FromProto added in v0.15.0

func (PlayerPassthroughUpdatedEvent) MarshalWire added in v0.15.0

func (c PlayerPassthroughUpdatedEvent) MarshalWire() []byte

func (PlayerPassthroughUpdatedEvent) Name

Name returns the event name.

func (PlayerPassthroughUpdatedEvent) ProtoDescriptor added in v0.16.4

func (PlayerPassthroughUpdatedEvent) SizeWire added in v0.16.9

func (c PlayerPassthroughUpdatedEvent) SizeWire() int

func (PlayerPassthroughUpdatedEvent) ToProto added in v0.15.0

func (PlayerPassthroughUpdatedEvent) UnmarshalWire added in v0.15.0

func (c PlayerPassthroughUpdatedEvent) UnmarshalWire(data []byte) (any, error)

type PlayerReadyEvent

type PlayerReadyEvent struct {
	LobbyID string                    `json:"lobby_id"`
	Player  component.PlayerComponent `json:"player"`
}

PlayerReadyEvent is emitted when a player changes ready status.

func (PlayerReadyEvent) AppendWire added in v0.16.9

func (c PlayerReadyEvent) AppendWire(b []byte) []byte

func (PlayerReadyEvent) FromProto added in v0.15.0

func (PlayerReadyEvent) MarshalWire added in v0.15.0

func (c PlayerReadyEvent) MarshalWire() []byte

func (PlayerReadyEvent) Name

func (PlayerReadyEvent) Name() string

Name returns the event name.

func (PlayerReadyEvent) ProtoDescriptor added in v0.16.4

func (c PlayerReadyEvent) ProtoDescriptor() protoreflect.MessageDescriptor

func (PlayerReadyEvent) SizeWire added in v0.16.9

func (c PlayerReadyEvent) SizeWire() int

func (PlayerReadyEvent) ToProto added in v0.15.0

func (PlayerReadyEvent) UnmarshalWire added in v0.15.0

func (c PlayerReadyEvent) UnmarshalWire(data []byte) (any, error)

type PlayerTimedOutEvent

type PlayerTimedOutEvent struct {
	LobbyID  string `json:"lobby_id"`
	PlayerID string `json:"player_id"`
}

PlayerTimedOutEvent is emitted when a player is removed due to missed heartbeats.

func (PlayerTimedOutEvent) AppendWire added in v0.16.9

func (c PlayerTimedOutEvent) AppendWire(b []byte) []byte

func (PlayerTimedOutEvent) FromProto added in v0.15.0

func (PlayerTimedOutEvent) MarshalWire added in v0.15.0

func (c PlayerTimedOutEvent) MarshalWire() []byte

func (PlayerTimedOutEvent) Name

func (PlayerTimedOutEvent) Name() string

Name returns the event name.

func (PlayerTimedOutEvent) ProtoDescriptor added in v0.16.4

func (PlayerTimedOutEvent) SizeWire added in v0.16.9

func (c PlayerTimedOutEvent) SizeWire() int

func (PlayerTimedOutEvent) ToProto added in v0.15.0

func (PlayerTimedOutEvent) UnmarshalWire added in v0.15.0

func (c PlayerTimedOutEvent) UnmarshalWire(data []byte) (any, error)

type Runtime added in v0.17.0

type Runtime struct {
	// contains filtered or unexported fields
}

Runtime owns one world's deployment configuration and derived lobby lookups. Configuration stays outside ECS so restored snapshots use the running deployment's settings. Each plugin instance creates its own runtime and shares it only among its systems.

func NewRuntime added in v0.17.0

func NewRuntime(config Config, provider LobbyProvider, presets map[string][]component.TeamConfig) *Runtime

NewRuntime validates and copies the server-owned configuration. Invalid presets panic at registration rather than rejecting every lobby creation at runtime.

type SessionAwaitingAllocationEvent

type SessionAwaitingAllocationEvent struct {
	LobbyID string `json:"lobby_id"`
}

SessionAwaitingAllocationEvent is emitted when a session is awaiting shard assignment. External orchestrators listen for this event and respond with an AssignShardCommand to complete the session start.

func (SessionAwaitingAllocationEvent) AppendWire added in v0.16.9

func (c SessionAwaitingAllocationEvent) AppendWire(b []byte) []byte

func (SessionAwaitingAllocationEvent) FromProto added in v0.15.0

func (SessionAwaitingAllocationEvent) MarshalWire added in v0.15.0

func (c SessionAwaitingAllocationEvent) MarshalWire() []byte

func (SessionAwaitingAllocationEvent) Name

Name returns the event name.

func (SessionAwaitingAllocationEvent) ProtoDescriptor added in v0.16.4

func (SessionAwaitingAllocationEvent) SizeWire added in v0.16.9

func (c SessionAwaitingAllocationEvent) SizeWire() int

func (SessionAwaitingAllocationEvent) ToProto added in v0.15.0

func (SessionAwaitingAllocationEvent) UnmarshalWire added in v0.15.0

func (c SessionAwaitingAllocationEvent) UnmarshalWire(data []byte) (any, error)

type SessionEndedEvent

type SessionEndedEvent struct {
	LobbyID string `json:"lobby_id"`
}

SessionEndedEvent is emitted when a session ends.

func (SessionEndedEvent) AppendWire added in v0.16.9

func (c SessionEndedEvent) AppendWire(b []byte) []byte

func (SessionEndedEvent) FromProto added in v0.15.0

func (SessionEndedEvent) MarshalWire added in v0.15.0

func (c SessionEndedEvent) MarshalWire() []byte

func (SessionEndedEvent) Name

func (SessionEndedEvent) Name() string

Name returns the event name.

func (SessionEndedEvent) ProtoDescriptor added in v0.16.4

func (c SessionEndedEvent) ProtoDescriptor() protoreflect.MessageDescriptor

func (SessionEndedEvent) SizeWire added in v0.16.9

func (c SessionEndedEvent) SizeWire() int

func (SessionEndedEvent) ToProto added in v0.15.0

func (SessionEndedEvent) UnmarshalWire added in v0.15.0

func (c SessionEndedEvent) UnmarshalWire(data []byte) (any, error)

type SessionPassthroughUpdatedEvent

type SessionPassthroughUpdatedEvent struct {
	LobbyID         string `json:"lobby_id"`
	PassthroughData string `json:"passthrough_data"`
}

SessionPassthroughUpdatedEvent is emitted when session passthrough data is updated.

func (SessionPassthroughUpdatedEvent) AppendWire added in v0.16.9

func (c SessionPassthroughUpdatedEvent) AppendWire(b []byte) []byte

func (SessionPassthroughUpdatedEvent) FromProto added in v0.15.0

func (SessionPassthroughUpdatedEvent) MarshalWire added in v0.15.0

func (c SessionPassthroughUpdatedEvent) MarshalWire() []byte

func (SessionPassthroughUpdatedEvent) Name

Name returns the event name.

func (SessionPassthroughUpdatedEvent) ProtoDescriptor added in v0.16.4

func (SessionPassthroughUpdatedEvent) SizeWire added in v0.16.9

func (c SessionPassthroughUpdatedEvent) SizeWire() int

func (SessionPassthroughUpdatedEvent) ToProto added in v0.15.0

func (SessionPassthroughUpdatedEvent) UnmarshalWire added in v0.15.0

func (c SessionPassthroughUpdatedEvent) UnmarshalWire(data []byte) (any, error)

type SessionStartedEvent

type SessionStartedEvent struct {
	LobbyID   string                 `json:"lobby_id"`
	GameWorld component.ShardAddress `json:"game_world"`
}

SessionStartedEvent is emitted when a session starts. Carries the assigned game shard address so every player in the lobby (not just the session starter) learns which gameplay shard to connect to without a follow-up query.

func (SessionStartedEvent) AppendWire added in v0.16.9

func (c SessionStartedEvent) AppendWire(b []byte) []byte

func (SessionStartedEvent) FromProto added in v0.15.0

func (SessionStartedEvent) MarshalWire added in v0.15.0

func (c SessionStartedEvent) MarshalWire() []byte

func (SessionStartedEvent) Name

func (SessionStartedEvent) Name() string

Name returns the event name.

func (SessionStartedEvent) ProtoDescriptor added in v0.16.4

func (SessionStartedEvent) SizeWire added in v0.16.9

func (c SessionStartedEvent) SizeWire() int

func (SessionStartedEvent) ToProto added in v0.15.0

func (SessionStartedEvent) UnmarshalWire added in v0.15.0

func (c SessionStartedEvent) UnmarshalWire(data []byte) (any, error)

type SetReadyCommand

type SetReadyCommand struct {
	RequestID string `json:"request_id"` // For matching request/response
	IsReady   bool   `json:"is_ready"`
}

SetReadyCommand sets the player's ready status.

func (SetReadyCommand) AppendWire added in v0.16.9

func (c SetReadyCommand) AppendWire(b []byte) []byte

func (SetReadyCommand) FromProto added in v0.14.0

func (SetReadyCommand) MarshalWire added in v0.15.0

func (c SetReadyCommand) MarshalWire() []byte

func (SetReadyCommand) Name

func (SetReadyCommand) Name() string

Name returns the command name.

func (SetReadyCommand) ProtoDescriptor added in v0.16.4

func (c SetReadyCommand) ProtoDescriptor() protoreflect.MessageDescriptor

func (SetReadyCommand) SizeWire added in v0.16.9

func (c SetReadyCommand) SizeWire() int

func (SetReadyCommand) ToProto added in v0.14.0

func (SetReadyCommand) UnmarshalWire added in v0.15.0

func (c SetReadyCommand) UnmarshalWire(data []byte) (any, error)

type SetReadyResult

type SetReadyResult struct {
	RequestID string                    `json:"request_id"`
	IsSuccess bool                      `json:"is_success"`
	Message   string                    `json:"message"`
	Player    component.PlayerComponent `json:"player"`
}

SetReadyResult is sent back to the client after SetReadyCommand.

func (SetReadyResult) AppendWire added in v0.16.9

func (c SetReadyResult) AppendWire(b []byte) []byte

func (SetReadyResult) FromProto added in v0.15.0

func (SetReadyResult) MarshalWire added in v0.15.0

func (c SetReadyResult) MarshalWire() []byte

func (SetReadyResult) Name

func (r SetReadyResult) Name() string

Name returns the request-prefixed event name.

func (SetReadyResult) ProtoDescriptor added in v0.16.4

func (c SetReadyResult) ProtoDescriptor() protoreflect.MessageDescriptor

func (SetReadyResult) SizeWire added in v0.16.9

func (c SetReadyResult) SizeWire() int

func (SetReadyResult) ToProto added in v0.15.0

func (c SetReadyResult) ToProto() *pbsystem.SetReadyResult

func (SetReadyResult) UnmarshalWire added in v0.15.0

func (c SetReadyResult) UnmarshalWire(data []byte) (any, error)

type StartSessionCommand

type StartSessionCommand struct {
	RequestID string `json:"request_id"` // For matching request/response
}

StartSessionCommand starts the session (leader only). The corresponding StartSessionResult is emitted asynchronously, typically several ticks after this command is accepted, once an orchestrator responds with AssignShardCommand. Clients must not set short timeouts on StartSessionResult.

func (StartSessionCommand) AppendWire added in v0.16.9

func (c StartSessionCommand) AppendWire(b []byte) []byte

func (StartSessionCommand) FromProto added in v0.14.0

func (StartSessionCommand) MarshalWire added in v0.15.0

func (c StartSessionCommand) MarshalWire() []byte

func (StartSessionCommand) Name

func (StartSessionCommand) Name() string

Name returns the command name.

func (StartSessionCommand) ProtoDescriptor added in v0.16.4

func (StartSessionCommand) SizeWire added in v0.16.9

func (c StartSessionCommand) SizeWire() int

func (StartSessionCommand) ToProto added in v0.14.0

func (StartSessionCommand) UnmarshalWire added in v0.15.0

func (c StartSessionCommand) UnmarshalWire(data []byte) (any, error)

type StartSessionPayload

type StartSessionPayload = NotifySessionStartCommand

StartSessionPayload is an alias for NotifySessionStartCommand for documentation clarity.

type StartSessionResult

type StartSessionResult struct {
	RequestID string                 `json:"request_id"`
	IsSuccess bool                   `json:"is_success"`
	Message   string                 `json:"message"`
	GameWorld component.ShardAddress `json:"game_world"`
}

StartSessionResult is sent back to the client after StartSessionCommand. Emitted asynchronously — may arrive several ticks after the command, once the orchestrator assigns a game shard via AssignShardCommand. On success, GameWorld holds the assigned shard address so the client can connect without an extra query. Zero-valued on failure.

func (StartSessionResult) AppendWire added in v0.16.9

func (c StartSessionResult) AppendWire(b []byte) []byte

func (StartSessionResult) FromProto added in v0.15.0

func (StartSessionResult) MarshalWire added in v0.15.0

func (c StartSessionResult) MarshalWire() []byte

func (StartSessionResult) Name

func (r StartSessionResult) Name() string

Name returns the request-prefixed event name.

func (StartSessionResult) ProtoDescriptor added in v0.16.4

func (StartSessionResult) SizeWire added in v0.16.9

func (c StartSessionResult) SizeWire() int

func (StartSessionResult) ToProto added in v0.15.0

func (StartSessionResult) UnmarshalWire added in v0.15.0

func (c StartSessionResult) UnmarshalWire(data []byte) (any, error)

type TeamConfig

type TeamConfig = component.TeamConfig

TeamConfig is an alias for component.TeamConfig to preserve the existing external type path (lobby.TeamConfig).

type TransferLeaderCommand

type TransferLeaderCommand struct {
	RequestID      string `json:"request_id"` // For matching request/response
	TargetPlayerID string `json:"target_player_id"`
}

TransferLeaderCommand transfers leadership to another player.

func (TransferLeaderCommand) AppendWire added in v0.16.9

func (c TransferLeaderCommand) AppendWire(b []byte) []byte

func (TransferLeaderCommand) FromProto added in v0.14.0

func (TransferLeaderCommand) MarshalWire added in v0.15.0

func (c TransferLeaderCommand) MarshalWire() []byte

func (TransferLeaderCommand) Name

Name returns the command name.

func (TransferLeaderCommand) ProtoDescriptor added in v0.16.4

func (TransferLeaderCommand) SizeWire added in v0.16.9

func (c TransferLeaderCommand) SizeWire() int

func (TransferLeaderCommand) ToProto added in v0.14.0

func (TransferLeaderCommand) UnmarshalWire added in v0.15.0

func (c TransferLeaderCommand) UnmarshalWire(data []byte) (any, error)

type TransferLeaderResult

type TransferLeaderResult struct {
	RequestID string `json:"request_id"`
	IsSuccess bool   `json:"is_success"`
	Message   string `json:"message"`
}

TransferLeaderResult is sent back to the client after TransferLeaderCommand.

func (TransferLeaderResult) AppendWire added in v0.16.9

func (c TransferLeaderResult) AppendWire(b []byte) []byte

func (TransferLeaderResult) FromProto added in v0.15.0

func (TransferLeaderResult) MarshalWire added in v0.15.0

func (c TransferLeaderResult) MarshalWire() []byte

func (TransferLeaderResult) Name

func (r TransferLeaderResult) Name() string

Name returns the request-prefixed event name.

func (TransferLeaderResult) ProtoDescriptor added in v0.16.4

func (TransferLeaderResult) SizeWire added in v0.16.9

func (c TransferLeaderResult) SizeWire() int

func (TransferLeaderResult) ToProto added in v0.15.0

func (TransferLeaderResult) UnmarshalWire added in v0.15.0

func (c TransferLeaderResult) UnmarshalWire(data []byte) (any, error)

type UpdatePlayerPassthroughCommand

type UpdatePlayerPassthroughCommand struct {
	RequestID       string `json:"request_id"` // For matching request/response
	PassthroughData string `json:"passthrough_data"`
}

UpdatePlayerPassthroughCommand updates the player's own passthrough data.

func (UpdatePlayerPassthroughCommand) AppendWire added in v0.16.9

func (c UpdatePlayerPassthroughCommand) AppendWire(b []byte) []byte

func (UpdatePlayerPassthroughCommand) FromProto added in v0.14.0

func (UpdatePlayerPassthroughCommand) MarshalWire added in v0.15.0

func (c UpdatePlayerPassthroughCommand) MarshalWire() []byte

func (UpdatePlayerPassthroughCommand) Name

Name returns the command name.

func (UpdatePlayerPassthroughCommand) ProtoDescriptor added in v0.16.4

func (UpdatePlayerPassthroughCommand) SizeWire added in v0.16.9

func (c UpdatePlayerPassthroughCommand) SizeWire() int

func (UpdatePlayerPassthroughCommand) ToProto added in v0.14.0

func (UpdatePlayerPassthroughCommand) UnmarshalWire added in v0.15.0

func (c UpdatePlayerPassthroughCommand) UnmarshalWire(data []byte) (any, error)

type UpdatePlayerPassthroughResult

type UpdatePlayerPassthroughResult struct {
	RequestID string                    `json:"request_id"`
	IsSuccess bool                      `json:"is_success"`
	Message   string                    `json:"message"`
	Player    component.PlayerComponent `json:"player"`
}

UpdatePlayerPassthroughResult is sent back to the client after UpdatePlayerPassthroughCommand.

func (UpdatePlayerPassthroughResult) AppendWire added in v0.16.9

func (c UpdatePlayerPassthroughResult) AppendWire(b []byte) []byte

func (UpdatePlayerPassthroughResult) FromProto added in v0.15.0

func (UpdatePlayerPassthroughResult) MarshalWire added in v0.15.0

func (c UpdatePlayerPassthroughResult) MarshalWire() []byte

func (UpdatePlayerPassthroughResult) Name

Name returns the request-prefixed event name.

func (UpdatePlayerPassthroughResult) ProtoDescriptor added in v0.16.4

func (UpdatePlayerPassthroughResult) SizeWire added in v0.16.9

func (c UpdatePlayerPassthroughResult) SizeWire() int

func (UpdatePlayerPassthroughResult) ToProto added in v0.15.0

func (UpdatePlayerPassthroughResult) UnmarshalWire added in v0.15.0

func (c UpdatePlayerPassthroughResult) UnmarshalWire(data []byte) (any, error)

type UpdateSessionPassthroughCommand

type UpdateSessionPassthroughCommand struct {
	RequestID       string `json:"request_id"` // For matching request/response
	PassthroughData string `json:"passthrough_data"`
}

UpdateSessionPassthroughCommand updates the session passthrough data (leader only).

func (UpdateSessionPassthroughCommand) AppendWire added in v0.16.9

func (c UpdateSessionPassthroughCommand) AppendWire(b []byte) []byte

func (UpdateSessionPassthroughCommand) FromProto added in v0.14.0

func (UpdateSessionPassthroughCommand) MarshalWire added in v0.15.0

func (c UpdateSessionPassthroughCommand) MarshalWire() []byte

func (UpdateSessionPassthroughCommand) Name

Name returns the command name.

func (UpdateSessionPassthroughCommand) ProtoDescriptor added in v0.16.4

func (UpdateSessionPassthroughCommand) SizeWire added in v0.16.9

func (c UpdateSessionPassthroughCommand) SizeWire() int

func (UpdateSessionPassthroughCommand) ToProto added in v0.14.0

func (UpdateSessionPassthroughCommand) UnmarshalWire added in v0.15.0

func (c UpdateSessionPassthroughCommand) UnmarshalWire(data []byte) (any, error)

type UpdateSessionPassthroughResult

type UpdateSessionPassthroughResult struct {
	RequestID string `json:"request_id"`
	IsSuccess bool   `json:"is_success"`
	Message   string `json:"message"`
}

UpdateSessionPassthroughResult is sent back to the client after UpdateSessionPassthroughCommand.

func (UpdateSessionPassthroughResult) AppendWire added in v0.16.9

func (c UpdateSessionPassthroughResult) AppendWire(b []byte) []byte

func (UpdateSessionPassthroughResult) FromProto added in v0.15.0

func (UpdateSessionPassthroughResult) MarshalWire added in v0.15.0

func (c UpdateSessionPassthroughResult) MarshalWire() []byte

func (UpdateSessionPassthroughResult) Name

Name returns the request-prefixed event name.

func (UpdateSessionPassthroughResult) ProtoDescriptor added in v0.16.4

func (UpdateSessionPassthroughResult) SizeWire added in v0.16.9

func (c UpdateSessionPassthroughResult) SizeWire() int

func (UpdateSessionPassthroughResult) ToProto added in v0.15.0

func (UpdateSessionPassthroughResult) UnmarshalWire added in v0.15.0

func (c UpdateSessionPassthroughResult) UnmarshalWire(data []byte) (any, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL