So BK, It would be best for all of us working on MP based mod's to find and replace every instance of realtime with curtime?
Adam --- [EMAIL PROTECTED] wrote: > FYI all, since dumping ->realtime in favor of > ->curtime I have not seen the serious form of this > repro. The bug was intermittent, so it could be > luck, but it's been about 2 weeks, so it's looking > like that was the only bug. > > Just a heads-up to anyone thinking of using realtime > for anything other than maybe perf testing, don't. > (And even that use is questionable.) > > -bk > > At 2006/04/18 06:42 PM, > [EMAIL PROTECTED] wrote: > >No, I do not need real time accuracy. I just need > to know how the game thinks time is advancing each > tick. To give an example, I'm using > gpGlobals->realtime to set a stamp and change the > weird feature where you can switch weapons over and > over almost limitlessly fast in HL2 DM. > > > >I left it running overnight with curtime and didn't > get any odd curtimes (well, except for the level > changes, but that's ok.) Thanks again - this seems > resolve the second biggest SDK issue I know of, > which has been a source of user complaints for a > quite a while. > > > >-bk > > > >At 2006/04/17 11:36 PM, Yahn Bernier wrote: > >>Yes. Curtime is the server's clock, which is > bounded by the tick > >>interval and smoothly increases in each call to > GameFrame. If the > >>actuall time for a frame takes longer than one > tick interval, then you > >>can have multiple calls to GameFrame (with > advancing curtime) but only > >>get a single update to gpGlobals->realtime. If > you need sub-frame clock > >>accuracy (only useful for perf. Analysis really), > then use > >>Plat_FloatTime() which is independent of > gpGlobals->realtime and > >>->curtime. Otherwise, if you need a clock, > ->curtime is good enough, > >>but does reset between levels. > gpGlobals->realtime does not, but, > >>again, it only gets advanced at the start of a > frame (as opposed to each > >>tick). > >> > >>Yahn > >> > >>-----Original Message----- > >>From: [EMAIL PROTECTED] > >>[mailto:[EMAIL PROTECTED] On > Behalf Of > >>[EMAIL PROTECTED] > >>Sent: Monday, April 17, 2006 8:16 PM > >>To: [email protected] > >>Subject: RE: [hlcoders] gpGlobals->realtime > standing still > >> > >>Thanks much. When you say curtime "will reflect > the 0.015 increments > >>per tick", it sounds like you're saying that > realtime is broken in this > >>regard and I should use curtime instead? That's > ok, but please confirm, > >>as I will need to do a lot of search and replace. > >> > >>I've run a few tests and curtime always seems > consistent and monotonic, > >>however it seems that curtime doesn't start moving > until the map loads, > >>and is reset on map load. Is that the expected > behavior? > >> > >>-bk > >> > >>At 2006/04/13 12:33 PM, Yahn Bernier wrote: > >>>gpGlobals->curtime will reflect the 0.015 > increments per tick. > >>>Plat_FloatTime() will resample the high perf > clock. > >>> > >>>Yahn > >>> > >>>-----Original Message----- > >>>From: [EMAIL PROTECTED] > >>>[mailto:[EMAIL PROTECTED] On > Behalf Of Jay Stelly > >>>Sent: Thursday, April 13, 2006 10:21 AM > >>>To: [email protected] > >>>Subject: RE: [hlcoders] gpGlobals->realtime > standing still > >>> > >>>Yahn found this one - realtime is only integrated > once per sever frame. > >>>Game frame is called once per server tick. When > you run something that > >>>uses 100% CPU the server gets starved, then tries > to make up the time > >>>all in one frame. It's a little more complex > than that because there's > >>>a cap on the sim time it will try to execute in > one frame, but ignoring > >>>that: > >>> > >>>The first GameFrame() has the complete update to > realtime, then the > >>>subsequent calls don't change because you're > still running ticks to > >>>catch up. > >>> > >>>So in this example: > >>>> >odd realtime 11168195898843186 105.437195 > 105.486000 0.015000 > >>>> >odd realtime 11168195901330214 105.486000 > 105.486000 0.015000 > >>>> >odd realtime 11168195904200006 105.486000 > 105.486000 0.015000 > >>> > >>>Frame 2 has a 49ms jump in realtime, and frame 3 > has the realtime the > >>>same because each tick is 15 ms, so you need to > run multiple ticks to > >>>catch up. > >>> > >>>We can change it to make it more incremental, but > you're not actually > >>>losing any time (at least I can't see any in this > data). > >>> > >>>Jay > >>> > >>> > >>>> -----Original Message----- > >>>> From: [EMAIL PROTECTED] > >>>> [mailto:[EMAIL PROTECTED] > On Behalf Of > >>>> [EMAIL PROTECTED] > >>>> Sent: Wednesday, April 12, 2006 9:06 PM > >>>> To: [email protected] > >>>> Subject: RE: [hlcoders] gpGlobals->realtime > standing still > >>>> > >>>> Oh yea forgot to say it's an intel p4 single > proc with HT enabled. > >>>> > >>>> Here's one that repeated 6 times lasting 5 > ms... > >>>> > >>>> odd realtime 11172032919604142 1479.026855 > 1479.368408 0.015000 > >>>> odd realtime 11172032923627014 1479.368408 > 1479.368408 0.015000 > >>>> odd realtime 11172032926027614 1479.368408 > 1479.368408 0.015000 > >>>> odd realtime 11172032930865690 1479.368408 > 1479.368408 0.015000 > >>>> odd realtime 11172032932857506 1479.368408 > 1479.368408 0.015000 > >>>> odd realtime 11172032936032430 1479.368408 > 1479.368408 0.015000 > >>>> odd realtime 11172032937616626 1479.368408 > 1479.368408 0.015000 > >>>> > >>>> At 2006/04/12 10:45 PM, > [EMAIL PROTECTED] wrote: > >>>> >Using the 100% cpu method that always breaks > rather easily, > >>>> I get results as follows, from the code below. > It usually > >>>> occurs in groups of 2 or 3. The long-term > slowdown may take > >>>> several days to repro again. In this case you > see realtime > >>>> being frozen for 2 milliseconds, calling > GameFrame 3 times > >>>> with the same value: > >>>> > > >>>> >odd realtime 11168195898843186 105.437195 > 105.486000 0.015000 > >>>> >odd realtime 11168195901330214 105.486000 > 105.486000 0.015000 > >>>> >odd realtime 11168195904200006 105.486000 > 105.486000 0.015000 > >>>> > > >>>> >----- > >>>> > > >>>> >void CServerGameDLL::GameFrame( bool > simulating ) > >>>> >{ > >>>> >#if defined(DEBUG) > >>>> > static float last_realtime = 0; > >>>> > if ( > >>>> > (gpGlobals->realtime - > last_realtime < > >>>> gpGlobals->frametime / 3) > >>>> > || (gpGlobals->realtime - > last_realtime > > >>>> gpGlobals->frametime * 3) > >>>> > ) { > >>>> > LARGE_INTEGER PerformanceCount; > >>>> > > assert(QueryPerformanceCounter(&PerformanceCount)); > >>>> > Msg("odd realtime %I64d %f %f %f\n", > >>>> PerformanceCount, last_realtime, > gpGlobals->realtime, > >>>> gpGlobals->frametime); > >>>> > } > >>>> > assert(gpGlobals->frametime >= 0.0); > >>>> > assert(gpGlobals->frametime < .03); > >>>> > last_realtime = gpGlobals->realtime; > >>>> >#endif > >>>> > > >>>> >At 2006/04/12 12:14 PM, Jay Stelly wrote: > >>>> >>The master game clock is driven by > >>>> QueryPerformanceCounter() on win32 > >>>> >>and gettimeofday() on linux. > >>>> >> > >>>> >>Still, we have had reports of clock issues > with QPC() (not this > >>>> >>particular issue however) on AMD x2 systems > that were fixed > >>>> by forcing > >>>> >>affinity. Also, for winxp/xp64 there is a > chipset driver > >>>> update that > >>>> >>AMD recommends installing to address some > timing issues. I > >>>> don't have > >>>> >>the info from AMD handy, but someone has > written about it here (and > >>>> >>provides links to downloads): > >>>> > >>http://ucguides.savagehelp.com/Quake4/FAQ_DualCore.htm#AMD > >>>> >> > >>>> >>RDTSC is used for the +showbudget panel. > There are some issues > >>with > >>>> >>that on AMD x2 systems, but that is limited > to the profiling code. > >>>> >> > >>>> >>Jay > >>>> >> > >>>> >> > >>>> >>> -----Original Message----- > >>>> >>> From: [EMAIL PROTECTED] > >>>> >>> > [mailto:[EMAIL PROTECTED] On > Behalf Of > >>>> >>> Jeffrey "botman" Broome > >>>> >>> Sent: Wednesday, April 12, 2006 6:36 AM > >>>> >>> To: [email protected] > >>>> >>> Subject: Re: [hlcoders] gpGlobals->realtime > standing still > >>>> >>> > >>>> >>> Jay Stelly wrote: > >>>> >>> > What platform? (linux/win32)? On linux > realtime is just > >>>> >>> accumulating > >>>> >>> > changes from repeated calls to > gettimeofday() Have you compared > >>>> >>> > gpGlobals->realtime to the output of > Plat_FloatTime() ? > >>>> >>> Are they both > >>>> >>> > slow/stopped or just realtime? > >>>> >>> > > >>>> >>> > Has anyone else encountered this problem? > >>>> >>> > >>>> >>> ...also, what CPU (Intel or AMD)? Are you > running multiple > >>>> >>> cores and/or CPUs? I remember recently > reading about an AMD > >>>> >>> problem with multiple cores (or was it > multiple CPUs) where > >>>> >>> the RDTSC instruction's time wasn't > syncronized between > >>>> >>> CPUs/cores so when called once by code, it > would return the > >>>> >>> ticks from core 0, when called again, it > would return the > >>>> >>> ticks from core 1 (which could be > different). This would > >>>> >>> make the system appear to jump ahead in > time and/or go back > >>>> >>> in time. If HL2 is using RDTSC instead of > >>>> >>> QueryPerformanceCounter(), it could get odd > results on AMD > >>>> >>> multi-CPU systems. If memory serves > correctly, Windows > >>>> >>> forces QueryPerformanceCounter() to always > run on CPU 0, so > >>>> >>> you don't get any discrepancy between > calls. > >>>> >>> > >>>> >>> -- > >>>> >>> Jeffrey "botman" Broome > >>>> >>> > >>>> >>> > _______________________________________________ > >>>> >>> To unsubscribe, edit your list preferences, > or view the list > >>>> >>> archives, please visit: > >>>> >>> > http://list.valvesoftware.com/mailman/listinfo/hlcoders > >>>> >>> > >>>> >>> > >>>> >> > >>>> > >>_______________________________________________ > >>>> >>To unsubscribe, edit your list preferences, > or view the > >>>> list archives, please visit: > >>>> > >>http://list.valvesoftware.com/mailman/listinfo/hlcoders > >>>> > > >>>> > >_______________________________________________ > >>>> >To unsubscribe, edit your list preferences, or > view the list > >>>> archives, please visit: > >>>> > >http://list.valvesoftware.com/mailman/listinfo/hlcoders > >>>> > >>>> _______________________________________________ > >>>> To unsubscribe, edit your list preferences, or > view the list > >>>> archives, please visit: > >>>> > http://list.valvesoftware.com/mailman/listinfo/hlcoders > >>>> > >>>> > >>> > >>>_______________________________________________ > >>>To unsubscribe, edit your list preferences, or > view the list archives, > >>>please visit: > >>>http://list.valvesoftware.com/mailman/listinfo/hlcoders > >>> > >>> > >>>_______________________________________________ > >>>To unsubscribe, edit your list preferences, or > view the list archives, > >>please visit: > >>>http://list.valvesoftware.com/mailman/listinfo/hlcoders > >> > >>_______________________________________________ > >>To unsubscribe, edit your list preferences, or > view the list archives, > >>please visit: > >>http://list.valvesoftware.com/mailman/listinfo/hlcoders > >> > >> > >>_______________________________________________ > >>To unsubscribe, edit your list preferences, or > view the list archives, please visit: > >>http://list.valvesoftware.com/mailman/listinfo/hlcoders > > > >_______________________________________________ > >To unsubscribe, edit your list preferences, or view > the list archives, please visit: > >http://list.valvesoftware.com/mailman/listinfo/hlcoders > > _______________________________________________ > To unsubscribe, edit your list preferences, or view > the list archives, please visit: > http://list.valvesoftware.com/mailman/listinfo/hlcoders > > -------- My Website http://www.ammahls.com Lead Programer NightFall http://www.nightfallmod.net Developer of CST and ZHLT 3.0 http://www.zhlt.info Team Lead - Prime - http://www.nigredostudios.com __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders

