@@ -94,18 +94,28 @@ func (g *GameServer) ManageBuffer() {
94
94
g .Logger .Info ("done managing buffers" )
95
95
return
96
96
}
97
- // Adjust the buffer size for the lead player(s)
97
+
98
+ // Find the largest buffer health
99
+ var bufferHealth int32 = - 1
98
100
for i := range 4 {
99
101
if g .GameData .BufferHealth [i ] != - 1 && g .GameData .CountLag [i ] == 0 {
100
- if g .GameData .BufferHealth [i ] > g .BufferTarget && g .GameData .BufferSize [i ] > 0 {
101
- g .GameData .BufferSize [i ]--
102
- // g.Logger.Info("reducing buffer size", "player", i, "bufferSize", g.GameData.BufferSize[i])
103
- } else if g .GameData .BufferHealth [i ] < g .BufferTarget {
104
- g .GameData .BufferSize [i ]++
105
- // g.Logger.Info("increasing buffer size", "player", i, "bufferSize", g.GameData.BufferSize[i])
102
+ if g .GameData .BufferHealth [i ] > bufferHealth {
103
+ bufferHealth = g .GameData .BufferHealth [i ]
106
104
}
107
105
}
108
106
}
107
+
108
+ // Adjust the buffer size
109
+ if bufferHealth != - 1 {
110
+ if bufferHealth > g .BufferTarget && g .GameData .BufferSize > 0 {
111
+ g .GameData .BufferSize --
112
+ g .Logger .Info ("reduced buffer size" , "bufferSize" , g .GameData .BufferSize )
113
+ } else if bufferHealth < g .BufferTarget {
114
+ g .GameData .BufferSize ++
115
+ g .Logger .Info ("increased buffer size" , "bufferSize" , g .GameData .BufferSize )
116
+ }
117
+ }
118
+
109
119
time .Sleep (time .Second * 5 )
110
120
}
111
121
}
@@ -121,7 +131,7 @@ func (g *GameServer) ManagePlayers() {
121
131
_ , ok := g .Registrations [i ]
122
132
if ok {
123
133
if g .GameData .PlayerAlive [i ] {
124
- g .Logger .Info ("player status" , "player" , i , "regID" , g .Registrations [i ].RegID , "bufferSize" , g .GameData .BufferSize [ i ] , "bufferHealth" , g .GameData .BufferHealth [i ], "countLag" , g .GameData .CountLag [i ], "address" , g .GameData .PlayerAddresses [i ])
134
+ g .Logger .Info ("player status" , "player" , i , "regID" , g .Registrations [i ].RegID , "bufferSize" , g .GameData .BufferSize , "bufferHealth" , g .GameData .BufferHealth [i ], "countLag" , g .GameData .CountLag [i ], "address" , g .GameData .PlayerAddresses [i ])
125
135
playersActive = true
126
136
} else {
127
137
g .Logger .Info ("play disconnected UDP" , "player" , i , "regID" , g .Registrations [i ].RegID , "address" , g .GameData .PlayerAddresses [i ])
@@ -139,6 +149,7 @@ func (g *GameServer) ManagePlayers() {
139
149
g .PlayersMutex .Unlock ()
140
150
}
141
151
}
152
+ g .GameData .BufferHealth [i ] = - 1
142
153
}
143
154
}
144
155
g .GameData .PlayerAlive [i ] = false
0 commit comments