NPC 'AI' -- Appearance of Intelligence

ALL NPCs are active (they dont stand around like mannekin or follow fixed patrol paths like in most MMORPGs) and have at least simple 'live' to drive logical behavior - normal metabolism cycles/schedules (eating, sleeping, waking), Use of consume goods, can run shops, can work for players. They would react appropriately to numerous possible situations and have small activities so they appear to be doing appropriate things wherever they are. (instead of standing around).

In crowded 'safe' city areas (well lit places) there would be alot of hustle/bustle of 'normal' looking NPCs (plus whatever player characters are there). Other behavior patterns would be used in abnormal situations (ie - Splicer in the City street -- a threat is present - run away OR a fire has broken out and NPCs try to put it out or get out of the way and watch, etc...)

Talk bubbles of casual consversation (ie- GTA multiple figures with their random one-liners - can be amusing (or not) or actually relevant to a current situation -- "lets get the hell out of here" or "did you hear about the Splicer in the Museum the other day..." or "Ack, the price of shotgun ammo has doubled again" )

There can be multitudes of gestures/animations used for all activities and NPC interactions (ie- if you walk into someone there is stumbling/tripping/falling down/bouncing off/dropping things). They should be used to enhance the players perceptions of a working community.

NPC to NPC speech/gesture interactions should be seen from a distance (doesnt have to be overly detailed) and dont really have to say much. Until the player gets closer they dont have to have much coordination. (unless they are shouting). GTA had alot of smalltalk that was irrelevant to the game but added activity (appeared less lifeless than most games).

Approprate sound effects for actions should be played (standard scripted sequences made up of animations and carefully timed sounds and results imparted on involved objects). Voice calls and short phrases, but will have to use text for any detailed conversations (just cant record all of them and stringing a dictionary of 'canned' words together always sound awful and real speech synthesis has too few voices/no accents/etc...)

Vehicles (where appropriate) movings with passengers/cargo loads (NPCs actually go 'home' so this would be city NPCs using the available transports, the same way the players 'team' NPCs get around seperately from the player).

NPCs activities of all kinds --- doing work, traveling to/from work, in residence, looking for work, misc entertainment and casual interaction or lazing around/loitering, walking in the park. Interactions between NPCs (buying/selling/queueing in lines/avoiding collisions/having arguments/bumming smokes/whatever else you can think of...). NPCs would make appropriate reactions (ie- to avoid hazards, go into a shop selling a 'needed' item, etc..).

There should be enough behavior detail that it is actually interesting to follow NPCs around just to see what they do. The 'Player Created Asset' system (again) would be instrumental in making this as varied as possible.

Sealife - various behaviors, flocking/schooling behaviors of fish (as weve seen) With players now being frequently 'Outside' in many more places and less restricted, will see more varying (less choreographed behaviors - more free swimming through/past obstacles). Ecosystem with appropriate mixes of sealife (including predators chasing prey). Templates and variations (combinatorics) to cover all that outside space (with much less development work)

Wildlife (non-humans) indoors, various vermin and animals (including pets) have simpler behaviors (than humans) but are programmed the same way - reacting to situations, going about a 'life'(even simple is a major improvement). Fills in the corners with little details.

Bots and other machines with triggered behaviors. They react to situations and actions made upon them. Rapture's utility systems (electrical/water/air/...) are made up of system parts that form continuous networks that interact -- you cut power at one point and further along the line the power goes dead - the wire system is made up of objects buried behind the inner walls (that the player often needs to repair). You shut a machine off and whatever it was doing stops. Likewise you activate a machine or work some controls it will respond appropriately (...need at least one crane to load fish - that works...) Players like playing with things just to see what they do, so much the better if it actually does something useful to them in the game.


