Quote:
Originally Posted by SamPlay
hi!
I am working on navigation system too, though with a different approach, so I am following this thread with interest.
I coded a bot from Podbot in the past;
As regards Podbot, as far as I remember, bot jumps were recorded from actual player jumps; the velocity at jump start is stored with the jump start navigation point; when the bot triggers the jump, the bot code forces its velocity to the stored one, which
- generates irrealistic ( violent ) direction changes if the bot direction does not match the player one at the time of recording.
- provides the right vertical and horizontal velocity components for a successful jump, though the bot velocity just before the forced setting might not have been appropriate ( this showed as irrealistic 'kicks' sometimes).
Hope this helps.
|
Hi SamPlay, thanks for the clarification. Now you mention the recorded jumps I do remember reading about those in some patch notes years ago, and it sounds like my memory of unrealistic velocity changes during jumps was correct.
I would be interested to hear about your navigation system if you're ready to share any details. Mine seems to work well in practice but it needs a lot of optimisation as it is quite inefficient in terms of the number of sectors generated and so on right now. Then again this machine is so old that even Half-Life struggles to run sometimes (seriously, switching on the flashlight sometimes drops the frame rate below 20!). I think it's starting to fail since it's a 2009 i3 (2nd generation) and should have no problem with HL at all.
In the meantime, I am experimenting with a different navigation approach whereby instead of generating a fixed set of waypoints from the sector system, it instead returns the sectors themselves and the bot navigates through them dynamically.
This has some advantages because the bot maintains spatial awareness, so dynamic obstacles such as moving platforms or other players can be taken into account on-the-fly without having to regenerate sections of the path. It also means its easier for the bot to determine if and how it can get back on the path if it falls, misses a jump or gets knocked around.
Will hopefully have some good results soon