Hi All- I'm working through the Visual Studio 2005 SDK work. So once I'm done making sure that it works using both 2003 and 2005 I will put it out. Probably some time next week.
With regard to the lag compensation - that code will be back in the SDK with the next release. -Mike -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Nick Sent: Tuesday, October 10, 2006 1:13 PM To: [email protected] Subject: Re: [hlcoders] poorer prediction with new SDK? I wonder when the next sdk code update will be released? On 10/7/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Well I've added back the lag compensation calls in player_command.cpp that the old SDK had. Seemingly 100% of the players that were complaining before now agree that everything is much better (as it was prior to the SDK update). > > At 2006/09/24 08:40 AM, Robbie Groenewoudt wrote: > >-- > >[ Picked text/plain from multipart/alternative ] Ah yes, you are > >right. Interpolation plays a roll. > > > >Are there any other situations that needs lagcompensation? Also, if > >you do it in player_command, player's physics position also gets > >updated with the lagcompensated-position, which may give funny results... > > > >On 9/23/06, Paul Peloski <[EMAIL PROTECTED]> wrote: > >> > >> -- > >> [ Picked text/plain from multipart/alternative ] I have to > >> disagree. Right in the StartLagCompensation function you will see > >> that the amount of time to back track the enemy player is > >> calculated like > >> this: > >> > >> back track time = cmd transit time (net. latency) + cl_interp value > >> > >> Check the first 10-15 lines of StartLagCompensation to see that in > >> action (note that player->m_fLerpTime is elswhere set to the > >> player's value for > >> cl_interp.) cl_interp is the determining factor in how far behind > >> the client renders an entity vs. the servers position data. > >> > >> The amount the player is moved back is not simply the players ping, > >> its a composite of how far behind their rendering is (cl_interp) > >> and how long it took for their ucmd to reach the server. > >> > >> And yes, like I said you can do it in FireBullets if you use > >> IsPlayer and cast the entity to CBasePlayer, but you can also do it > >> in RunCommand and catch other situations where you use tracelines > >> but are not necessarily calling FireBullets. > >> > >> On 9/23/06, Robbie Groenewoudt <[EMAIL PROTECTED]> wrote: > >> > > >> > -- > >> > [ Picked text/plain from multipart/alternative ] In fact, I > >> > already moved it to CBaseEntity::FireBullets and I tested it and > >> > it works. player_command.cpp sets the last usercmd in the player > >> > class, which you can get via CBasePlayer::GetLastUserCommand(). > >> > Also, func_tank gives the player as an argument to FireBullets() > >> > so in the class itself > >> I > >> > do > >> > a pAttacker->IsPlayer() check, which works for everything. > >> > > >> > You are forgetting something. It's ping. And if you have a ping > >> > of > >> 250ms, > >> > you don't hit anything because the location of players are > >> > different > >> 250ms > >> > ago. Lagcompensation fixes this by moving all other players, that > >> > the player could shoot, back in time (amount is equivalent to the > >> > player's ping ) > >> and > >> > then execute the tracelines to check if a bullet has hit someone. > >> > Interpolation has nothing to do with lagcompensation. > >> > > >> > On 9/23/06, Paul Peloski <[EMAIL PROTECTED]> wrote: > >> > > > >> > > -- > >> > > [ Picked text/plain from multipart/alternative ] What Teddy > >> > > said is probably the best place. CBaseEntity::FireBullets > >> is > >> > > probably not good because StartLagCompensation takes > >> > > CBasePlayer and CUserCmd as parameters so passing the this > >> > > pointer from within CBaseEntity::FireBullets won't compile, > >> > > you'd have to wrap it in IsPlayer(), so there's no benefit to > >> > > func_tank. > >> > > > >> > > Garry's right, the lag compensation moves the player back to > >> > > match > >> what > >> > > the > >> > > client would have been shooting at since the client is behind > >> > > the > >> > server. > >> > > Client rendering is always kept (cl_interp 0.1, ~100 ms) behind > >> > > the > >> > server > >> > > so that the client can keep enough data ahead of the actual > >> > > rendering > >> to > >> > > smoothly interpolate movement. > >> > > > >> > > You can get a really good idea what's going on by adding a bot, > >> turning > >> > on > >> > > > >> > > sv_showhitboxes 2 > >> > > sv_showlagcompensation 1 > >> > > host_timescale 0.1 > >> > > > >> > > Now you should see some colorful hitboxes that are the servers > >> position, > >> > > the > >> > > rendered enemy player is the clients which lags behind those > >> > > hitboxes because of cl_interp, and when you shoot at the bot, > >> > > you should see a bunch of blue hitboxes which are the lag > >> > > compensated hitboxes that are > >> > actually > >> > > used when tracing your shots. In slowmo you can see that the > >> > > blue > >> boxes > >> > > overlap the client-rendered player pretty well. > >> > > > >> > > Hope that helps, BK & Robbie. > >> > > > >> > > On 9/23/06, Robbie Groenewoudt <[EMAIL PROTECTED]> wrote: > >> > > > > >> > > > -- > >> > > > [ Picked text/plain from multipart/alternative ] Let me > >> > > > rephrase that last. Maybe the best place to lagcompensate > >> would > >> > > be > >> > > > CBaseEntity:FireBullets(). Then you are sure no other things > >> > > > get > >> > messed > >> > > > up... (there's some other stuff in CBasePlayer::PostThink > >> > > > that may > >> not > >> > > > like > >> > > > changing positions). > >> > > > > >> > > > Also, it's possible that the func_tank has no lagcompensation > >> > > > at the moment (I'm not sure) so moving it to FireBullets() > >> > > > would do > >> lagcompensation > >> > > for > >> > > > everything that fires bullets ;) I doubt that it's called > >> > > > more then > >> > once > >> > > > in > >> > > > a frame so moving it shouldn't be harmfull. > >> > > > > >> > > > Just thinking out loud here... Please tell me if I am wrong > >> > > > :) > >> > > > > >> > > > On 9/23/06, Robbie Groenewoudt <[EMAIL PROTECTED]> wrote: > >> > > > > > >> > > > > FX_FireBullets() calls CSDKPlayer::FireBullet() and that's > >> > > > > where > >> the > >> > > > > bullet-code is done. > >> > > > > > >> > > > > However, with mods based on HL2DM, it's a bit different. > >> > > > > CBasePlayer::PostThink() calls CBasePlayer::ItemPostFrame() > >> > > > > and > >> that > >> > > > calls > >> > > > > the ItemPostFrame() of the weapon.. And that calls via via > >> > > > > the > >> > > function > >> > > > > CBaseEntity::FireBullets(), which is the equivalent of > >> > > > > CSDKPlayer::FireBullet(). > >> > > > > > >> > > > > So lagcompensation in HL2DM mods should be done in > >> > > > > PostThink() or ItemPostFrame(). > >> > > > > > >> > > > > On 9/23/06, [EMAIL PROTECTED] < > >> > > > [EMAIL PROTECTED]> > >> > > > > wrote: > >> > > > > > > >> > > > > > Ah I think I'm starting to see how the pieces fit > >> > > > > > together > >> > then. I > >> > > > was > >> > > > > > thrown off by all the FX code, thinking it was a > >> > > > > > client-side > >> > > function, > >> > > > but > >> > > > > > there's a surprisingly useful comment at the top of > >> > FX_FireBullets: > >> > > > > > > >> > > > > > // This runs on both the client and the server. > >> > > > > > // On the server, it only does the damage calculations. > >> > > > > > // On the client, it does all the effects. > >> > > > > > > >> > > > > > So client-rendering prediction is completely unrelated to > >> > > > > > all of > >> > > this. > >> > > > > > > >> > > > > > It looks like bullet weapons should still be fine (which > >> > > > > > is what > >> I > >> > > > > > tested previously, and they did seem fine) but that > >> > > > > > bludgeon > >> > weapons > >> > > > in the > >> > > > > > SDK are no broken with respect to lag-compensated hit > >> > > detection. I'll > >> > > > look > >> > > > > > into that more. > >> > > > > > > >> > > > > > At 2006/09/23 04:18 AM, Garry Newman wrote: > >> > > > > > >-- > >> > > > > > >[ Picked text/plain from multipart/alternative ] I think > >> > > > > > >it's the other way around. > >> > > > > > > > >> > > > > > >The server is moving the other players back to where it > >> > > > > > >thinks > >> > they > >> > > > > > were > >> > > > > > >when you fired the bullets, then tracing and seeing if > >> > > > > > >you hit > >> > > then, > >> > > > > > then > >> > > > > > >moving them back. > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > >On 9/23/06, [EMAIL PROTECTED] < > >> > > > > > [EMAIL PROTECTED]> > >> > > > > > >wrote: > >> > > > > > >> > >> > > > > > >> Forgive my perhaps naive question, but if you only lag > >> > compensate > >> > > > > > during > >> > > > > > >> bullet firing, and not the rest of the time, won't you > >> > > > > > >> be > >> > > rendering > >> > > > > > your > >> > > > > > >> opponents on screen in the wrong position? > >> > > > > > >> > >> > > > > > >> At 2006/09/22 06:48 PM, Teddy wrote: > >> > > > > > >> >In the new SDK, StartLagCompensation happens on line > >> > > > > > >> >#193 of sdk_fx_shared.cpp, during the FX_FireBullets() function. > >> It's > >> > > done > >> > > > > > >> >here so it doesn't effect player movement (aka sticky > >> > > > > > >> >player collisions). The problem with this is if your > >> > > > > > >> >weapon needs > >> > > > unlagged > >> > > > > > >> >positions for anything other than firing bullets, it > >> > > > > > >> >won't > >> > work. > >> > > > > > >> > > >> > > > > > >> >I would recommend you instead StartLagCompensation > >> > > > > > >> >before RunPostThink( player ) in the > >> > > > > > >> >CPlayerMove::RunCommand() > >> > > function. > >> > > > > > >> > > >> > > > > > >> >On 9/23/06, Robbie Groenewoudt < [EMAIL PROTECTED]> wrote: > >> > > > > > >> >>-- > >> > > > > > >> >>[ Picked text/plain from multipart/alternative ] > >> > > > > > >> >>Damn, you are right. There's no > >> > > > > > >> >>StartLagCompensation-call > >> in > >> > > the > >> > > > > > entire > >> > > > > > >> >>code. I don't see any reason why it isn't because it > >> > > > > > >> >>worked > >> > > good. > >> > > > > > In the > >> > > > > > >> new > >> > > > > > >> >>SDK-code the lagcompensation-code is even > >> > > > > > >> >>expended... It's > >> a > >> > > bug > >> > > > I > >> > > > > > >> guess.... > >> > > > > > >> >> > >> > > > > > >> >>On 9/22/06, Paul Peloski <[EMAIL PROTECTED]> wrote: > >> > > > > > >> >>> > >> > > > > > >> >>> -- > >> > > > > > >> >>> [ Picked text/plain from multipart/alternative ] > >> > > > > > >> >>> I'm at home now, sv_showlagcompensation the right > >> > > > > > >> >>> name, > >> > it's > >> > > > > > >> implemented > >> > > > > > >> >>> in > >> > > > > > >> >>> player_lagcompensation.cpp with the following > >> description: > >> > > > "Show > >> > > > > > lag > >> > > > > > >> >>> compensated hitboxes whenever a player is lag > >> compensated." > >> > > > > > >> >>> > >> > > > > > >> >>> If you compare the file player_command.cpp between > >> > > > > > >> >>> the > >> old > >> > > SDK > >> > > > > > source > >> > > > > > >> and > >> > > > > > >> >>> the Aug 11 source, you should notice that the call > >> > > > > > >> >>> to > >> > > > > > >> StartLagCompensation > >> > > > > > >> >>> is missing from CPlayerMove::StartCommand in > >> > > player_command.cpp > >> > > > > > >> >>> > >> > > > > > >> >>> I wondered about this when I merged the new SDK, > >> > > > > > >> >>> and > >> > decided > >> > > to > >> > > > > > keep > >> > > > > > >> the > >> > > > > > >> >>> startLagCompensation for our mod and haven't had > >> > > > > > >> >>> any > >> > problems > >> > > > > > with > >> > > > > > >> shots > >> > > > > > >> >>> registering. Maybe this is a bug in the new SDK? > >> > > > > > >> >>> > >> > > > > > >> >>> On 9/22/06, [EMAIL PROTECTED] < > >> > > > > > >> [EMAIL PROTECTED] > >> > > > > > >> >>> > > >> > > > > > >> >>> wrote: > >> > > > > > >> >>> > > >> > > > > > >> >>> > Closest I see is player_showpredictedposition, > >> > > > > > >> >>> > but it > >> > > doesn't > >> > > > > > seem > >> > > > > > >> to > >> > > > > > >> >>> > visually change anything at all. > >> > > > > > >> >>> > > >> > > > > > >> >>> > At 2006/09/21 08:41 AM, Paul Peloski wrote: > >> > > > > > >> >>> > >-- > >> > > > > > >> >>> > >[ Picked text/plain from multipart/alternative > >> > > > > > >> >>> > >] Check that the lag compensation system is > >> > > > > > >> >>> > >still being > >> > used > >> > > > to > >> > > > > > move > >> > > > > > >> >>> > entities > >> > > > > > >> >>> > >when a player is shooting, IIRC you can use > >> > > > > > sv_showlagcompensation > >> > > > > > >> 1 or > >> > > > > > >> >>> > >something similar to show some hitboxes when a > >> > > > > > >> >>> > >player > >> is > >> > > > being > >> > > > > > lag > >> > > > > > >> >>> > >compensated (ie, you have to be shooting at him > >> > > > > > >> >>> > >and > >> lag > >> > > > > > >> compensation > >> > > > > > >> >>> has > >> > > > > > >> >>> > to > >> > > > > > >> >>> > >be turned on, etc.) I remember the > >> > > > > > >> >>> lagcompensation->StartLagCompensation > >> > > > > > >> >>> > was > >> > > > > > >> >>> > >missing in the player command code on the > >> > > > > > >> >>> > >server side > >> > with > >> > > > > > regard > >> > > > > > >> to > >> > > > > > >> >>> the > >> > > > > > >> >>> > lag > >> > > > > > >> >>> > >compensation system when I first merged with > >> > > > > > >> >>> > >the new > >> > SDK. > >> > > > > > >> >>> > > > >> > > > > > >> >>> > >Sorry I can't be more specific, I'm at work and > >> > > > > > >> >>> > >don't > >> > have > >> > > > > > access > >> > > > > > >> to > >> > > > > > >> >>> the > >> > > > > > >> >>> > SDK > >> > > > > > >> >>> > >right now. > >> > > > > > >> >>> > > > >> > > > > > >> >>> > >On 9/21/06, [EMAIL PROTECTED] < > >> > > > > > >> >>> > [EMAIL PROTECTED]> > >> > > > > > >> >>> > >wrote: > >> > > > > > >> >>> > >> > >> > > > > > >> >>> > >> I'm getting lots of complaints from my user > >> > > > > > >> >>> > >> base > >> that, > >> > > > > > following > >> > > > > > >> the > >> > > > > > >> >>> > SDK > >> > > > > > >> >>> > >> update, lag prediction has gotten worse. Has > >> > > > > > >> >>> > >> anyone > >> > > else > >> > > > > > >> experienced > >> > > > > > >> >>> > >> this? I haven't really experienced much of a > >> change, > >> > > but > >> > > > > > then I > >> > > > > > >> >>> don't > >> > > > > > >> >>> > have > >> > > > > > >> >>> > >> as large of a ping to any of my mod's servers > >> > > > > > >> >>> > >> as > >> some > >> > of > >> > > > my > >> > > > > > users > >> > > > > > >> do. > >> > > > > > >> >>> > >> > >> > > > > > >> >>> > >> After receiving complaints a few days ago I > >> > > > > > >> >>> > >> reviewed > >> > SDK > >> > > > > > changes > >> > > > > > >> and > >> > > > > > >> >>> > >> noticed massive amounts of code changes > >> > > > > > >> >>> > >> around > >> > > > > > prediction. But > >> > > > > > >> most > >> > > > > > >> >>> of > >> > > > > > >> >>> > it > >> > > > > > >> >>> > >> seems to be centered around the creation of a > >> > seemingly > >> > > > > > unused > >> > > > > > >> and > >> > > > > > >> >>> > pointless > >> > > > > > >> >>> > >> NO_ENTITY_PREDICTION define to segregate out > >> > > > > > >> >>> > >> the > >> > > > prediction > >> > > > > > >> >>> > code. Maybe > >> > > > > > >> >>> > >> it's used by Valve for debugging or something? > >> > > > > > >> >>> > >> > >> > > > > > >> >>> > >> It's unclear whether any behavioral changes > >> > > > > > >> >>> > >> exist - > >> > > anyone > >> > > > > > found > >> > > > > > >> >>> > evidence > >> > > > > > >> >>> > >> of any? Unfortunately we got a years worth > >> > > > > > >> >>> > >> of SDK > >> > code > >> > > > > > thrash in > >> > > > > > >> one > >> > > > > > >> >>> > patch, > >> > > > > > >> >>> > >> so it's a bit much to try to code review. > >> > > > > > >> >>> > >> > >> > > > > > >> >>> > >> -bk > >> > > > > > >> >>> > >> > >> > > > > > >> >>> > >> _____________________________________________ > >> > > > > > >> >>> > >> __ 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/h > >> > > > > > >> >>> > lcoders > >> > > > > > >> >>> > > >> > > > > > >> >>> > > >> > > > > > >> >>> -- > >> > > > > > >> >>> > >> > > > > > >> >>> _______________________________________________ > >> > > > > > >> >>> To unsubscribe, edit your list preferences, or > >> > > > > > >> >>> view the > >> > list > >> > > > > > archives, > >> > > > > > >> >>> please visit: > >> > > > > > >> >>> http://list.valvesoftware.com/mailman/listinfo/hlc > >> > > > > > >> >>> oders > >> > > > > > >> >>> > >> > > > > > >> >>> > >> > > > > > >> >>-- > >> > > > > > >> >> > >> > > > > > >> >>_______________________________________________ > >> > > > > > >> >>To unsubscribe, edit your list preferences, or view > >> > > > > > >> >>the > >> list > >> > > > > > archives, > >> > > > > > >> please visit: > >> > > > > > >> >>http://list.valvesoftware.com/mailman/listinfo/hlcod > >> > > > > > >> >>ers > >> > > > > > >> >> > >> > > > > > >> > > >> > > > > > >> >_______________________________________________ > >> > > > > > >> >To unsubscribe, edit your list preferences, or view > >> > > > > > >> >the list > >> > > > > > archives, > >> > > > > > >> please visit: > >> > > > > > >> >http://list.valvesoftware.com/mailman/listinfo/hlcode > >> > > > > > >> >rs > >> > > > > > >> > >> > > > > > >> _______________________________________________ > >> > > > > > >> To unsubscribe, edit your list preferences, or view > >> > > > > > >> the list > >> > > > > > archives, > >> > > > > > >> please visit: > >> > > > > > >> http://list.valvesoftware.com/mailman/listinfo/hlcoder > >> > > > > > >> s > >> > > > > > >> > >> > > > > > >> > >> > > > > > >-- > >> > > > > > > > >> > > > > > >_______________________________________________ > >> > > > > > >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

