Bomberman Multiplayer
Authoritative multiplayer networking layer for Bomberman.
Loading...
Searching...
No Matches
ServerSession.cpp File Reference

Authoritative server session lifecycle, peer-session binding, and player-slot management. More...

#include "ServerState.h"
#include <numeric>
#include <random>
#include "ServerFlow.h"
#include "ServerPowerups.h"
#include "Sim/SpawnSlots.h"
#include "Sim/TileMapGen.h"
#include "Util/Log.h"

Namespaces

namespace  bomberman::server
 Authoritative dedicated-server state, match flow, and fixed-tick simulation support.
 

Functions

void bomberman::server::initServerState (ServerState &state, ENetHost *host, bool diagEnabled=false, bool overrideMapSeed=false, uint32_t mapSeed=0, uint32_t inputLeadTicks=sim::kDefaultServerInputLeadTicks, uint32_t snapshotIntervalTicks=sim::kDefaultServerSnapshotIntervalTicks, bool powersEnabled=true)
 Resets a ServerState for a new dedicated-server session.
 
void bomberman::server::rollNextRoundMapSeed (ServerState &state)
 Chooses the seed for the next round map.
 
std::optional< uint8_t > bomberman::server::acquirePlayerId (ServerState &state)
 Returns the lowest available playerId.
 
bool bomberman::server::acquireSpecificPlayerId (ServerState &state, uint8_t playerId)
 Removes a specific playerId from the free pool if available.
 
void bomberman::server::releasePlayerId (ServerState &state, uint8_t playerId)
 Returns a playerId to the free pool.
 
PeerSessionbomberman::server::bindPeerSession (ServerState &state, ENetPeer &peer)
 Binds a connected ENet peer to stable live peer-session storage.
 
PeerSessionbomberman::server::getPeerSession (ENetPeer *peer)
 Returns the live peer session referenced by peer->data, if any.
 
const PeerSessionbomberman::server::getPeerSession (const ENetPeer *peer)
 
PeerSessionbomberman::server::findPeerSessionByPlayerId (ServerState &state, uint8_t playerId)
 Returns the live peer session currently bound to playerId, if any.
 
const PeerSessionbomberman::server::findPeerSessionByPlayerId (const ServerState &state, const uint8_t playerId)
 
void bomberman::server::acceptPeerSession (ServerState &state, PeerSession &session, uint8_t playerId, std::string_view playerName, uint8_t carriedWins=0)
 Commits an accepted peer session into active player metadata.
 
std::optional< uint8_t > bomberman::server::releasePeerSession (ServerState &state, ENetPeer &peer)
 Releases the live peer session bound to peer, if any.
 
void bomberman::server::createMatchPlayerState (ServerState &state, uint8_t playerId)
 Creates active in-match state for one player seat.
 
void bomberman::server::destroyMatchPlayerState (ServerState &state, uint8_t playerId)
 Destroys active in-match state for one player seat, if present.
 

Detailed Description

Authoritative server session lifecycle, peer-session binding, and player-slot management.