core

package
v0.0.0-...-55d4d90 Latest Latest
Warning

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

Go to latest
Published: Jul 22, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	IKCP_MTU_SIZE                   = 900
	IKCP_MAX_MESSAGE_SIZE           = 4096
	MAX_INPUTS_PER_PLAYER_PER_FRAME = 10
	MAX_PLAYERS_PER_ROOM            = 8
	MIN_FRAME_RATE                  = 1
)
View Source
const (
	OpPing = iota
	OpPong
	OpServerInput
	OpClientFrame
)
View Source
const (
	PingInterval         = 20 * time.Second
	PingWait             = 10 * time.Second
	PendingPlayerTimeout = 10 * time.Second
)
View Source
const (
	RoomEventPreJoin     = "pre_join"
	RoomEventJoin        = "join"
	RoomEventLeave       = "leave"
	RoomEventJoinTimeout = "join_timeout"
	RoomEventKcpReady    = "kcp_ready"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Player

type Player struct {
	ID   string `msgpack:"id"`
	Conv TConv  `msgpack:"conv"`
	// contains filtered or unexported fields
}

func NewPlayer

func NewPlayer(wsConn *gws.Conn) *Player

func (*Player) SendKCP

func (p *Player) SendKCP(data []byte)

type Room

type Room struct {
	Port       int               `msgpack:"port"`
	Version    string            `msgpack:"version"`
	MaxPlayers int               `msgpack:"max_players"`
	FrameRate  int               `msgpack:"frame_rate"`
	Players    map[TConv]*Player `msgpack:"players"`
	FrameID    TSeq              `msgpack:"frame_id"`
	// contains filtered or unexported fields
}

func NewRoom

func NewRoom(port int, version string, maxPlayers int, frameRate int) *Room

func (*Room) MainLoop

func (r *Room) MainLoop(server *Server)

func (*Room) WriteToUDP

func (r *Room) WriteToUDP(data []byte, p *Player)

type RoomEvent

type RoomEvent struct {
	Type   string  `msgpack:"type"`
	Player *Player `msgpack:"player"`
	// contains filtered or unexported fields
}

type Server

type Server struct {
	UdpPortMin int
	UdpPortMax int
	Methods    map[string]func(*Player, func(retval any, err ServerRpcError), any)
	PlayerByID *util.SyncMap[string, *Player]
	Rooms      map[int]*Room
	// contains filtered or unexported fields
}

func NewServer

func NewServer(udpPortMin int, udpPortMax int) *Server

func (*Server) LeaveRoom

func (s *Server) LeaveRoom(player *Player)

func (*Server) OnClose

func (s *Server) OnClose(conn *gws.Conn, err error)

func (*Server) OnMessage

func (s *Server) OnMessage(conn *gws.Conn, message *gws.Message)

func (*Server) OnOpen

func (s *Server) OnOpen(conn *gws.Conn)

func (*Server) OnPing

func (s *Server) OnPing(conn *gws.Conn, payload []byte)

func (*Server) OnPong

func (s *Server) OnPong(conn *gws.Conn, payload []byte)

type ServerRpcError

type ServerRpcError string
const (
	ErrOK                                = ""
	ErrRoomNotFound       ServerRpcError = "room_not_found"
	ErrRoomNotInitialized ServerRpcError = "room_not_initialized"
	ErrMaxPlayersExceeded ServerRpcError = "max_players_exceeded"
	ErrVersionMismatch    ServerRpcError = "version_mismatch"
	ErrAlreadyJoinedRoom  ServerRpcError = "already_joined_room"
	ErrPlayerJoinTimeout  ServerRpcError = "player_join_timeout"
	ErrNoAvailablePort    ServerRpcError = "no_available_port"
)

type TConv

type TConv = uint32

type TSeq

type TSeq = uint32

type UDPServer

type UDPServer struct {
	Conn *net.UDPConn
	Chan chan udpChanItem
	// contains filtered or unexported fields
}

func NewUDPServer

func NewUDPServer(host string, port int) *UDPServer

func (*UDPServer) ServeUDP

func (us *UDPServer) ServeUDP()

func (*UDPServer) Shutdown

func (us *UDPServer) Shutdown()

Jump to

Keyboard shortcuts

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