Re: time
Mike Wuetherick <[email protected]>
| Newsgroups | gmane.games.devel.general |
|---|---|
| Message-ID | <[email protected]> |
for multiplayer games like counter-strike or bf9142, i think that the engine completely 'restarts itself' on every map change to help avoid these types of errors. i recall a bug in quake that would crash it every 'x' hours on clockwork if left running in 'demo mode' for example... for a massively multiplayer game though you would want to use something more robust indeed. other than relying on the system clock itself (or a system-specific high-performance multi-media timer), i'm not sure how i'd approach this. we use the windows internal clock for our own timing, and have routines that check to see if we've 'fallen off the track' at any point, if so, we do a sync between our internal game 'clock' and the windows system clock. for multiplayer games, you may want all games (client or server) to rely on the 'master server' clock possibly, not on a frame-by-frame basis, but on a larger 'sync' basis, where you can make sure that all clients are synced to the same timestamp? i'm not sure how else you'd approach this, aside from just forcing the clients to sync to the server's time, whatever it happens to be...clients would add or drop frames as neceessary to stay in sync... mike w www.gekidodesigns.com Brett Bibby wrote: > Howdy, I have been wrestling with time in my engine for some time now > (no pun intended). I wondered how other people are handling time? Our > game engine is specifically designed for PS2/Gcn, but it runs under > Windows too. Specifically... > > What are the different components that people are using? We currently > have a single 32-bit time variable initialized to zero at startup and > that's it. Each frame we either count v-blanks, use system > ticks/timers or OS facilities custom for each platform to increment > the global time value, usually stored in microseconds and rounded up > to millisecond resolution for use in the engine. Works well and I > have done this for every game engine I have developed so far. > > Feels like a change may be warranted though as online gaming becomes > more popular, since if the game was to run for many days it would > overflow and timestamping may be problematic. So now I'm thinking of > adding a time struct (different from ANSI C though) whereby we store > the year, month, day, hour and minute, and second and also a > conversion struct that says how many mins->hour->day->month->year so > we can convert "real" time into game time. I can pack this into > 64-bits, but then again a simple 64-bit timer using the old way to > simply count ticks would also eliminate the overflow problem anyway > and so I'm questioning the right thing to do. Also, I hoping to be > able to use absolute time for certain things where we used to use > delta times. What are people using for timestamps for online games? > Does each game session reset the server session time to prevent > eventual overflow? Or is a more robust timing mechanism used? Are > people using microseconds? milliseconds? > > Thanks, Brett > > > ------------------------------------------------------- SF.Net is > sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps > & Web services for Linux with a free DVD software kit from IBM. Click > Now! http://ads.osdn.com/?ad_id56&alloc_id438&opÌk > _______________________________________________ Gamedevlists-general > mailing list [email protected] > https://lists.sourceforge.net/lists/listinfo/gamedevlists-general > Archives: http://sourceforge.net/mailarchive/forum.php?forum_idU7 > > ------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id56&alloc_id438&op=click _______________________________________________ Gamedevlists-general mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/gamedevlists-general Archives: http://sourceforge.net/mailarchive/forum.php?forum_idU7