1
0
Fork 0

(svn r2755) Fix: Fix a desync issue with autoreplace

release/0.4.5
ludde 2005-07-29 21:55:49 +00:00
parent 3a162799fd
commit bb1e1f2b5f
3 changed files with 10 additions and 10 deletions

View File

@ -1205,8 +1205,15 @@ void NetworkGameLoop(void)
if (!NetworkReceive()) return; if (!NetworkReceive()) return;
if (_network_server) { if (_network_server) {
bool send_frame = false;
// We first increase the _frame_counter // We first increase the _frame_counter
_frame_counter++; _frame_counter++;
// Update max-frame-counter
if (_frame_counter > _frame_counter_max) {
_frame_counter_max = _frame_counter + _network_frame_freq;
send_frame = true;
}
NetworkHandleLocalQueue(); NetworkHandleLocalQueue();
@ -1218,7 +1225,7 @@ void NetworkGameLoop(void)
_sync_seed_2 = _random_seeds[0][1]; _sync_seed_2 = _random_seeds[0][1];
#endif #endif
NetworkServer_Tick(); NetworkServer_Tick(send_frame);
} else { } else {
// Client // Client

View File

@ -1499,20 +1499,13 @@ void NetworkHandleCommandQueue(NetworkClientState *cs) {
} }
// This is called every tick if this is a _network_server // This is called every tick if this is a _network_server
void NetworkServer_Tick(void) void NetworkServer_Tick(bool send_frame)
{ {
NetworkClientState *cs; NetworkClientState *cs;
bool send_frame = false;
#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME #ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
bool send_sync = false; bool send_sync = false;
#endif #endif
// Update max-frame-counter
if (_frame_counter > _frame_counter_max) {
_frame_counter_max = _frame_counter + _network_frame_freq;
send_frame = true;
}
#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME #ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
if (_frame_counter >= _last_sync_frame + _network_sync_freq) { if (_frame_counter >= _last_sync_frame + _network_sync_freq) {
_last_sync_frame = _frame_counter; _last_sync_frame = _frame_counter;

View File

@ -16,7 +16,7 @@ bool NetworkFindName(char new_name[NETWORK_NAME_LENGTH]);
void NetworkServer_HandleChat(NetworkAction action, DestType desttype, int dest, const char *msg, uint16 from_index); void NetworkServer_HandleChat(NetworkAction action, DestType desttype, int dest, const char *msg, uint16 from_index);
bool NetworkServer_ReadPackets(NetworkClientState *cs); bool NetworkServer_ReadPackets(NetworkClientState *cs);
void NetworkServer_Tick(void); void NetworkServer_Tick(bool send_frame);
void NetworkServerMonthlyLoop(void); void NetworkServerMonthlyLoop(void);
void NetworkServerYearlyLoop(void); void NetworkServerYearlyLoop(void);