Combat (FPS action in the game).
- The rapid/abrupt movements of combat, hiding behind cover, coordinating between 'team' (Splicers do likewise)
- Combat usually takes place out in remote areas where there wont be large crowds or large numbers of players.
- Have more varied combat situations, terrain cover, more active enemies (hopefully with better tactics).
- More combat goals rather than just 'kill the murderous mutants' - players now trying to capture Splicers. Expect more 'running away', where you now have to pursue and likely have to react to unexpected things you blunder into.
- Enemies do more than 'scream and attack' (there is such a thing as fleeing the enemy, running for reinforcements).
- Now with object collision, movement gets blocked by friend and foe. Usually then there is also 'frontage' as part of combat where you get bonus's for attacks on rear and sides (where the enemy isnt as likely to be able to avoid/counter an attack).
- With a 'team' of NPCs assisting you, you now can do coordinated attacks (and the enemy AI should do likewise, and your friendly's AI should try hard not to do stupid things).
- I could see an XCOM like (overview) interface to pre-issue orders at least for the start positioning of engagements.
- With a more detailed world (more interactive objects) there is more potential for tactics making use of the terrain

The 'Wild' areas have that same dark/damaged/threatening settings which Splicers inhabit much as we saw in BS1/BS2, with Splicers lurking in shadows and other appropriate behaviors (before they see the player and then either fight or flee or freeze).

Even in the 'safe' city the lights may (should) be turned down for a 'night cycle' so that there are dark areas and potential for skulking in shadows and mostly deserted streets and closed shops. Some areas 'never' sleep (nightlife). With darkness, things behave differently.


Arbitration of simultaneous action effects - logically (ex- NPC is under a leak getting wet when someone tries to set them on fire - fire put out by water) Much of this is physical effects and having the animations that can handle combinations of effects. (ex - On fire and blowing up at the same time). AI will make use of these countering effects (we saw splicers move to water when we set them on fire in BS1/BS2, so add alot more such in this game.)

Inanimate objects have 'physical'/'physics' behaviors that make them behave correctly when they are acted upon by animate objects. They fall and bounce and crush things they fall on, etc.. The physics dont have to be perfect simulations (that can actually take ALOT of computer processing to do correctly), but show the properties of working more like real objects. (Have NPCs make use of these effects - AI uses such in its 'solutions').

Template and script driven modular system - behavior programming (NPCs inherit behaviors using role templates) Complexity is reduced by script reuse with alot of similar actions/reactions shared by many actors. Things that are common sense are shared by all 'intelligent' objects (just that they make pick differently what to do for a particular situation).

AI Templates created vis 'Player Created Assets' allow great expansion of the behaviors available in the game (the more alternatives and variations the less repetative the NPCs seem). New gestures and emotes can be substituted (if better), or added as more alternatives.

Some behaviors are not actually significant to achieving a goal for a NPC, but are their to add to the players experience. Those small scenes we walked into with Splicers talking in BS1/BS2 did that and it would be good to have MANY more of them and have an AI that figures out which ones to use when appropriate. The book has splicers sounding alot more deranged than the few things we heard/saw in the game and it requires good scripted 'AI' to make it convincing.


Team member interactions:

Having a 'team' of NPCs to assist you requires a communicated order system (its very difficult to make AIs act fully competantly in situations and cues from players can go a long way to assist in coordinated actions). Some systems Ive seen in recent games were quite feeble and had helper NPCs doing absurd things that made them more a liability than any 'help'.

Interface types :
- Click and point targeting (probably a over-the-shoulder view) with good default 'implied' orders to minimize 'menu selecting' which can make fast combat deathly tedious or even unworkable -- players need to be able to issue 'snap' orders and let the NPCs do their thing. - Potential for voice recognition interface (single word commands usually have fairly accurate input quality) and limited command set allows succesful training adaption (conventional menu/text inputs also available for flexibility)
- Some commands would be to entire 'team' like 'Retreat' or 'Attack' or 'Now'.

NPCs will have a good pathfinding ability so the players wont have to guide them every inch of the way. This include getting around obstacles and expanded movement types like climbing.

The player may tell his 'team' members to take up specific positions (wait for signal) for some situations ahead of time (ie- combat ambush or in a salvage using explosives moving team members a safe distance).

Bots would only have simple commands (since they arent supposed to have the intelligence of NPCs)

Intelligent 'AI' NPCs should be able to override/ignore orders when they decide that the result would be bad (self preservation - the NPCs are supposed to be human simulations...)


Dialog Tree - Routine Player interactions with NPCs (buying/selling/queries/job offers/jobs wanted)

Dialog Tree mechanimsm for standard menu type interchanges between player and an NPC
- A simple 'dialog tree is : The NPC asks a question, The Player is offered Yes/No as responses and depending on the one the player picks (a branch happens) 'Yes' it does one set of things -or- 'No' it then does a different set of things. A tree can be a whole series of additional 'questions' and branches.
- Decision Logic can be built into the Dialog tree for quite specialized/specific interactions where
IF-THEN logic shifts available 'branch' options - situation factors enable branch options (ie- closing time, shop is out of item X, city emergency). A branch can have many more than 2 possible options. And there can be many branches.
- History based variations - Player is a daily customer gets different options (often shortcutting longer selection trees or putting previous selections at the top etc..) A player the NPC saw before might be addressed by name, etc...
- The dialog tree can program appropriate actions/animations/talking(with proper timing delays) to be done by the NPC (can act out proper reactions to players answers) Mechanism like this was in Neverwisnter Nights server&tools system.
- The NPCs system can have extensive canned tree logic to cover variety of common behavior (like shop-keepers) Templates for many standard responses can speed up creation of dialog trees - they play standard animations any human figure can perform - ex- sit down, point at object,...). Players can clone from a selection of dialog tree 'outlines' and just fill in the text specifics.
- Local situation information (parameters/inserts - player name, time of day, shop name, available products, street shop is on) can be auto-inserted into text responses (to make them feel much more interactive/customized).
- Dialog trees used for quests can automatically insert log entries into the players Quest Log.
- Many/most NPCs have 'their own story' (some more extensive than others) that can be inserted as 'small talk' - reminiscences of their past life and their current position in Rapture.

