From 8aa04fc836116a58f8ffd1e0c3539b9ea8a94ddf Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Thu, 21 Feb 2008 19:06:15 +0000 Subject: dedicated server, entity transfer --- src/server/server.cc | 18 ++++++++++++------ src/server/timer.cc | 11 +++++++---- 2 files changed, 19 insertions(+), 10 deletions(-) (limited to 'src/server') diff --git a/src/server/server.cc b/src/server/server.cc index 4c087b8..c07be52 100644 --- a/src/server/server.cc +++ b/src/server/server.cc @@ -64,18 +64,24 @@ void Server::init() void Server::run() { - const float server_framerate = 1.0f / 20.0f; - server::Timer timer; + float server_framerate = 1.0f / 20.0f; + if (core::Cvar::sv_framerate->value()) + server_framerate = 1.0f / core::Cvar::sv_framerate->value(); - timer.mark(); + server::Timer timer; while(true) { + timer.mark(); + frame(server_framerate); float elapsed = timer.elapsed(); - frame(elapsed); + float sleeptime = server_framerate - elapsed; + if (sleeptime <0) + sleeptime = 0; - sys::sleep(server_framerate - elapsed); - timer.mark(); + sys::sleep(sleeptime); + + } } diff --git a/src/server/timer.cc b/src/server/timer.cc index 946da2c..56075c7 100644 --- a/src/server/timer.cc +++ b/src/server/timer.cc @@ -5,7 +5,9 @@ */ #include "timer.h" + #include +#include namespace server { @@ -26,13 +28,14 @@ void Timer::mark() float Timer::elapsed() { - timeval tick; + struct timeval tick; + struct timezone tick_tz; - gettimeofday(&tick, &timer_tz); + gettimeofday(&tick, &tick_tz); // calculate elapsed time in 10^-6 seconds - long delta = (tick.tv_sec - timer_tick.tv_sec) * 1000000 + (tick.tv_usec - timer_tick.tv_usec); - return( (float) delta / 1000000); + long delta = (tick.tv_sec - timer_tick.tv_sec) * 1000000 + (tick.tv_usec - timer_tick.tv_usec); + return( (float) delta / 1000000.0f); } } -- cgit v1.2.3