--
[ Picked text/plain from multipart/alternative ]
Thanks the help. Are you having the same problem with your bots or just
going out of your way to be helpful? Either way I appreciate it. On further
investigation, it appears the problem is due to the bots user commands going
through a different code path. AFAIK, we're supposed to be calling

RunPlayerMove(&cmd); and PostClientMessagesSent(); on the bot controller for
the bot. This works fine and all, but it bypasses the codepath that the
players usercommand takes, which is CBasePlayer::ProcessUsercmds

Since CBasePlayer::ProcessUsercmds doesn't get called for bots,
AllocCommandContext() doesn't get called for bots, and therefor why int
command_context_count = GetCommandContextCount(); is always 0 for bots(in
CBasePlayer::PhysicsSimulate), and its within that loop that
UpdateVPhysicsPosition is called.

Are there any special considerations to UpdateVPhysicsPosition being called?
Or can I safely call it every frame at the end of the bot block in
CPlayerInfo::RunPlayerMove. Think, first I'll see what happens if I call
ProcessUsercmds on the bot player directly. Calling UpdateVPhysics on my own
feels like a dirty hack. I'm hesitant about doing stuff like just calling
the function directly. IMO that's masking the symptoms of a potentially
bigger problem.

It looks like this is another problem that needs addressing if Valve gets
around to fixing the broken bot support, as that is the only way to feed
user commands from server plugins.

On 8/22/06, Paul Peloski <[EMAIL PROTECTED]> wrote:
>
> --
> [ Picked text/plain from multipart/alternative ]
> Okay, seems like the problem is in CBasePlayer::PhysicsSimulate, where the
> UpdateVPhysicsPosition is not being called for bots.
>
> PhysicsSimulate is the main place where UpdateVPhysicsPosition is called.
> There's also a wrapper for UpdateVPhysicsPosition called
> UpdatePhsyicsShadowToCurrentPosition that is called sometimes, for example
> when being pushed by your lift!
>
> So basically what's happening is that PhysicsSimulate is not updating
> physics shadow for every game frame, but some touch events are calling a
> function that moves the shadow into place. Whenever the shadow moves, it
> wakes up, but when its idle for too long (because PhysicsSimulate isnt
> updating it) it falls asleep.
>
> One way to fix this would be to override PhysicsSimulate in the bot's
> entity
> class and make sure that UpdateVPhsyicsPosition is called (just hack up
> the
> PhysicsSimulate from CBasePlayer so that it calls it under the right
> circumstances for your bots instead of actual players)
>
> I hope this helps. Fortress Forever is looking terrific these days, best
> of
> luck to you guys.
>
> Regards,
>
> Paul
> --
>
> _______________________________________________
> 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