Documentation
¶
Overview ¶
Package lobby provides a flexible lobby/party system for Cardinal worlds.
This package handles player grouping and session management. Players can create lobbies, invite friends via invite codes, form teams, ready up, and start sessions.
Usage:
world := cardinal.NewWorld(cardinal.WorldOptions{...})
cardinal.RegisterPlugin(world, lobby.NewPlugin(lobby.Config{
LobbyWorld: myLobbyWorld,
}))
world.StartGame()
The package registers the following systems:
- InitSystem (Init hook): Creates singleton index and config entities
- LobbySystem (Update hook): Processes lobby commands
Commands:
- CreateLobby: Player creates a new lobby, becomes leader
- JoinLobby: Player joins via invite code
- JoinTeam: Player moves to a different team
- LeaveLobby: Player leaves current lobby
- SetReady: Player marks ready/unready
- KickPlayer: Leader removes a player
- TransferLeader: Leader gives leadership to another
- StartSession: Leader starts the session
- EndSession: End the current session
- GenerateInviteCode: Leader generates new invite code
Index ¶
- Constants
- type Component
- type Config
- type ConfigComponent
- type CreateLobbyCommand
- type CreateLobbyResult
- type CreatedEvent
- type DefaultProvider
- type DeletedEvent
- type GameWorld
- type GenerateInviteCodeCommand
- type GenerateInviteCodeResult
- type GetAllPlayersCommand
- type GetAllPlayersResult
- type GetPlayerCommand
- type GetPlayerResult
- type HeartbeatCommand
- type IndexComponent
- type InviteCodeGeneratedEvent
- type JoinLobbyCommand
- type JoinLobbyResult
- type JoinTeamCommand
- type JoinTeamResult
- type KickPlayerCommand
- type KickPlayerResult
- type LeaderChangedEvent
- type LeaveLobbyCommand
- type LeaveLobbyResult
- type NotifySessionEndCommand
- type NotifySessionStartCommand
- type PlayerChangedTeamEvent
- type PlayerComponent
- type PlayerJoinedEvent
- type PlayerKickedEvent
- type PlayerLeftEvent
- type PlayerPassthroughUpdatedEvent
- type PlayerReadyEvent
- type PlayerTimedOutEvent
- type Plugin
- type Provider
- type Session
- type SessionEndedEvent
- type SessionPassthroughUpdatedEvent
- type SessionStartedEvent
- type SessionState
- type SetReadyCommand
- type SetReadyResult
- type StartSessionCommand
- type StartSessionPayload
- type StartSessionResult
- type Team
- type TeamConfig
- type TransferLeaderCommand
- type TransferLeaderResult
- type UpdatePlayerPassthroughCommand
- type UpdatePlayerPassthroughResult
- type UpdateSessionPassthroughCommand
- type UpdateSessionPassthroughResult
Constants ¶
const ( SessionStateIdle = component.SessionStateIdle SessionStateInSession = component.SessionStateInSession )
Session states.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// LobbyWorld is this lobby shard's address.
// Included in NotifySessionStartCommand so game shard can send NotifySessionEndCommand back.
LobbyWorld cardinal.OtherWorld
// Provider is the customizable provider for the lobby system.
// If nil, DefaultProvider is used.
Provider Provider
// 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
}
Config holds configuration for the lobby package.
type ConfigComponent ¶
type ConfigComponent = component.ConfigComponent
Re-export types for easier user access.
type CreateLobbyResult ¶
type CreateLobbyResult = system.CreateLobbyResult
CommandResult (persona-prefixed responses).
type DefaultProvider ¶
type DefaultProvider = system.DefaultProvider
Re-export types for easier user access.
type DeletedEvent ¶
type DeletedEvent = system.LobbyDeletedEvent
Re-export types for easier user access.
type GenerateInviteCodeCommand ¶
type GenerateInviteCodeCommand = system.GenerateInviteCodeCommand
Re-export types for easier user access.
type GenerateInviteCodeResult ¶
type GenerateInviteCodeResult = system.GenerateInviteCodeResult
Re-export types for easier user access.
type GetAllPlayersCommand ¶
type GetAllPlayersCommand = system.GetAllPlayersCommand
Re-export types for easier user access.
type GetAllPlayersResult ¶
type GetAllPlayersResult = system.GetAllPlayersResult
Re-export types for easier user access.
type GetPlayerCommand ¶
type GetPlayerCommand = system.GetPlayerCommand
Re-export types for easier user access.
type GetPlayerResult ¶
type GetPlayerResult = system.GetPlayerResult
Re-export types for easier user access.
type HeartbeatCommand ¶
type HeartbeatCommand = system.HeartbeatCommand
Re-export types for easier user access.
type IndexComponent ¶
type IndexComponent = component.LobbyIndexComponent
Re-export types for easier user access.
type InviteCodeGeneratedEvent ¶
type InviteCodeGeneratedEvent = system.InviteCodeGeneratedEvent
Re-export types for easier user access.
type JoinLobbyCommand ¶
type JoinLobbyCommand = system.JoinLobbyCommand
Re-export types for easier user access.
type JoinLobbyResult ¶
type JoinLobbyResult = system.JoinLobbyResult
Re-export types for easier user access.
type JoinTeamCommand ¶
type JoinTeamCommand = system.JoinTeamCommand
Re-export types for easier user access.
type JoinTeamResult ¶
type JoinTeamResult = system.JoinTeamResult
Re-export types for easier user access.
type KickPlayerCommand ¶
type KickPlayerCommand = system.KickPlayerCommand
Re-export types for easier user access.
type KickPlayerResult ¶
type KickPlayerResult = system.KickPlayerResult
Re-export types for easier user access.
type LeaderChangedEvent ¶
type LeaderChangedEvent = system.LeaderChangedEvent
Re-export types for easier user access.
type LeaveLobbyCommand ¶
type LeaveLobbyCommand = system.LeaveLobbyCommand
Re-export types for easier user access.
type LeaveLobbyResult ¶
type LeaveLobbyResult = system.LeaveLobbyResult
Re-export types for easier user access.
type NotifySessionEndCommand ¶
type NotifySessionEndCommand = system.NotifySessionEndCommand
Re-export types for easier user access.
type NotifySessionStartCommand ¶
type NotifySessionStartCommand = system.NotifySessionStartCommand
Cross-Shard Commands.
type PlayerChangedTeamEvent ¶
type PlayerChangedTeamEvent = system.PlayerChangedTeamEvent
Re-export types for easier user access.
type PlayerComponent ¶
type PlayerComponent = component.PlayerComponent
Re-export types for easier user access.
type PlayerJoinedEvent ¶
type PlayerJoinedEvent = system.PlayerJoinedEvent
Re-export types for easier user access.
type PlayerKickedEvent ¶
type PlayerKickedEvent = system.PlayerKickedEvent
Re-export types for easier user access.
type PlayerLeftEvent ¶
type PlayerLeftEvent = system.PlayerLeftEvent
Re-export types for easier user access.
type PlayerPassthroughUpdatedEvent ¶
type PlayerPassthroughUpdatedEvent = system.PlayerPassthroughUpdatedEvent
Re-export types for easier user access.
type PlayerReadyEvent ¶
type PlayerReadyEvent = system.PlayerReadyEvent
Re-export types for easier user access.
type PlayerTimedOutEvent ¶
type PlayerTimedOutEvent = system.PlayerTimedOutEvent
Re-export types for easier user access.
type Plugin ¶ added in v0.11.0
type Plugin struct {
// contains filtered or unexported fields
}
Plugin implements cardinal.Plugin for the lobby system.
type SessionEndedEvent ¶
type SessionEndedEvent = system.SessionEndedEvent
Re-export types for easier user access.
type SessionPassthroughUpdatedEvent ¶
type SessionPassthroughUpdatedEvent = system.SessionPassthroughUpdatedEvent
Re-export types for easier user access.
type SessionStartedEvent ¶
type SessionStartedEvent = system.SessionStartedEvent
Re-export types for easier user access.
type SessionState ¶
type SessionState = component.SessionState
Re-export types for easier user access.
type SetReadyCommand ¶
type SetReadyCommand = system.SetReadyCommand
Re-export types for easier user access.
type SetReadyResult ¶
type SetReadyResult = system.SetReadyResult
Re-export types for easier user access.
type StartSessionCommand ¶
type StartSessionCommand = system.StartSessionCommand
Re-export types for easier user access.
type StartSessionPayload ¶
type StartSessionPayload = system.StartSessionPayload // Alias for NotifySessionStartCommand
Re-export types for easier user access.
type StartSessionResult ¶
type StartSessionResult = system.StartSessionResult
Re-export types for easier user access.
type TransferLeaderCommand ¶
type TransferLeaderCommand = system.TransferLeaderCommand
Re-export types for easier user access.
type TransferLeaderResult ¶
type TransferLeaderResult = system.TransferLeaderResult
Re-export types for easier user access.
type UpdatePlayerPassthroughCommand ¶
type UpdatePlayerPassthroughCommand = system.UpdatePlayerPassthroughCommand
Re-export types for easier user access.
type UpdatePlayerPassthroughResult ¶
type UpdatePlayerPassthroughResult = system.UpdatePlayerPassthroughResult
Re-export types for easier user access.
type UpdateSessionPassthroughCommand ¶
type UpdateSessionPassthroughCommand = system.UpdateSessionPassthroughCommand
Re-export types for easier user access.
type UpdateSessionPassthroughResult ¶
type UpdateSessionPassthroughResult = system.UpdateSessionPassthroughResult
Re-export types for easier user access.