So far I've done 30% of the work on the generic profile and the 100% of the Impact hammer one.
The Impact hammer profile uses the CHARGE and HOLDBUTTON substates, which are the only ones that have been programmed so far.
- CHARGE: Approach or hunt enemy at close range (chosen by profile), use strafing and jumping as well.
This mode will also be used with Flak cannon, minigun, biorifle and pulse gun in the future.
- HOLDBUTTON: Hold fire while navigating the map, release upon sight of enemy or when unloading is imminent towards a safe location (avoids rocket suicide).
To be used by Rocket launcher and Bio rifle alt.
Weapon profiles can have up to 6 different firing modes + conditions, it is up to the maker to combine firing mode and conditions to make a decent behaviour.
Impact hammer for example has these 3 conditionals:
DISABLENORMAL > completely disables Botz old firing code <==> condition: ALWAYS.
HOLDBUTTON (5,10)> navigate through map holding fire, 5 to 10 is the timer to hold it <==> condition: NOENEMY, meaning, only when no enemy is seen)
CHARGE (50,0.2) > charge towards enemy, distance = 50 units, strafe factor = 0.2 (20%) <==> condition: ENEMYSIGHT (0,3000,0), min distance=0, max distnace=3000, max enemies around=0 (no limit).
Depending on how well these conditions are met, the Botz will enter one of these attacking states.
Botz also refrains from continuing an attacking state upong certain times and conditions, just as it will extend attacking states if has and advantage over his enemies.
ENEMYSIGHT condition will automatically change Botz's enemy to the most appropiate in terms of distance, when used in combination with a Sniper rifle (which will have a min distance setting), it should switch to an enemy further away.
This condition also makes it's associated attacking state more eligible if the Botz has more teammates around than enemies (untested yet).
So far Botz are now able to compete against UT Bots on Piston arena, problem is, Impact Hammer has non-player specific code that affects UT Bots and BotZ which is extended automatic range and aim when charging against and enemy.
I'd rather have the Aiming system on v7 as well but if I notice I can't have it finished within 7 days, I'll be releasing it anyways.
EDIT: Attaching screenshot.
- Mesh not loaded on client (add it's package on ServerPackages or exclude the player class that uses the mesh on the random generator)
- Botz not loaded as ServerPackages.
Excluding elements from the random BotZ generator:
Open BotzDefault.ini > find [FerBotz.FBotInfo]
Add/modify entries to prevent player classes/skins from being selected.
If you have too many classes to exclude, you might try adding Botz using the faction system.
Factions use default player classes as references.
You have these factions: Thunder_Crash, Dark_Phalanx, Blood_Reavers, Iron_Guard, The_Corrupt.
If you intend to add a very specific Botz type, simply type: MUTATE BOTZMENU, customize the new botz and click once on the (Agregar Botz) checkbox.
Working on LURE combat mode within the Biorifle profile.
BotZ now attempts to attract distant enemies when having the biorifle by dodging into unseeable locations, still can't properly make it fire or charge and release the alt till enemy shows up.
Dodging fully implemented as a general method in the shared combat movement code.
Maybe I'll have a release with a partial combat system finished, covering at least the worst used weapons.
So you have in mind; biorifle, razor, enforcer and pulse rifle? Also, I like how you have implanted the dodging with the biorifle. I had that idea in mind but wasn't sure if it is completely reasonable or possible. Will the weapon profiles determine the botz tactics so that they will know how to approach an opponent in specific situations? I use that tactic online all the time. I will tend to do specific moves or find areas that fit my need in order to be succesful or score a frag. If I am correct about the weapons profiles partially determing the botz tactics then the 2 most important weapons that I would focus on are the rocket launcher and the shock rifle. They are almost overpowered when we use them in specific ways, or certain opportunities. They are major game changers sometimes if you know how to use them. I am focusing on those two for a couple reasons. For other weapons such as the flak cannon the original bots are totally agressive making them vulnerable and really easy to kill if you have one of the 2 weapons that I have mentioned earlier. Flak Cannon still a very good weapon with which the original bots have one tactic and that is just to chase the enemy player. In online games players will find better ways to face the enemy. Botz could pursue the enemy if it is possible to do some medium to major damage depending on distance. Other ways they should look for better paths to meet with the enemy player.Higor wrote:covering at least the worst used weapons
BTW..The ideas that are just written in are personal opinions. I see that the weapon profiles play a major part that determines the botz behavior so I just want to throw in extra stuff to make them most realistic.
Full Impact hammer support
BioRifle TEST profile (doesn't have bio rain mode on enemies past obstacles)
Flak Cannon TEST profile (only has CHARGE and LURE modes)
Rotation correction hook has been disabled, expect to see botz firing in different directions than they're facing.
Agressiveness setting can't be chosen yet, so Botz is at default (normal).
All BotZ have high tactical ability by default, so expect excessive dodging on higher skilled enemies.
[The extension u has been deactivated and can no longer be displayed.]
BTW.. Give us a short update on that weapon profile that you have been working on.
The charge combat mode is only halfway done, they approach the enemy, but don't keep their distance (I did a workaround on both BioRifle and Flak).
And I'll be back on college for the week so expect an update on next Saturday.
I'm aware of the dodge stuff, will do something about that too.
I've always found a bit boring to continue on the same project or part of project from beginning to end so I tend to work on many fronts.
I've been doing some experiments with an aiming system, used inside a custom actor that rotates the viewport player without the player's command.
No, it's not an aimbot (shouldn't qualify as one, did make it work on ACE servers though...), all it does is locate a random pawn and make a human-like rotation to it, with some error as well, let's call it autonomous player for now.
Autonomous player has it's own half-assed weapon profile system (very generic, but has TRACKING and AQUISITION parameters) which should dictate a turning style, turning style determines speed, precision and when to hit fire if not hold it.
Some data extracted from the Autonomous player code:
var enum EAimingFlags
//Aim during aquisition?
var rotator StartAim;
var rotator TargetAim;
var float AimAlpha;
var float CurAimTime; //Total time turn will take
var bool bAimLeft; //Interpolation is made via substraction
var class<Weapon> WeaponClass;
var bool bZeroPing;
var int AmmoAmount;
var float WeaponWeight; //Dynamically set to determine if that weapon is the best in this situation
var float FiredAt; //Last time I fired, for checking whether I can fire again
var bool bTracker;
var bool bAltTracker;
var float SnipeFactor;
var float ProjSpeed; //0 means instant weapon
var float AltProjSpeed;
var WeapInfo Weapons;
//Enemy list, Ally list, flag carriers
var Pawn EL, AL;
var int iEL, iAL;
var int iEF, iAF;
function int AllyCount( float Distance, optional bool bInSight)
function int EnemyCount( float Distance, optional bool bInSight)
//4 acquire modes:
//1 = Quick, seek enemy, lowest accuracy (projectile weapons) (30% faster)
//2 = Precalculate movement, then acquire (lower skill or tracking weapon) (tracking is 15% faster)
//3 = 2 Precalculations, then acquire (higher skill + instant fire, or highest skill + instant fire or tracker)
//4 = 3 Precalculations, exclusive to highest skill + instant fire weapons
function AcquirePlayer( pawn P, optional float ScaleSpeed,optional vector vStart)
function float AcquireTime( vector TargetLoc, optional vector OriginLoc, optional float ScaleSpeed, optional int TurnDegrees)
function ResetAbilities( optional float ExtraMobility, optional float ExtraFirepower) //This should make a BotZ auto-adjust it's abilities
//here we set the turning parameters
//Origin loc is a way to turn towards something taking into account a different position, useful for pre-sniping and advanced translocating
function SetTurnTo( EAimingFlags TurnType, vector TargetLoc, optional vector OriginLoc, optional float ScaleSpeed)
//But we split it
//We must reach 100 so
//0.0 - 0.3 = 30% (speed 100%)
//0.3 - 0.6 = 40% (speed 133%)
//0.6 - 0.9 = 25% (speed 83%)
//0.9 - 1.0 = 5% //remaining 5% (speed 50%)
//Used for an individual turn
//For turn to be complete, turn alpha must reach or exceed 1.0 (apply fps error margin?)
function BotFacePosition( float Delta) //This is a delta function, turns are processed every frame here
All these have already been coded and work, now porting these methods to BotZ might prove a challenge at first but it works as safe enviroment to try new stuff without breaking BotZ.
It may take a while to put some of this stuff together so I wouldn't expect an update soon, I may release another test FerBotz.u with the shock combo profile this or next weekend.
- Posts: 958
- Joined: Wed Mar 31, 2010 9:02 pm
- Personal rank: I am quite rank.
- Location: MrLoathsome fell out of the world!
I am still waiting for the "Final" version so I can test them out with some of the junk I have been messing with.
*Edit. Am actually waiting for myself to get more done so I can have time to test this with my junk....
If I am comprehending this correctly then from my though you created an actor that points to a random pawn. Now what confuses me is the way you are planning on making this work. Does this work when a bot has an enemy in sight or is it just like a combination of wallhack + aimbot point to enemy? Yes, I understand that it is not ment to be an aimbot and that it should not be qualified as one. Will this basically result in bot looking at the wall while entering the battle area? This is a decent idea easily seen in human controlled players. The thought that bothers me is that botz could be revealing enemy location. Setting special conditions for botz that could trigger that aiming function may be a good idea?Higor wrote:No, it's not an aimbot (shouldn't qualify as one, did make it work on ACE servers though...), all it does is locate a random pawn and make a human-like rotation to it, with some error as well, let's call it autonomous player for now.
BTW... Will this "Automous Player" contribute to fixing that bug with botz pointing forward while the weapons projectile is coming from their back?
Gets me thinking on how many betas you are planning to release.MrLoathsome wrote:waiting for the "Final" version
The so many aiming types show in the previous posts are tags for these turns, the idea is to control the BotZ's turning by simply choosing a turn tag depending on a situation, the SetTurnTo method will generate a new turning direction based on the given aiming type tag given, it will also tell how long this turn lasts.
So far the only AIM tag that has been coded and tested is the acquisition one, which is an inaccurate quick turn towards an enemy that appears on screen, which will be difficulty scaled in terms of accuracy and movement physics predicion, so a 100% acquisition ability BotZ can make the turn to end up aiming directly at where a moving enemy is going.
Examples on how aiming tags should work:
Navigation > Slow turn mostly used in running forward, can be interrupted.
Special Navigation > Should be used in translocation chain or any locomotion method by aiming before executing a special action.
Suspect Enemy > Turns in a certain direction while moving or camping, likely triggered by sounds. (no enemy set here, but can contribute to it)
Acquire Enemy > Turns to a new enemy if he shows up onscreen or close to the crosshair, firing upon ending acquisition is planned for highest skilled BotZ to simulate InstaGib play.
Track Enemy > Constant effort to keep an enemy or desired calculated point (projectiles?) in the crosshair, to be used by pulseguns and miniguns, this kind of turn will have little horizontal variance but gives more room to fool the Botz by making quick strafes.
Pinpoint Enemy > Botz sees or notices an enemy but not directly in sight, makes a very quick turn to a possible short direction to then proceed with an acquisition turn.
Check on Other > Looks into non-static objects making an action, useful for looking at doors or lifts if they start opening, also looks towards teammates or other enemies during battle (can perform enemy change here).
Look around > Navigating by strafing and looking into points of interests (this is already done in the old aim method)
Camping > Aims at points of entrance into a room by checking visible paths unconnected to non-visible paths, (this routine already exists in the LURE combat style to hide from an enemy).
Sniping > Turns are slow, perception by sight is reduced, weapons which profile says it has sniping bonus get a tremendous accuracy advantage on distance.
Whether a bot looks into a wall entering a battle area will entirely depend on the area and it's surrounding objects.
A rocket explosion, a door, or firing sounds should divert a Botz that's not firing.
Why am I bothering in such a complicated aiming system?
First, I strongly oppose peripheral vision, the BotZ doesn't have none, if there's a reason they have godlike perception is because of their hearing which hasn't been precisely worked on, in short, you could sneak up on a camping BotZ close enough for a flak kill if you get a chance. Why are chances reduced? Because BotZ looks around a lot during camping and navigation.
Second, it has already been done, this aiming system (precisely the aiming tags) is based on CS's PODBot aiming tags which are also chained (sort of) and perform lots of turns that aren't exactly combat based.
If a mid-range player can't drop into a 10 man Botz DM map and compete for the leader at any skill level then they will see limited public usage. Almost every server has the attitude that bots are filler and only slightly better than cannon fodder. If you tip that in the other direction by skilling the botz to the point they can be unbeatable (which you and I know is NOT very hard to do) then players will get frustrated very fast since no one likes to lose to a computer, ever.
This is just opinion and not meant to down any of the work you are doing. I know several guys that love to poke around in the bot AI because it interests them greatly and I'm glad you are enjoying this. I'd just be extra careful not to make anything that can be abused and also keep in mind that "How do I remove Loque from the botlist" is a very common server setup question for a reason.
Now, in my opinion, the Botz's skill can't be scaled down that much, this aiming system is what will dumb it down appropiately, as well as it could simulate a pro player.