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/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
>> >
>> >
>> --
>>
>> _______________________________________________
>> 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

Reply via email to