A Dialog mechanism on the client should do preloading of assets from disk (sound effects/animations) to minimize hesitation when rendering/playing (its a predefined set that may be soon needed, so they can be loaded well ahead of time when the dialog is initiated).

NPC interactions with players include manipulations of props/objects in the situation (ie- ringing up purchase on cash register, handing over product to buyer, walking over and pointing out objects (stage direction type scripting is alot simpler for non-programmers to make work)


Social interactions

Walking in the streets - collision detection done (I dislike having objects walk thru each other, unless they are ghosts). NPCs will avoid each other and most places have a 'keep right rule' (except on the UK servers). NPCs will attempt to not be rundown by vehicles (largely by staying out of the track areas, but moving out of way when needed).

NPC shop vendor as mentioned above ^^^ (Dialog Trees, etc..) and some shortcut 'simple' interfaces like Display Cases to select purchase items and Priceboards (that do the same thing and offer quickly perused lists of items to buy or sell).

Effects of players 'prestige' -- difference responses from some NPCs to show deference or recogntion of the players benefitting the community. There would likely also be a advancement 'ramp' for prestige that makes additional things in the game accessible -- city resources (sub rides/access to areas/bureaucrats that arent as slow), different missions (built reputation), more/better 'team' members willing to join you, NPCs to help you, etc...
Prestige advancement should have many avenues (I get sick of quest trees and linear missions)

High Mucky-mucks (NPCs) -- ? are there any in the New Rapture that you can 'associate' with as part of your higher prestige levels (if you reach them)?? If there is a macro plot in the game these would likely be the channel. ie - Plot Explanations from Tenenbaum about coming back and starting this goal of freeing all the Splicers from the effects of her work, Missions of significance to the survial of Rapture, etc...

There can be choreographed scenes that NPCs (citizens or Splicers) act out so the player can watch (example was the Ghosts in BS1) - they are combinations of actions/animations/gestures/sounds/talk that are appropriate to a current situation. Of course at any time the situation can suddenly change drasticly so all such choreographed sequences should have abort recovery and good transitions into variaous other behaviors. (Need I say - 'Player Created Assets ' again?? An MMORPG should not be "pretty terrain that otherwise is a ghosttown devoid of interest" - heh, the Ghost example above at least could make it a proper ghosttown via a plethora of player created 'ghost stories' everywhere.)

Server controlled NPCs give missions/quests to players (enabled depending on players profession/skills/perestige)

Hints/Rumors of goings on in the city or neigborhood can be given (or queried by players) The 'small talk of NPCs shifts depending on the city state (ie- during a brownout, thats what the NPCs talk about while they try to find lights)

Attempts should be made for some consistency across all NPCs for at least basic interactions (their roles in society) and customizations (largely template driven with tweaked data variations). Thats reuse of common scripts (part of this system that saves on development time).



There can be alot of behavior variations based on NPC 'personal details' - attitudes, inclinations, tendencies, behavioral approaches that vary alot between NPCs (ie- a fawning/brusque shopkeeper...) WIth a proper Template system, these can be activated via simple control options - mode switches, numeric scale inputs that a non-programmer could easily select/adjust (or server could randomize). The 'programmer' types would build their behavior scripts to offer these control options (parameters) which then when set would shift the instanced NPC characters behavior accordingly.

Many basic 'personality' factors are held in common by most humans, so once a sufficient set of template options is available any NPC could make use of them (reuse). Some attributes (ex- risktaking vs cautious) are a specified via a numeric scale which if set to one extreme or the other cause the NPC to take extreme actions. While a setting in the middle has to be some compromise (non-extreme course of action). Such general attribute settings would 'color' all sorts of specific behaviors, reactions and roles. In combat a character with high risktaking would play offensively instead of defensively, in an economic situation the character would speculate. In a repair job the character might take the risk of trying to fix something when they dont have the skill that would make it more probable to succeed.

The clever bit of the 'AI' script programming is handling all the conflicting selections and complications (where the mix of two selected attributes causes a third set of result). A attribute "lawful vs unlawful" mixed with a "risktaking vs cautious" attribute together does not create a linear combination, but more likely a matrix. You would think that someone 'cautious' would not be 'unlawful' but you can have a 'cautious criminal' (like an embezzler), versus a 'risktaker' + 'Unlawful' who might be a flashy gangster who robs banks in daylight and shoots his way out and flaunts the money he steals.

Anyway, these kinds of things can get complicated (and we are only delving a bit further into realism) so it often is simpler to create a 'special template' for a particular character pattern and strongly set the actions and reactions they will chose to make in their game world behaviors. Those options themselves are controls to more primitive 'Templates' of behavior (like 'direct action' vs 'indirect action' or 'waiting for reinforcements' vs 'charging in', etc..) that control specific situational responses. Being a 'special template' anything that is expected to conflict or be complicated can have very precise logic written to override and handle the 'exception' situation correctly. Of course this should only be taken as far as needed and not be so subtle that the players cant tell the difference (moderation of detail level ...).

The 'art' of creating personality (for players to create) is to adjust and balance all the different 'personality' factors a NPC could be defined with, to act correctly specific to the flavor the player wants. That combination of settings then can become a Template to create other similar characters spread around the world (with minor variations and info applied). The randomization itself would be controled by limit settings set by the player as to how much variation is allowed before the character isnt 'right' any more. (it does no good for an 'embezzler' to have too high a 'risktaking' attribute).

Ordinary NPCs can be largely '2 dimensional' (still a vast improvement over the '1 dimensional' characters in most MMORPGs). Even just their group interactions will make them interesting. Some can have more detail and stand out and others you just want to get on with buying stuff from them, without always hearing their life stories.

Alot of this is low level scripting work that can get fairly complex and can be extensive (awful lot of proper reactions for things that go on in the world), and would be left to qualified players for improving (reprogramming) the low level 'Templates'. Other creator players then would have 'high-level' additional/improved options to assemble/parameterize/recombine, thus allowing non-programmer players to create additions/variations/improvements for the game.

There is always cosmetic details that take NO programming/scripting at all, which are needed to fill in ALL the remaining appropriate details that make the NPCs appear right. The low level programmer includes a "fill_in_insult" placeholder that the Final Detailer would supply - "YOU FARGING BASTAGE, SO'S YOUR MOTHER!!!" (or even a list of similar insults to randmomly cycle). There would be dozens of such text 'fill_ins' and even THESE could be ganged together as reuseable sets ('templates') -- like a 'tough_guy_talk' set that can be dropped in with one control setting into any character...

Behavior Detail :

Certain characters in the game (usually special 'bosses') will take ALOT more to make them act right. Imagine what specific attributes you would have to set for a 'Sander Cohen' character :
- Obviously the custom appearance (clothing/face/body), but also fairly unique animations (think Cohens 'flourishes')
- His plasmid uses (Houdini skills) obviously would be template driven (but maybe tuned to exaggerate them further)
- A coordinated set of prefered behaviors and reactions (existing standard templates for basics and further customizations for abberations) - ie- an attack where He might run away but then drop a big flashy bomb on you (once).
- Interactions with specific 'Cohen' props and (for Cohen) his 'batty cave'... (some of those BS1 props were animated and they have their own 'programmed' behaviors -- now new ones possibly ALOT more detailed than we saw in BS1)
- All his very specific twisted sayings and quips referring to his 'art' (some unique sound bytes - like a 'laugh' that would be used repeatedly). If the 'creators' want to go all out a bunch of 'speech recordings can be made with a good voice actor.
- His insanity played out in a long sequence of 'special' dealings with the player. When at some unfortunate 'ordinary' NPC (like on on your 'team' or some incidental NPC as a 'vignette') he might point and shout 'Kill Him' to his splicer minions.
- Key Bosses arent a one-shot encounter but are meant to have repeated incidents with a player (like a sub plot).
- 'Bosses' often control 'minions' (other NPCs) and THAT gets into a whole other area of 'AI' - coordinating actions between a group of NPCs (which actually would share ALOT of templates and programming with the players 'team' feature).
The minions are basicly 'slaved' to the boss and carry out fairly simple commands (with their own 'personality).
- Over-control of Cohen would be done via the Quest system that has alot of persistant logic/state scripting capabilities (yet more 'AI' there) to handle changes in Cohen's behavior in 'Phases' as your relationship with this unique character progresses (as you meet him again and again as the game goes on).
- Cohen could have
- Another set of 'missions' for you to carry out like in BS1
- Just alot of optional interactions for you with secondary minion characters (arena of death scenario).
- More of his insane monumental playacting/posturings.
- Maybe he just wants to trade something that the 'City' has and YOU get to go take his negotiations back to the 'city council' for his 'Big Return'.
- All stuff for the Quest system to coordinate.
- All of the above will likely require collaboration between all levels of the scripting/detailing skills (including Cohens 'props' which are not AI exactly but related details).


Other 'bosses' might be more generic and many similar cloned ones exist in different places (and CAN be killed, but replaced by another similar one somewhere/sometime later). They arent as specific as a 'Sander Cohen' but would take similar types of settings/details.

Imagine what other 'special bosses' you might come up with - this system is designed to allow you to actually create them for the game yourself (or in collaboration). Over time players would create many of them (joining any commpany created ones) and all the other players would get the fun of playing against them.



Another advanced feature (starting to get too many of these?) would be to offload some AI processing to the players client machines -- in particular the players 'Team' of NPCs who are in the immediate area (trying to run NPCs elsewhere in the city would require information feeds about those locations that are significant network loads). Combat in particular is a (more complex) rapid response part of the game and may be helped by faster AI being run partially on the players client machine. The opportunity for cheating would be much less (the issue of hacking the client etc...) as most of the information is already being shown to the player and things like AimBots already exist anyway and would be protected by existing countermeasures).

The server will still be the 'authority' that validates actions, but the AI that figures out what the bunch of NPCs should be intelligently doing (especially with more complicated terrain and individual tactics) can take a surprising amount of CPU processing taht would be good to offload from the servers.

With all this talk of 'cloud' computing, I suppose having part of the game system 'farm out' AI to players machines left on when NOT playing would be a way to expand the AI processing capabilities. Proper processing security would be part of the system as well as mechanisms to judge reliability (good consistant network connections are crucial). Compensation like a discount on the monthly or soem in-game rewards would probably be needed as an inducement. Such a system would of course have to fallback to the servers only if players dont cooperate.

When no player is there (close enough) to see, NPCs still carry out the effects of their proper behaviors (actions which effect the game world and other NPCs and players). They dont have to act out the visual motions, but the decisions and proper results will be enacted. The simulation goes on doing the economy and keeping all the objects in their right places as the world moves forward. If the player walks in, all the right things will be in the right place and doing the right actions.

There can be optimizations to 'pro-rate' what happens outside of player's seeing. (ie- an NPC with a job of filling bottles with Nico-Cola by hand will have its script adjust the game world in interval jumps (crate batches of 12 bottles) when no player is present to see, but instantly switch back to one bottle at a time when a player can see the activity). Servers thus do less work (saving it for the more demanding processing of details near players) while still preserving a proper simulation.

Server processing load may not be excessive for this 'simulated AI' as the scripts wait alot for player actions/responses, and the logic (once decisions are calculated) are largely 'canned' sequences that take a while to play out. The AI decision process though WILL require more Server processing when things in the world change around an NPC -- most of all when a player is there to see. Elsewhare out-of-view 'abstract' behaviors can be largely designed to not conflict and resolve interactions in a much more simplistic way.


Economic Balancing:
- With a system trying to simulate a 'real' economy (a bit more), the NPCs who buy and sell have to make appropriate decisions.
- A typical MMORPG problem is a game economy getting out of balance due to loopholes that simply take over because of disproportionate advantages. Those loopholes would have to be closed - usually with better design from the start, or with intelligent counterbalancing in the system.
- A server (AI) run balancing mechanism should have many minor ways (to keep from appearing 'heavy handed') to keep a (simulated) economy working, when many players behavior is atypical of realistic economic actions (thus the NPCs to act normal to moderate things).
- The economy is there to give goals to players and to facilitate their 'adventure' in the game. Thus it should be streamlined sufficiently to avoid 'grinding' that is the bane of so many other MMORPGs. At the same time if a player wants to concentrate on economic aspects, they should have sufficient detail to work with. Streamlining is good because itr then requires simpler AI to keep the economic simulation in balance.
- Part of the NPC AI is to act correctly in the current situation, and that includes the economic situation, if not the actual commerce but general behavior (beggars in the streets, lining up for hard to get jobs or doing alternate activities to survive (like crime) - not that any of THAT would be needed in out HAPPY New Rapture....