######################################################################################## # # AI TYPE DATA # # This file contains general parameters for adapting the AI. Records include: # # VOLUME_DISTANCES: How many metres will a sound of a certain volume decay over. # ENTITY TYPEs : Various records to set up the AI in different ways. # ######################################################################################## ############################### # # VOLUME DISTANCES record # All sounds are set up with a volume (either very_low, low, medium, high, or very_high). # The greater the distance between the hearing entity and noise emitter, the more the # volume will decay. This file allows the distance to be set up over which each volume # will decay. EG: 'medium 50' means a medium noise will decay over 50 metres. # # NOTES: All volumes need a distance specified. # A lower volume should not decay over a greater distance than a higher volume. # # # BSP VOLUME FILTERING record # If a sound is heard through the BSP then the distance that sound travels will be reduced # by the value (in metres) set up in this record. # ############################## RECORD VOLUME_DISTANCES very_low 5 low 15 medium 30 high 60 very_high 200 END # The general reduction is used in most cases when a noise passes through the bsp. # The execution reduction is used instead if an execution sound goes through the bsp to let it # carry that little bit further. # The lure reduction is used if a lure sound goes through the bsp so that it can travel a bit farther. # The alert_extension is used to determine how much further alert sounds should travel. # NOTE: The alert-extension doesn't use any bsp reduction so it shouldn't really be included in this # record, but I have put it here for convenience RECORD BSP_VOLUME_FILTERING general_reduction 15 execution_reduction 8 lure_reduction 8 alert_extension 5 END ############################## # # ENTITY TYPE records # These all have individual names which will allow different types of entity to read # different records. EG: Weak Hoods could read the 'weak_hood' record, etc. # # Current contents: # # ALERT_LEVEL_DEGRADE # ----------------------------- # This is used to specify how long the entity takes to drop down one alert level. # Maximum alert level is very_high, and it falls to high, medium, low, very_low, then none. # A persistent entity that will keep searching long after the player has been lost will # have a long degrade interval. The interval will be short for 'give-up quickly' entities. # NOTES: Only accepts seconds between 1 and 255 inclusive. # # SET_ALERT_LEVEL # ---------------------------------- # This is used to specify what the alert level will become when an entity starts a new # action. It can raise or sustain an alert level, but the alert level only drops over # time. # Actions: combat, chase, investigate, hunt, not_on_alert. # Levels: very_low, low, medium, high, very_high # NOTES: only set alert level for combat, chase, and investigate actions. hunt and # not_on_alert will be ignored because they do not react to the player (hunt searches # for him), whereas combat, chase, and investigate are all reactions to senses # information. The hunt action will be sustained while the entity has an alert # level, then will drop to not_on_alert when the entity is not on alert. # # SUSTAIN_ACTION # ------------------------------------ # This is used to specify how long an entity will continue doing an action after the # conditions for sustaining that action have been lost. # EG: If it requires a high or very_high sighting to sustain the combat action and the # player hides so that no sighting is available, then the hunter will remain in the # combat action until the specified number of seconds have passed before # changing to a new action. # The reason for this is to stop the hunter swapping between actions unnecessarily. If, # while in combat action, the player was to turn a corner, the sighting would be lost. # Without this sustain time, the hunter would immediately swap to another action, but # with this sustain time, the hunter is kept in combat action to give him a chance to # also turn the corner and see the player again. # Actions: combat, chase, investigate, hunt, not_on_alert. # NOTES: only set sustain times for combat, chase, and investigate actions. hunt and # not_on_alert are special in that hunt is the default while the entity is on alert, # and not_on_alert is the default when the entity is not on alert # NOTES: Only accepts seconds between 1 and 255 inclusive. # # ACTION_TRANSITION # --------------------------------------------------------------------------------- # This is used to determine the minimum sight level or minimum hearing interest level # that is required to change up to a new action, or to sustain the current action. # Actions are ranked as follows: combat, chase, investigate, hunt, not_on_alert. If the # minimum sight or hearing level is attained to move up to a higher ranked action then it # will be done immediately. If not, then the current action will be sustained while the # necessary minimum sight or hearing level is attained. If none of these conditions are # met then the entity will move down to a lower ranked action, but this will only happen # after the sustain time period for that action has passed. # Actions: combat, chase, investigate, hunt, not_on_alert. # Levels: none, very_low, low, medium, high, very_high # NOTE: A level of none is taken to mean that sight information or hearing information # should be disregarded. Any other level means sight or hearing of the specified # level and above are accepted. # NOTE: if the from and to actions are the same, then this specifies the minimum sight or # hearing levels that are required to stay in that same action. # NOTE: the valid from/to combinations are as follows, all others are ignored: # [from] combat [to] combat # [from] chase [to] combat # [from] chase [to] chase # [from] investigate [to] combat # [from] investigate [to] chase # [from] investigate [to] investigate # [from] hunt [to] combat # [from] hunt [to] chase # [from] hunt [to] investigate # [from] not_on_alert [to] combat # [from] not_on_alert [to] chase # [from] not_on_alert [to] investigate # ############################## RECORD default ALERT_LEVEL_DEGRADE 20 SET_ALERT_LEVEL combat very_high SET_ALERT_LEVEL chase high SET_ALERT_LEVEL investigate low SUSTAIN_ACTION combat 1 SUSTAIN_ACTION chase 3 SUSTAIN_ACTION investigate 8 ################################# #SETTINGS FOR DEMO VERSION!!!!! # ################################# ACTION_TRANSITION combat combat low none ACTION_TRANSITION chase combat very_high none ACTION_TRANSITION chase chase low low ACTION_TRANSITION investigate combat very_high none ACTION_TRANSITION investigate chase high high ACTION_TRANSITION investigate investigate low low ACTION_TRANSITION hunt combat high none ACTION_TRANSITION hunt chase medium medium ACTION_TRANSITION hunt investigate low low ACTION_TRANSITION not_on_alert combat very_high none ACTION_TRANSITION not_on_alert chase high none ACTION_TRANSITION not_on_alert investigate medium medium END # A temporary way to set the default investigate action. # Allowed values: walk, run. # RECORD investigate_action run END # A temporary way to set the default search parameters. # Names ending in _% are: percentage values # Names ending in _m are: distances in metres # Names ending in _s are: time in seconds # Names ending in _bool are: true, false # NOTE: If RADIUS_m is 0 and AREA_bool is false then an error is flagged. # If RADIUS_m is >0 and AREA_bool is true then the search is confined to nodes in # the area that are also within the specified radius. # RECORD search_parameters ################################# #SETTINGS FOR DEMO VERSION!!!!! # ################################# # The radius that confines the search area (in metres). # If 0 then the radius does not apply. # This is a float. RADIUS_m 35 # The darkness percentage that determines that a node is dark enough to be searched. DARKNODE_% 8 # Determines whether or not the search is confined to an area of the level or not. AREA_bool false # The percentage of possible searchable objects and darknodes that actually get searched. # If 100 then all searched, if 0 then none searched, otherwise at least 1 searched. DENSITY_% 85 # The percentage chance that the same searchable object or darknode will get searched again # by a different entity, and the time that must elapse before this happens. # If 100 then all will be double-searched, if 0 then none. # NOTE: Even disorganised behaviour should perform very few double-searches. DOUBLE_SEARCH_% 15 DOUBLE_SEARCH_DELAY_s 10 # Determines whether or not the search display is on or not SEARCH_DISPLAY_bool false END # A temporary record that allows the vision data to be played around with until permanent # values are found. # Names ending in _% are: percentage values # Names ending in _m are: distances in metres # Names ending in _bool are: true, false # Names ending in _deg are: degrees # Trait Levels are: very_high, high, medium, low, very_low. # # RECORD vision_data # The default safe_zone percentage SAFE_ZONE_% 06 # The frustum width and height (in degrees), and the frustum distance in metres. # Outwith these, the player is not visible. The frustum_display determines whether the # vision frustum should be displayed or not. # These values are floats. FRUSTUM_WIDTH_STAND_EASY_deg 75 FRUSTUM_WIDTH_WALK_EASY_deg 75 FRUSTUM_WIDTH_RUN_EASY_deg 50 FRUSTUM_WIDTH_STAND_HARD_deg 95 FRUSTUM_WIDTH_WALK_HARD_deg 95 FRUSTUM_WIDTH_RUN_HARD_deg 50 FRUSTUM_HEIGHT_deg 60 FRUSTUM_m 30 FRUSTUM_DISPLAY_bool false # Peripheral vision frustum # If the enemy is within the CHECK_PERIPHERAL distance then the peripheral distance check can take place # NOTE: Intended for use when the hunter is standing still # These values are floats PERIPHERAL_FRUSTUM_WIDTH_deg 170 PERIPHERAL_FRUSTUM_HEIGHT_deg 60 PERIPHERAL_FRUSTUM_m 3 CHECK_PERIPHERAL_m 4 # The face distance in metres, and the face definite distance in metres. # Beyond the face distance the face is not visible. # Within the face definite distance, if the face is seen then it is always recognised. # This distance should be less than the frustum distance. FACE_m 4 FACE_DEFINITE_m 2 # If the face is visible then ONLY the light level on the face affects the return value, # so only the FACE_LIGHT information is used. # if FACE_LIGHT_bool is false then face will not be used as part of calculation # float values FACE_LIGHT_bool true FACE_LIGHT_% very_high 10 FACE_LIGHT_% high 8 FACE_LIGHT_% medium 6 FACE_LIGHT_% low 4 FACE_LIGHT_% very_low 2 # If the face is not visible then the return value is the average of the DISTANCE, the # LIGHT and the VISIBLE values. If any of these _bools are false then the relevant # item is not included as part of the visibility calculation. If all are false then # the player will never be seen. # DISTANCE is a percentage within the frustum distance, where 100 means far away. # float values DISTANCE_bool true DISTANCE_% very_high 20 DISTANCE_% high 45 DISTANCE_% medium 60 DISTANCE_% low 70 DISTANCE_% very_low 100 # LIGHT is the percentage of light falling on the character, where 100 means very light. # float values LIGHT_bool true LIGHT_% very_high 50 LIGHT_% high 50 LIGHT_% medium 6 LIGHT_% low 6 LIGHT_% very_low 6 # VISIBLE is the percentage of the player's body that is visible (ie: not hidden by # objects), where 100 means fully visible. # float values VISIBLE_bool true VISIBLE_% very_high 90 VISIBLE_% high 75 VISIBLE_% medium 55 VISIBLE_% low 35 VISIBLE_% very_low 10 END # A temporary record that opens up the hearing testbed for tweaking # Names ending in _% are: percentage values # Names ending in _bool are: true or false RECORD hearing_data # The percentage of the player's total speed that causes WALK and RUN noises to be emitted WALK_% 50 RUN_% 100 # Should Hunters dp their individual WALK TO INVESTIGATE and STOP AND LISTEN actions? ALLOW_WALK_N_STOP_bool true # At what volume should interest level degradation (confusion) kick-in? CONFUSION medium # Flag indicating whether or not the radius lines should be displayed RADIUS_bool false END