Add sequence numbers to server broadcasts and client state handling for out-of-order update detection.
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 9m53s
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 9m53s
This commit is contained in:
@@ -113,6 +113,7 @@ type GameState struct {
|
||||
CollectedCoins map[string]bool `json:"collected_coins"` // Welche Coins wurden eingesammelt (Key: ChunkID_ObjectIndex)
|
||||
CollectedPowerups map[string]bool `json:"collected_powerups"` // Welche Powerups wurden eingesammelt
|
||||
MovingPlatforms []MovingPlatformSync `json:"moving_platforms"` // Bewegende Plattformen
|
||||
Sequence uint32 `json:"sequence"` // Sequenznummer für Out-of-Order-Erkennung
|
||||
}
|
||||
|
||||
// MovingPlatformSync: Synchronisiert die Position einer bewegenden Plattform
|
||||
|
||||
@@ -83,6 +83,7 @@ type Room struct {
|
||||
ChunkSpawnedCount map[string]int // Wie oft wurde jeder Chunk gespawnt
|
||||
MovingPlatforms []*MovingPlatform // Aktive bewegende Plattformen
|
||||
firstBroadcast bool // Wurde bereits geloggt?
|
||||
sequence uint32 // Sequenznummer für Broadcasts
|
||||
|
||||
stopChan chan struct{}
|
||||
|
||||
@@ -784,6 +785,9 @@ func (r *Room) Broadcast() {
|
||||
r.Mutex.RLock()
|
||||
defer r.Mutex.RUnlock()
|
||||
|
||||
// Sequenznummer erhöhen
|
||||
r.sequence++
|
||||
|
||||
state := game.GameState{
|
||||
RoomID: r.ID,
|
||||
Players: make(map[string]game.PlayerState),
|
||||
@@ -797,6 +801,7 @@ func (r *Room) Broadcast() {
|
||||
CollectedCoins: r.CollectedCoins,
|
||||
CollectedPowerups: r.CollectedPowerups,
|
||||
MovingPlatforms: make([]game.MovingPlatformSync, 0, len(r.MovingPlatforms)),
|
||||
Sequence: r.sequence,
|
||||
}
|
||||
|
||||
for id, p := range r.Players {
|
||||
|
||||
Reference in New Issue
Block a user