Fixed incorrect server-start-delay (caused by the start delay
being delivered in a different thread, so adding DT in the main thread was not the right time step).
This commit is contained in:
parent
742be06c21
commit
34af963cc1
@ -237,7 +237,6 @@ void ServerLobby::update(float dt)
|
||||
m_client_ready_count.getData() == m_game_setup->getPlayerCount())
|
||||
{
|
||||
signalRaceStartToClients();
|
||||
m_server_delay = 0.1f;
|
||||
m_client_ready_count.getData() = 0;
|
||||
}
|
||||
m_client_ready_count.unlock();
|
||||
@ -249,9 +248,10 @@ void ServerLobby::update(float dt)
|
||||
// next state.
|
||||
break;
|
||||
case DELAY_SERVER:
|
||||
m_server_delay -= dt;
|
||||
if (m_server_delay < 0)
|
||||
if (m_server_delay < StkTime::getRealTime())
|
||||
{
|
||||
Log::verbose("ServerLobby", "End delay at %lf",
|
||||
StkTime::getRealTime());
|
||||
m_state = RACING;
|
||||
World::getWorld()->setReadyToRace();
|
||||
}
|
||||
@ -350,7 +350,8 @@ void ServerLobby::registerServer()
|
||||
*/
|
||||
void ServerLobby::signalRaceStartToClients()
|
||||
{
|
||||
Log::verbose("Server", "Signaling race start to clients");
|
||||
Log::verbose("Server", "Signaling race start to clients at %lf",
|
||||
StkTime::getRealTime());
|
||||
const std::vector<STKPeer*> &peers = STKHost::get()->getPeers();
|
||||
NetworkString *ns = getNetworkString(1);
|
||||
ns->addUInt8(LE_START_RACE);
|
||||
@ -935,12 +936,16 @@ void ServerLobby::finishedLoadingWorldClient(Event *event)
|
||||
void ServerLobby::startedRaceOnClient(Event *event)
|
||||
{
|
||||
m_client_ready_count.lock();
|
||||
Log::verbose("ServerLobby", "Host %d has started race.",
|
||||
event->getPeer()->getHostId());
|
||||
Log::verbose("ServerLobby", "Host %d has started race at %lf.",
|
||||
event->getPeer()->getHostId(), StkTime::getRealTime());
|
||||
m_client_ready_count.getData()++;
|
||||
if (m_client_ready_count.getData() == m_game_setup->getPlayerCount())
|
||||
{
|
||||
m_state = DELAY_SERVER;
|
||||
m_server_delay = StkTime::getRealTime() + 0.1f;
|
||||
Log::verbose("ServerLobby", "Started delay at %lf set delay to %lf",
|
||||
StkTime::getRealTime(),
|
||||
m_server_delay);
|
||||
terminateLatencyProtocol();
|
||||
}
|
||||
m_client_ready_count.unlock();
|
||||
|
@ -43,8 +43,9 @@ private:
|
||||
|
||||
/** Keeps track of an artificial server delay (which makes sure that the
|
||||
* data from all clients has arrived when the server computes a certain
|
||||
* timestep. */
|
||||
float m_server_delay;
|
||||
* timestep.(. It stores the real time since epoch + delta (atm 0.1
|
||||
* seconds), which is the real time at which the server should start. */
|
||||
double m_server_delay;
|
||||
|
||||
Protocol *m_current_protocol;
|
||||
bool m_selection_enabled;
|
||||
|
Loading…
x
Reference in New Issue
Block a user