11-12-2013, 09:19 AM
(11-11-2013, 02:43 PM)ymko Wrote: THESE ARE MY PERSONAL OPINIONS AND ARE NOT OPINIONS OF MINION CREATORS :)
I only speak from my personal experience with working with 3D.
1. Limit the rate at which the bot can turn to whatever your keyboard turn rate is, this makes for MUCH more natural looking changes in direction.
These direction changes are not seen by another player as so sharp, as far as I know.
2. Have the pathing define a path to the next object and then refine that path so that it has the minimal amount of sharp turns in it based on the keyboard turning rate above.
This can be done, although in doing so it will most likely require more CPU power.
Basically you could take a point before the turn and a point equal distance after the turn and smooth it out by getting an arc between those points :P
3.People naturally take the route to an object that requires the least amount of effort by both number of direction changes (primary), effort in the form of actions needing to be performed (Secondary), and total distance (Tertiary).
That would be a hard thing to do for a bot:)
4.People also pre-plan movement to an object through obstacles subconsciously, meaning they will always immediately travel in the direction they need to go to get around whatever the next obstacle is in their path. So as soon as you character clears one object, it should orient itself to go around the next one, not wait until it's there and then go around.
That could be done too, just that I'm not sure it's a viable thing to do, processing wise... Unless what you are saying is turn at the start instead of at the end :P
5. Finally, people turn faster when making large changes in direction and slower when making minor adjustments once they get close to their intended direction of travel. So making a 90-180 degree turn may look sharp at first it will slow down (taper off) as the player gets closer to their intended direction of travel.
What you are saying is this:
Say I'm going straight but my object of interest is 45 degrees(Initial) to the right a distance 100.
Distance 100: Character turns Initial * 0.8 +- 3 degrees, calculates left over degrees(Left).
Distance 75: Character turns Left * 0.9 +- 2, calculates left over degrees(Left)
Distance 50: Character turns Left +- 1
Distance 25: Character turns Left and is now oriented at the target...
Or basically add a degree variable which would change slightly as you get closer to the place and a little multiplier formula? :P
This sounds great but will not work in practice so well and will look like your bot is on drugs... Although this is probably how human movement placed into maths in it's simplest form would look like, as human's cant calculate exact degrees :P
1. I can spot another person utilizing a bot (be it minion/basa/viper) specifically because of the "instant" course corrections they make, takes less than a minute normally.
2. The program is already extremely light anyway, I don't see the issue with taking slightly more CPU to make the bot more resistant to detection due to observation.
3. This may be a bit excessive I will admit, but it's just a suggestion. While it would make movements more believable I can agree that the system would take some time to get working.
4. What I am saying is that every pathing navpoint should be checked along a straight line path to every other navpoint after that in the direction of travel, if one navpoint can "see" along a straight line to one that is 2 or 3 navpoints past the one directly after it, then those navpoints in between are eliminated. This will give you your true straight line path, which can then me modified slightly in order to add *minor* course corrections in random mode. This is to prevent the bot from running straight up to a boulder or rock it needs to go around, turning 90 degrees immediately, and orbiting around the boulder (or other object) as if it was moving by feeling the side of the boulder and not seeing the path around it.
5. Human's can't calculate exact degrees because they are not natural. A human CAN perceive extremely small changes in directional attitudes very well, as can almost all living creatures, because movement and balance is a very basic function of a living body. Whether you notice it or not, every single person on this planet without some kind of disability will make larger course corrections the further away from facing an object they are, and then once the object enters their field of view, will make smaller (and very exact) changes to their heading in order to align themselves with that target. The only inexact movement in the process is the single movement that brings the intended direction of travel into view and the only reason this happens is due to object recognition speeds, once you see your path... there is no inaccuracy. The easiest way to represent this would be as a sine wave that gets exponentially smaller the closer to looking directly at an object you are.
Thank you everyone for actually joining in the discussion, obviously I wouldn't even write these if I didn't already like the program. Just trying to help make a good thing better.