@CoZ, Uman, et. al.
Quote: "This brings me to my next point concerning the AI. Whilst testing a short level using Bond 1's containment room segment, the allies on my team (Aiko shotgun), seemed to be able to pass through walls instead of passing through the door (Yes, the door was labled "door" to fit in with the pathfinding system)"
Was the door off-center to the segment? The current system puts the door pathfinding spot dead-center in the segment it's punched through. It currently takes no account of if the actual opening is off-set to the left or right and will cause the character to blow through the player can't traverse such as the MP3(I think) double doors. Hopefully there will be a way to set an offset in the future.
Quote: "My 3rd and final point regarding the AI (this may seem rather harsh considering the work that has been put in by all involved), is thwe fact that I'm sure that Dark AI in capable of so much more, but it's just not being used correctly. Frequently during tests, I encounter the enemies/allies staring at walls during combat or looking the other way until hit. This coupled with the fact that during combat, no sense of urgency is seen from the enemies..they seem to walk slowly towards you shooting instead of perhaps running for cover or moving quickly."
In truth, the main-AI sample script included with the Betas is about 2 months old or more and at the time we were still learning how to get the results we desired via FPI. Internal-use scripts and scripts which were included in the DAI demo maps are, IMO much better than the scripts released with the betas. Initially, upon discovery of this I asked Lee about it due to my concerns that the old scripts are slower to react, don't clear targets correctly and don't run. His answer was that more scripts are to be included as things progress to incrementally get the community used to the new system. After seeing numerous posts from users not knowing where to assign the main AI script or having issue with the appear scripts I have to agree with his wisdom here!
Quote: "I'm not taking away from the work Lee and Hockeykid have put into this...they have done a fantastic job, but I feel there is alot more to be squeezed out of the Dark AI system to make it truly special and terrifying for the player."
There
IS a lot more that can be squeezed out. A LOT. The situation that must be understood is that DAI is HIGHLY scriptable and NEEDS to be scripted to a specific game/level for best results. Creating good scripts generic scripts with DAI is about as impossible as creating good generic scripts with the old system. DAI can be directed to respond to sight, sound, being called by ally teams and such in order to get busy. The system is incredibly robust and is essentially forced to be dumbed down by virtue of generic scripting. It should also be known that it's possible to crush framerate or worse by flooding certian subsystems of DAI. It's going to take some time to see DAI for what it's really capable of as there is a bit of a learning curve to it. For those who already have mastery of FPI, the curve should not be much of a hold-back and you should be able to create some really excellent scenarios. There have been dozens of new FPI instructions added specifically for the DAI system. I've listed them before but here they are again:
Dark AI FPI:
addaiteam=X (action) x= the team number (1-20 range cap). Team 1 is defaulted to the player. Can be called at any time to change teams.
aiteam=X (condition) x= team number defined by addaiteam=x
aicallteam=x (action) x= range of call broadcast from entity
aicalled=x (condition) x=1/0
airespondtocall (action) AI moves to location where aicallteam last heard
aiplrcallteam=x (action) x= range of call broadcast from player
aicalledbyplr=x (condition) x=1/0
airespondtoplrcall (action) AI moves to location where aiplrcallteam last heard
aiaddally=X Y|Y|Y|Y|Y (action - faction control); Y= DAI Team(s) to add as allies to the DAI team X is equal to. Allied teams share ai calls.
aiaddenemy=X Y|Y|Y|Y|Y (action - faction control); Y= DAI Team(s) to add as enemies to the DAI team X is equal to. Enemy teams are targetable.
aiaddneutral=X Y|Y|Y|Y|Y (action - faction control); Y= DAI Team(s) to add as neutral to the DAI team X is equal to. Neutral teams are ignored.
aiautofactionoff=x (action); if x=1 automatic faction disposition reciprocity is disabled for the above actions allowing asymetric disposition.
example of basic team assignments:
Team 1: Player controllable ally (Team 1 is always the player team)
Team 2: Enemy
Team 3: Neutral
Team 4: Non-controlable Player ally
Team 5: Indescriminate Enemy
ducking=x (condition); x=1 is true if DAI is ducking, x=0 is true if DAI is not ducking.
strafingleft=x (condition); x=1 is true if DAI is strafing left, x=0 is true if DAI is not strafing left.
strafingright=x (condition); x=1 is true if DAI is strafing right, x=0 is true if DAI is not strafing right.
movingforwards=x (condition); x=1 is true if DAI is moving forewards, x=0 is true if DAI is not moving forewards (used mainly for setting animations).
movingbackwards=x (condition); x=1 is true if DAI is moving backwards, x=0 is true if DAI is not moving backwards (used mainly for setting animations).
idle=x (condition); x=1 is true if DAI is not moving, x=0 is true if DAI is moving (used mainly for setting animations).
aicanshoot=x (condition); x=1 is true if DAI can see an enemy, x=0 is true if DAI can not see an enemy.
aisettarget (action); instruct the AI to target an enemy team member.
AIONPOINT=X (condition) x=is the points id number - this will check if the entity is on the point (named by x)
AIGOTOPOINT=X (action) this will make the entity go from its current position to the point specified by x (to create a point use aiaddpoint=x) this path will avoid any obstacles
AIADDPOINT=X (action) x=is the points id number - this will create a point to be used with other ai point commands
ISDARKAI=X (condition) which is true if the entity has been loaded into the Dark AI system via ADDAITEAM FPI
setaiactive=x (action); if x=1 DAI is activated, if x-0 DAI is deactivated. Use mostly for pausing DAI animation override when reloading, etc.
AIACTION=X (condition) x=0 if idle; x=1 if attacking; x=2 if in cover; x=3 if retreating
AIFOLLOWPLR=X (action) if set to 1 this will allow AI ally entities to follow the player if set to 0 the AI ally will stop following
AIMOVERANDOM (action) to allow AI entities to move about randomly (must be looped or entity will stop moving after a while)
AICONDSOUNDFINISHED to allow sequence of WAV sounds to be played inside FPI scripts
aiheardsound=x (condition); x=unit range for DAI to listen for sounds (default 700 if no =x given)
aimovetosound (action);
aiatcover=x (condition); x=1 if in cover, x=0 if exposed
aimovetotarget (action)
aimovetocover=x (action)
aistop (action)
aiusemelee=x (action) if x=1 is given, blood shows
aisetmeleedamage=x (action)
aitargetdistwithin=x (condition)
aitargetdistfurther=x (condition)
aisetspeed=x (action) sets the move speed for the entity to the value of x
airotatetotarget (action) AI rotates to face target
airotatetosound (action) AI rotates to face sound
healthgreater=x (condition); x=entity health
Quote: " As a suggestion, I would of thought it would of been benificial to rid/improve the "view cone angle" system since that also causes horrible moments of stupidity with the AI (such as them not seeing you until your on top of them, or you targeting them when their hiding behind cover, but they still can't see you)"
This is a prime example of the AI not being scripted to properly clear targets. Usually when you're right in front of an enemy, and they don't see you it's often because the AI is still targeting someone else and hasn't cleared that target once he's lost sight of it. Another possibility is that he simply isn't being told to actively look for new targets. The view cone system is actually a lot better now (though I would recommend setting it to a range that approximates the AI's peripheral view) because it is now able to be augmented by listening to sounds and rotating or moving to them instead of relying on sight alone. This allows for a much greater range of enemy types; You can have AI which are nearly blind which track mostly on sound alone and you can have enemies which track only by sight. Imagine the added depth of gameplay this adds when mixing enemy types. You can have a scenario like a guard dog that is highly sensitive to sound searching out suspicious sounds it hears and upon making visual contact with an enemy it calls it's handler (who is a heavily armored dude with limited view cone and hearing) to come to that location. This is totally possible in the current system!
Quote: "I presume which is always a bad thing that the current level of DARK AI behaviour is somewhat of a basic start point in this further development of FPSC and that the AI is or will be extensible by TGC and the end user and not fixed in source. That it will be extensible via further updates by TGC or through the use of user developed .fpi scripting and or the editor properties dialogue box for an AI entity."
This is 100% correct. Very little of the DAI system is shielded from tinkering for better (its incredibly scriptable) and worse (Non-scripters will have difficulty with it). IMO, the VERY best way to use DAI is not to have it all in the main script as the sample script shows. Its much better to seperate main and shoot AI for flexibility and control. Since you're already an FPI master, it should take little time before you're writing really amazing DAI script designed for your game. It's safe to say that default DAI provided will be about as universally usable as strafe.fpi or something. Which is to say it will work for beginners but anyone who has been around a while will demand more and know that a script properly tailored for the level design it's running in will make all the difference.
Quote: "For example as you have pointed out in an outdoor area I use for testing purposes with a large number of enemy AI it is certainly possible to kill them all easily without even getting anywhere near them as they have no idea (cant see the player) you exist if not near them. Neither will they shoot first at the player from a distance of course as they are unaware of your existence (by default) When they do attack their AI response intelligence and animation sequences/behaviours are very limited, by and large providing somewhat static targets easily killed. "
This is likely because their not being instructed to target you, their detection ranges are set too short or the range is extreme to the point their FPI isn't being processed. DAI isn't designed to cheat so usually if they don't do something it's because they aren't being told to do it. TGC staff isn't providing support for the betas but I'd be willing to look at your level/scripts since I'm not bound by that. Just email me a zip with your FPM and scripts. It is important to note that the default scripts will randomly send AI to cover when shot but if your level has no cover they will just stand in a corner and hope you don't kill them. This is yet another example of the difficulties involved with writing generic scripts. Some time ago Hockeykid asked for test FPMs to use for practical testing. Did you submit anything for that?
Quote: "However the current DARK AI despite any drawbacks and current bugs or issues has numerous benefits not least of all decent obstacle avoidance and the support for allies. The rest one hopes can and will be improved by TGC on their part and by the user for their part. Hopefully this is not the end but the beginning of better to come for the AI."
Also completely agree here. However expect much of the burden to be on the user, for best results. I expect it will take some time for users to get used to the idea that DAI isn't an "easy button" and requires FPI proficiency and familiarity with the system itself to make any magic happen. Unlike the X10 implementation, most all of the DAI behaviors have been exposed so they can be be manipulated via FPI.
Quote: "Ideally it would be nice to aim for an in editor capability to set up your AI as required through a variety of choices inside the Editor. e.g. choose level of intelligence, attack animations for distance attack or close attack (prone/straffe), approach animations (straffe/straight) or even a choice of a mixture of random behaviours so that characters - an individual one or all do not have the same behaviour so that any individual character might behave differently from one moment to another."
In a sense this is already possible if you have written the needed scripts as you can choose intelligence by assigning different main and shoot scripts. You also have more options for nuance via runfpi=x (only drawback is currently you can only specify only one runfpi option in a script, so extreme branching is not yet possible. On a side note, I think we can all forget about prone behavior until the AI hitbox system is overhauled.
Quote: "so what they need are more choices and better awareness and response times (they are a bit slow in that area). That means more intelligent AI and more processing power and possibly slower fps."
We should also expect to be able to achieve greater situational awareness once a better variable system is in place (I'm praying Ply's system is added soon as it is IMO the linchpin to a solid AI system- allies in particular). As mentioned before, response time lag in current betas is largely due to the scripts. If done correctly the FPS holds up well and the AI is responsive. If done wrong, the AI can be unresponsive and the FPS can drop like a rock.
Quote: "The users will use and push the engine and what can be done with it no problem, they just need the core engine to provide the opportunity without which they can do nothing."
For what it's worth, I believe the core system is pretty solid. It does have some failings though I have yet to see the things I'm thinking of talked about as 90% of the complaints I've seen stem from scripting issues. That gives me great hope!
Sorry everyone for the novel but I felt that I could help clear up some of the fuss.
EDIT: Ran some tests on public Beta5 and there is indeed quite a bit that appears straight-up broken beyond script issues. Hoping things will get shored up when Lee and Hockeykid are back from vacation.