Dead Island Optimization |
First you need to go into your game folder. Your exact path will vary, I keep my games on tertiary drive in Games folder, so in my case it would be E:\Games\Dead Island.
You need to go to DI subfolder in your game folder. Copy Data0.pak. Rename copy extension to .rar instead of .pak. Extract it. In it you will see data folder. Copy entire data folder into Out subfolder in DI subfolder of your game directory. Once thats done you can change everything you need to to make this game run much smoother on your machine.
This explanation I am copying from a thread on Steam forums, I did not originate this. It applies to both Dead Island and Dead Island Riptide.
Improving Performance :
*SSAO - SSAO is otherwise known as ambient occlusion and works full time the background rendering for mainly shadows. It's a resource hog, and generally designed for upper end gaming computers. It was invented by a lead tech over at the CRYSIS department, and has been incorporated into many games since. On lower rigs, disabling this can improve game speed dramatically. Locate your DI>out>Data>Scripts>varlist_ssao.scr file. Inside you will find a value marked 1.0, to disable SSAO simply change this value to zero and save the file.
*Bloom - Bloom lighting function's as a overbright filter for light sources and helpers inside the game. Generally, it's used to amplify light anywhere there is lighting inside the game. For Dead Island, mainly the sun, fx and helpers. Disabling this will cause ambient lighting to take over primarily, and lessen brightness in a lot of ways, but visually will not impair the game terribly different unless inside a heavily lit area. Locate your DI>out>Data>Scripts folder and find varlist_glow.scr, change all the values inside to 0.0, disabling light bloom for a moderate FPS boot.
*DOF - Depth of field is primarily used for distance rendering, and gives the visual affect of a blurred distanced viewpoint. For Dead Island, this mainly occurs in act 3 and during running sequences when the player is nearly out of stamina. It has a light affect on the game 100% of the time no matter where you are, and can be disabled for a minor FPS boost. DI>out>Data>Scripts>varlist.dof.scr AND dof.def.di.scr files. Inside these change all values to zero to disable.
*Blur - This is arguably the worst implementation of Blur on a game. Dead Island is notorious for overly blurry sequences and actions. Used mainly for fast turning on the camera, weapon swings, knockdown animation, and a few more, it is a big hindrance on a older system and lots of people despise using it. To disable : DI>out>Data>Scripts> then find the following files:
---varlist_blur_camera_motion.scr (change values to 0)
---varlist_blur_motion.scr (change values to 0)
---varlist_blur_radial.scr (change values to 0)
---varlist_blur.scr (change all values to 0)
this should provide a large FPS boost in action packed sequences.
*Desaturate - Desaturate works hand in hand with DOF, usually rending far objects and trees in a pale, less vibrant color. This works by actively scanning distance radius set with a filter, and can use some system resources as well. I personally prefer this off, as it gives vibrant colors in the distance, however disabling it will sometimes give a slight boost. DI>out>Data>Scripts>varlist_desaturate.scr and change all values to 0.
*Fog - Fog function's in the distance 24/7 while the game is running. Whether your inside or out, unless in a specific zone (sewers for example) in tight spaces with no real view distance, fog is always on, and suprisingly can give a good boost to FPS if disabled. This will take away distance visual affects' some, but were just going to lower or kill the opacity. NOTE : We will only be changing the last line in this file, please don't mess with gradient's, they are a totally different function. DI>out>Data>Scripts>varlist_fog_layers.scr. In this file scroll to the very bottom and find (VarFloat("f_fog_opacity", 1.0)), you will want to change this too 0.0 to disable, or even lessening it to 0.5 or 0.3 will improve performance. Fog takes a big hit mainly on outside areas.
*Engine Rendering - Engine rendering is the major toll on the CPU and GPU for most games, including Dead Island. Rendering will create distance trees, objects, shadows, terrain and more. Lessening this on older systems will make a major performance hit, at the cost of giving a shorter viewspan in game. Do be careful, this is a very important file and can shut down your game if done incorrectly, and give bizarre gameplay visuals. First let's navigate to the EngineCounters.scr file located inside the DI>out>Data folder. It will look something like :
//icntr - integers
//fcntr - floats
sub main()
{
icntr(0, "DP", 300, 500);
icntr(1, "Rendered objects", 350, 500);
icntr(2, "Prerendered objects", 500, 1000);
icntr(3, "Trees", 200, 300);
}
Now in this file, most is self explanatory. Trees will be the max trees the engine is rendering, objects of course will be game objects such as clutter, destroyables and all manner of things. Prerendered objects usually are dynamic, and as such are many thing's in Dead Island. Set these to a forgiving level to speed up performance. I've set mine to the above and have some visual loss, but not great and gotten a good jump in FPS off it. Now for the next step. Navigate to DI>out>Data>QuickAccessVariables.scr. Open this file and your going to see almost the same thing again. It's important to keep these two files synchronized, so what you put in EngineCounter's, be sure to match the MIN in QuickAccessVariables file. Don't worry about the Maximum here, there is no need to change it, it will refer itself to your Engine Counters file later.
*Shadows - Shadows take
a tremendous toll on older video cards. Usually, these are the culprit behind laggy gameplay, and require quite a bit of processing power. There are quite a few way's in Dead Island to tweak your shadows to an acceptable level while still gaining some FPS. DI>out>Data>Scripts>Performance.scr. Inside this file you'll find some very important switches.
VarFloat("f_lighting_range", 5000.0)
VarInt("i_shadows_sun_on", 1)
VarInt("i_indoor_on", 0)
VarFloat("f_alpha_test_value", 0.0)
VarInt("i_clouds_shadows_on", 1)
VarInt("i_lighting_sun_on", 1)
VarInt("i_render_reflection_on", 0)
VarInt("i_out_buffer_on", 1)
VarVec4("v_terrain_uv_scaleoffset", [1.0, 1.0, 0.0, 0.0])
VarInt("i_terrain_shd_cull_on", 1)
VarInt("i_simple_shadows_on", 0)
IN this instance, you can enable simple shadows by changing the value from 1, to 0. This will give a blurry shadow look on the ground and improve speeds. Alternatively, you can also navigate to DI>out>Data>Settings>Quality/Performance/Balanced.scr files and open them as well. Find ShadowMapSize vairable, and set this to a lower number in integers of 64>128>256>512>ect. Doing this will keep nice looking shadow's, but use less rendering power on them increasing FPS.
*Postprocesses - Post processes usually deal with dynamic enviroments, and can include dynamic weather, affects and more. Disabling these can have a visual impact on the game during weather event's, and mainly on any FX that happens on screen such as explosions. There are quite a few tweak's that you can adjust here depending on your computer that can help speed up gameplay. Let's go over some. First navigate to your DI>out>Data>Settings>Quality/Balanced/Peformance.scr files. Open whichever one you'd like to edit. It should look something like this :
Resolution(1024,768)
BPP(24)
FSAA(0)
TexBPP(32)
TextureQuality("High")
Filtering("Anisotropic")
Fullscreen(1)
Shadows("High")
ShadowMapSize(256)
Lightmaps()
GammaFloat(1.00)
MaxRefresh(100)
MaterialQuality(0)
FXQuality(4)
FXFadeLevel(2)
WaterQuality(0)
GrassQuality(0)
EnvQuality("Static")
ShaderPath(2)
Postprocess("Simple")
VerticalSync(1)
Now on this list, Postprocess can be set to "Simple", or "Normal". Simple will help speed up FPS in some situations while disabling most of a dynamic enviroment effects, and in conjunction you can tweak the EnvQuality from "Static", to "RareDynamic" or "Dynamic". What this does in essence is compliment each other, so try to keep them close in setting for full affect. Static will take away your dynamic gameplay, Raredynamic will incorporate the essentials, and dynamic will allow for rendering of complete dynamic functions such as weather as a instance. Also here you will notice some hat switches for quality, FX, and Textures. Changing these can also increase FPS while lowering visual quality. Note the guidelines in the top of the file and find what setting is best for you. Lowering or adjusting your resolution can also increase gameplay speeds. This will allow you to create your own three default setting's for your own computer that work best. Alternatively, you can also edit your DI>out>Settings>Video.scr to do most of the same function's. This file is static however, and will be constantly on. NOTE : Shaderpath is determined by your graphics card, contained in another file inside the Data directory, changing it will have no affect at this time.
NOTE : There are a few way's to do some of the thing's listed above, and I will add more to this list as time goes on, however I tried to mention only the easier of the ways so that most users here can edit them with ease.
NOTE : All changes suggeted here can be done by opening the files with NOTEPAD.
-------------------------------------------------------------------------------------------------------------------
Enemy Changes and How-To's Changes
***Most of this will cover your enemy actions, abilities and functions and allow you to tweak them according to how you prefer for your own custom personal gameplay. I will go over the basics here with a quickly wrote rough outline of what each function does. Some variables here can cause gamewide glitches, so do be careful and experiment a little at a time. I'm going to use my BETA AI mod im putting out today as a rough example. First let's navigate to the DI>out>Data>AI>Zombie>vessel_data.scr file. Inside your will find the parameter's for animation of the enemy, what type it pertain's to, and the hat switches for the given enemy. The top of the file your going to see PARAMETERS, for now let's skill this entire section. That has to do with animation's and is much more in depth than I have time to give review here for at the moment. Instead, let's scroll down and find this line :
ParamFloat("walk_speed_calm", 90.0)
This is the beginning of the variables list, most of which will call all the function's of that particular file's enemy type. For vessel_data.scr, this file is a default file for all of the zombies and is used unless specifically stated in a preset file also int he zombies folder. Here is a list I've made and a given understanding of each.
// Health
ParamFloat("pro_player_head_health_influence", 1.0) // enemy damage taken on head from overleveled player
ParamFloat("head_health_influence", 1.25) // enemy damage taken when attacked on head
ParamFloat("left_arm_health_influence", 0.75) // enemy damage taken when attacked on arm
ParamFloat("right_arm_health_influence", 0.75) // enemy damage taken when attacked on arm
ParamFloat("left_leg_health_influence", 1.0) // enemy damage taken when attacked on leg
ParamFloat("right_leg_health_influence", 1.0) // enemy damage taken when attacked on leg
ParamFloat("torso_front_health_influence", 0.5) // enemy damage taken when attacked on front
ParamFloat("torso_back_health_influence", 0.5) // enemy damage taken when attacked on back
ParamFloat("health_mul", 2.0) // overall enemy health multiplier
ParamFloat("head_health_mul", 0.3) // amount of health of enemy head before dismember
ParamFloat("arms_health_mul", 0.6) // amount of heath of enemy arm before dismember
ParamFloat("legs_health_mul", 0.9) // amount of health of enemy leg before dismemeber
ParamFloat("stamina_mul", 1.0) // enemy stamina multiplier
ParamFloat("stamina_to_health_ratio", 1.0) // stamina containment of enemy vs enemy health total
ParamFloat("hit_legs_stamina_mul", 1.5) // stamina amount contained within leg modifier
ParamFloat("stamina_regeneration_rate", 0.05) // stamina regeneration rate for enemy
ParamFloat("leg_stamina_containment", 0.25) // amount of stamina within legs
ParamFloat("arm_stamina_containment", 0.1) // amount of stamina within arms
ParamFloat("regeneration_rate", 0.3) // part of health restored per second (only for those with enabled regeneration)
ParamFloat("no_regeneration_time", 4.0) // pause time of enemy regeneration when interrupted
ParamFloat("regeneration_probability", 100.0) // chance enemy will regenerate health
// Damage
ParamFloat("burning_damage_per_second", 20) // 2 per 100 health // burning damage percent value when on fire
ParamFloat("time_to_extinguish", 30) // time before burning enemy will extinguish itself
ParamFloat("ram_damage_mul", 0.5) // enemy damage multiplier while ramming
ParamFloat("ram_physics_damage", 80.0) // physics damage from being rammed by enemy
ParamFloat("bullet_head_hit_damage_mult", 2.0) // multiplier for damage on enemy when shot in head
//ParamFloat("explode_damage", 200.0) // direct damage from a enemy explosion
ParamFloat("explode_physical_damage", 40.0) // physics damage from a enemy explosion
ParamFloat("explode_range", 450.0) // range of damage of a enemy explosion
ParamFloat("time_to_explode", 2.0) // time before enemy explodes
ParamFloat("drowning_damage", 25.0) // amount of damage to enemy while drowning
ParamFloat("bite_damage_mul", 3.0) // bite damage increase multiplier
ParamFloat("puke_damage_mul", 3.0) // puke damage increase multiplier
ParamFloat("spit_damage_mul", 3.0) // spit damage increase multiplier
ParamFloat("physics_damage", 60.0) // physics damage affect
ParamFloat("damage_mul", 1.0) // overall damage output of enemy multiplier
ParamFloat("damage_taken_mul_per_level_diff", 0.3) // damage multiplier for level difference vs player
ParamFloat("special_damage_mul", 1.0) // damage muliplier from special attacks
ParamBool("apply_damage_in_cone", 1) // applies damage in cone instead of directional attack
ParamFloat("time_btw_rot_pukes", 3.0) // time forced enemy must wait between rot attacks
ParamFloat("puke_range", 500.0) // max distance for enemy puke damage
ParamFloat("spit_range", 800.0) // max distance for enemy spit damage
ParamFloat("spit_min_range", 200.0) // min distance for enemy spit damage
ParamFloat("spit_speed", 800.0) // enemy speed of spit attack at player
// Experience
ParamFloat("experience_mul", 0.7) // experience given for killing enemy yourself
ParamFloat("assist_experience_mul", 0.4) // experience gained if helping friend kill enemy
ParamFloat("nearby_experience_mul", 0.1) // experience gained if friend kills enemy near you
ParamFloat("experience_mul_per_level_diff", 0.2) // experience multiplier for level difference vs player
// Movement
ParamFloat("walk_speed_calm", 90.0) // walking speed
ParamFloat("walk_speed_alarmed", 110.0) // walking speed to attractor or player
ParamFloat("run_speed_calm", 90.0) // run speed to attractor
ParamFloat("run_speed_alarmed", 350.0) // run speed to attractor or player
ParamFloat("sprint_speed_calm", 90.0) // sprint speed to attractor
ParamFloat("sprint_speed_alarmed", 480.0) // sprint speed to attractor or player
ParamFloat("walk_speed_alarmed_injured_leg", 110.0) // injured walk speed to attractor or player
ParamFloat("acceleration", 250.0) // animation shift speed to walk or run or sprint
ParamFloat("deceleration", 250.0) // animation shift speed to stop walk run or sprint
ParamFloat("berserker_speed", 420.0) // speed increase while in berserker
ParamFloat("crawl_speed", 80.0) // speed while crawling to attractor or player
ParamFloat("crawl_turn_speed", 65.0) // speed while crawling to turn around
ParamFloat("turn_speed", 120.0) // speed at which enemy turns around
ParamFloat("max_movement_turn_speed", 250.0) // alarmed turn speed when noticing attractor or player
ParamFloat("max_berserker_movement_turn_speed", 180.0) // max speed while in berserker to turn
ParamFloat("calm_turn_speed", 150.0) // calm or idle turning speed for enemy
ParamFloat("back_strafe_speed_mult", 0.85) // speed of strafing while backpeddaling
ParamFloat("side_strafe_speed_mult", 0.85) // speed of strafing while flanking
ParamFloat("min_jump_on_height", 0.0) // object size minimum to jump on
ParamFloat("max_jump_on_height", 0.0) // object size maximum to jump on
ParamFloat("max_jump_over_dist", 0.0) // distance of gap covered while jumping
ParamFloat("min_jump_down_height", 0.0) // willing distance of enemy to jump down
ParamFloat("ram_turn_speed_limit_far", 90.0) // allowed speed of enemy turn while ramming from far
ParamFloat("ram_turn_speed_limit_close", 50.0) // allowed speed of enemy turn while ramming up close
ParamFloat("after_ram_wait_time", 1.0) // pause time after ramming player to attempt ram again
// Distance
ParamFloat("melee_range", 150.0) // range check amount before enemy can attempt to melee
ParamFloat("bite_range", 120.0) // range check amount before enemy can attempt a bite
ParamFloat("melee_range_y", 120.0) // horizontal median allowed distance for enemy to attack
ParamFloat("max_pitch_angle", 0.0) // untested
ParamFloat("berserker_dist", 850.0) // max dist to start berserker while moving
ParamFloat("berserker_min_dist", 250.0) // min dist to start berserker while moving
ParamFloat("berserker_right_arm_attack_dist", 300.0) // distance enemy will check to swing with right arm
ParamFloat("berserker_left_arm_attack_dist", 300.0) // distance enemy will check to swing with left arm
ParamFloat("berserker_grab_dist", 600.0) // distance in berserker mode for enemy to try and grab
ParamFloat("berserker_grab_min_dist", 0.0) // distance in berserker mode for enemy to begin a grab
ParamFloat("berserker_ram_dist", 850.0) // enemy in berserker mode willing distance to ram target
ParamFloat("berserker_ram_min_dist", 100.0) // enemy in berserker mode beginning distance to attempt to ram target
ParamFloat("max_dist_to_grab_from_stand", 500.0) // grab from stand start max distance
ParamFloat("min_dist_to_grab_from_stand", 140.0) // grab from stand start min distance
ParamFloat("max_dist_to_strike_from_stand", 400.0) // max distance to strike after standing up
ParamFloat("min_dist_to_strike_from_stand", 200.0) // minimum distance to strike from standing up
ParamFloat("max_dist_to_stinger", 300.0) // stinger start max distance
ParamFloat("min_dist_to_stinger", 50.0) // stinger start min distance
ParamFloat("max_dist_to_grab", 100.0) // for check at moment of grabbing
ParamFloat("counterattack_dist", 180.0) // distance allowed for enemy to counterattack the player
ParamFloat("counterattack_angle", 60.0) // max angle allowed for a enemy to initiate a counter
ParamFloat("interior_sight_range", 600) // distance enemy becomes visible inside
ParamFloat("exterior_sight_range", 1000) // distance enemy becomes visible outside
ParamFloat("activity_player_check_dist", 200.0) // constant distance check for enemy to player
ParamFloat("max_dist_to_interest_attractor", 5000.0) // max distance before enemy notices attractor
ParamFloat("interest_attractor_duration", 7.0) // total time enemy takes interest in any attractor
ParamFloat("rise_from_dead_distance", 2500.0) // distance player must get for enemy to begin rising from dead
ParamFloat("rise_from_dead_distance_stinger", 170.0) // distance at which enemy will attack while rising from dead
ParamFloat("avoid_distance", 90.0) // distance if enemy can avoid that it will attempt to do so at
ParamFloat("ram_close_dist", 200.0) // distance check for enemy to ram player
ParamFloat("shooting_range", 550.0) // average distance allowed for enemy to throw weapon
ParamFloat("shooting_range_max", 1500.0) // distance allowed for enemy to throw weapon
// Probabilities
ParamFloat("berserker_fall_prob", 35.0) // chance to fall while in berserker for enemy
ParamFloat("berserker_hit_prob", 80.0) // chance of hit while berserker
ParamFloat("berserker_grab_prob", 65.0) // chance of grab while berserker
ParamFloat("berserker_ram_prob", 30.0) // chance of ram while berserker
ParamFloat("decapitation_prob", 100.0) // percent chance to allow for a decapitation of this enemy
ParamFloat("counter_attack_prob_mul", 80.0) // percent chance enemy will attempt to counter player
ParamFloat("counter_attack_from_stand_prob_mul", 65.0) // percent chance enemy will attempt to counter player while standing
ParamFloat("counter_push_prob_mul", 80.0) // percent chance enemy will attempt to counter with a push
ParamFloat("counter_combo_prob_mul", 65.0) // percent chance enemy will attempt to counter with a combo
ParamFloat("fall_on_shot_prob", 25.0) // chance of enemy falling down from being shot
ParamFloat("taunt_prob", 70.0) // chance of enemy taunting current target
ParamFloat("taunt_prob_on_target_change", 85.0) // chance of enemy taunting a new target
ParamFloat("dodge_prob_mul", 35.0) // chance enemy will attempt a dodge
ParamFloat("combo_prob_mul", 80.0) // chance enemy will initiate a combo attack
ParamFloat("weapon_throw_prob_mul", 60.0) // chance enemy will throw equipped weapon
ParamFloat("death_anim_prob", 30.0) // chance enemy will proc death animation on dying
ParamFloat("confusion_prob_mod", 30.0) // chance enemy will become confused on attack
ParamString("drop_item", "") // item dropped on enemy death
ParamFloat("drop_item_prob", 0.0) // chance item will drop on enemy death
// Switches
ParamBool("directional_melee_attacks", 1) // switch to allow directional attack from this enemy
ParamBool("can_fall", 1) // switch to allow this enemy to possibly fall
ParamBool("can_kick", 1) // switch to allow this enemy to be able to kick
ParamBool("can_finish", 1) // switch to allow this enemy to be able to use finishers
ParamBool("can_react_on_hit", 1) // switch to allow possible reaction to player on hit
ParamBool("can_react_on_bullet", 1) // switch to allow possible reaction to player on being shot
ParamBool("can_keep_distance_during_melee", 1) // switch to allow enemy to keep distance in a fight
ParamBool("can_fall_from_edge", 1) // switch to allow enemy to fall from ledges if too close
ParamBool("can_climb", 0) // switch to allow enemy to be able to climb dynamic objects
ParamBool("can_defend", 1) // switch to allow enemy to be able to defend itself
ParamBool("can_move_turn", 1) // switch to allow this enemy to be able to move turn while moving
ParamBool("can_fall_on_low_obstacles", 1) // switch to allow this enemy to possibly fall over small objects
ParamBool("can_attack_from_move", 1) // switch to always allow a enemy to attack while moving
ParamBool("can_strike_from_stand", 1) // switch to always allow enemy to attack after standing
ParamBool("always_react_on_bullet", 1) // switch to always allow enemy to always attack when shot
ParamBool("always_react_on_kick", 1) // switch to always allow enemy to always attack when kicked
ParamBool("can_react_on_hit_in_vehicle", 1) // enemy can react and attack on player while in vehicle
ParamBool("can_die_in_vehicle", 0) // allow enemy chance to die in vehicle
ParamBool("check_enemy_reachable", 0) // enemy check vs player to verify within distance
ParamBool("attack_enabled", 0) // switch to allow this enemy to attack the player
ParamBool("unconscious_instead_of_killed", 0) // switch to make enemy unconcious instead of dead
ParamBool("limb_cut_by_direct_hit", 1) // switch to allow possible dismemberment on direct hit
ParamBool("use_alt_physics_while_dying", 0) // alternate physics setup for death of enemy
ParamBool("one_shot", 0) // switch to allow for enemy dying in one attack
ParamBool("use_anim_speed_to_move", 1) // allows enemy animation while moving
ParamBool("always_strafe", 0) // enemy will always strafe
ParamBool("use_parallel_hit_reactions", 1) // multiple ai follow defined routines statically
ParamBool("can_attack_enemy_in_vehicle", 1) // allows enemy to attack a player in vehicle
ParamBool("fall_on_head_collision", 1) // collisions with dynamic enviroment on head touch
ParamBool("increase_aggression_level_on_enemy_pres ent", 1) // enemy aggression level enhance
ParamBool("grees_update_look", 1) // untested
ParamBool("can_roll_head", 1) // enemy is allowed to roll head on attack
// Timing
ParamFloat("min_time_btw_attack_from_stand_attempt s", 1.0) // min time (spawner borders) between grab attempts (0 in the center of normal spawner)
ParamFloat("max_time_btw_attack_from_stand_attempt s", 5.0) // max time (spawner borders) between grab attempts (a distance from normal spawner)
ParamFloat("time_btw_hit_berserkers", 0.0) // time between possible occurance of hit berserker attacks
ParamFloat("time_btw_grab_berserkers", 0.0) // time between possible occurance of catch berserker attacks
ParamFloat("time_btw_ram_berserkers", 2.0) // time between possible occurance of ram berserker attacks
ParamFloat("knock_down_duration", 0.5) // duration enemy will stay down when knocked down
ParamFloat("body_destroyed_knock_down_duration", 5.0) // duration after dismemberment enemy will stay on ground
ParamFloat("move_time_before_berserker", 0.2) // time enemy must move before allowed to reenter berserker
ParamFloat("untouchable_time_after_release", 0.5) // time forced on enemy before attemping another grab
ParamFloat("overturn_depth", 2) // depth at which enemy uses to turn over and stand up
ParamFloat("overturn_width", 1) // width at which enemy uses to turn over and stand up
ParamFloat("min_time_btw_hit_reactions", 0.05) // min time forced on enemy to wait between attacks
ParamFloat("avoid_time", 2.5) // time enemy uses to avoid
ParamFloat("recalculate_dynamic_path_time", 0.15) // allowed time for enemy to readjust finding player
ParamFloat("door_search_interval", 0.5) // time allowed for enemy AI to search for route to player
ParamFloat("special_move_disable_time", 2.0) // ai doesn't perform special movement (like berserker) after electrocution
ParamFloat("time_after_attack_before_loiter", 3.0) // time after player attack's enemy will wait before going back to idle pathing
ParamFloat("detect_enemy_delay", 1.5) // minimum time enemy will detect delay in attacker
ParamFloat("enemy_remember_time", 5) // time after attack enemy will remember player
ParamFloat("time_for_clench_check", 0.15) // time allowed in grab to click escape
ParamFloat("time_to_dodge_attack", 0.15) // time allowed for player to dodge incoming attack
ParamFloat("confused_on_unconscious_time", 0.0) // add confusion to unconcious time
// Main Variables
ParamFloat("static_path_node_radius", 90.0) // how far enemy will wander on set path
ParamFloat("dynamic_path_node_radius", 110.0) // how far enemy will wander on undefined path
ParamFloat("medium_severity_threshold", 50.0) // percent chance of a medium hit from this enemy
ParamFloat("heavy_severity_threshold", 80.0) // percent chance of a heavy hit from this enemy
ParamFloat("activity_coef", 1.0) // untested
ParamFloat("zombivity_coef", 1.0) // untested
ParamFloat("max_grab_zombies_num", 8.0) // max amount of zombies in group allowed before no grab attempt can be made
ParamFloat("max_player_catch_angle", 180.0) // max angle at which grab by enemy succeeds
ParamFloat("base_player_attackers_num", 9.0) // base number of AI attacking player
ParamFloat("max_player_attackers_num", 18.0) // max number of AI attacking player
ParamFloat("hit_physics_effect_mul", 1.0) // physics affect damage multiplier for enemy attacks
ParamFloat("connection_cost_mul", 3.0) // untested
ParamFloat("navi_mesh_sight_range", 1200.0) // untested
ParamFloat("max_dynamic_path_angle", 180.0) // degree turn allowed for pathing of enemy
ParamFloat("max_collision_angle_to_stop", 0.8581) // max angle for enemy to stop sprinting while ramming
ParamInt("zombie_type", 0) // specifies what type of enemy this is from presets
ParamFloat("heel_height", 0.0) // untested
ParamFloat("ellipsoid_size_mul", 1.3) // size of given enemy
ParamInt("max_level", 51) // max level allowed for enemy spawn
ParamInt("max_severity", 8) // max difficulty allowed on enemy vs player
ParamFloat("health_part_lost_unconscious", 0.0) // health damage inflicted automatically while unconscious
ParamFloat("threat_level", 5) // difficulty level allowed for enemy
ParamInt("burning_sound_type", SOUND_TYPE_BURNING) // sound file for enemy on fire
ParamInt("grab_fight_sound_type", SOUND_TYPE_LONG_BITE) // sound file for enemy attempting grab
ParamInt("berserker_move_sound_type", SOUND_TYPE_MOVE) // sound file for enemy entering berserker
ParamInt("idle_alarmed_sound_type", SOUND_TYPE_IDLE_ALARMED) // sound file for alarmed idle
ParamInt("idle_calm_sound_type", SOUND_TYPE_IDLE_CALM) // sound file for idle calm
ParamInt("starting_sound_type", SOUND_TYPE_IDLE_CALM) // sound file associated with starting
ParamInt("move_sound_type", SOUND_TYPE_MOVE) // sound file associated with moving
ParamFloat("arm_direct_hit_mul", 4.0) // multiplier when striking a clean hit on arm
ParamBool("force_counter_on_kick", 1) // switch to make enemy always react to your kick attempt
ParamBool("enable_collisions_with_other_ai", 1) // allow enemy to react to other enemies and objects
**Now most of these variables can be tweaked to change your enemies behavior how you prefer! Infected_data.scr inside the infected folder function's off the same call's, so essentially you can call a function there exactly how you do it with vessel_data.scr inside the Zombie folder. Human's are an exception, as they have different specific animation sequences, let's take a quick look at the variables that differ in the human_data.scr inside the human file. These call's will be different for them :
// Shooting Variables
ParamFloat("dist_to_look_on_player", 600.0) // distance npc will attempt to see player
ParamFloat("harassment_distance", 110.0) // distance at which npc will become alarmed if nonhostile
ParamFloat("harassment_reaction_delay", 2.0) // delay in reaction of becoming hostile
ParamFloat("shooting_range_max", 4000.0) // jesli przeciwnik jest bardziej oddalony niz shooting_range_max, wtedy ai podbiega na shooting_range
ParamFloat("shooting_range", 500.0) // minimum shooting range for this npc
ParamFloat("change_position_min_distance", 1000.0) // minimum distance before this npc will find different cover point
ParamFloat("min_distance_to_opponent", 500.0) // minimum distance before npc no longer uses cover
ParamFloat("stay_in_cover_time_min", 1.0) // shortest time ai stays in cover before next shoot
ParamFloat("stay_in_cover_time_max", 5.0) // longest time ai stays in cover before next shoot
ParamFloat("stay_in_cover_total_time_max", 10.0) // max allowed time for npc to find cover
ParamFloat("unconsciousness_duration", 360000.0) // knocked out time for this npc
ParamFloat("avoid_time", 2.0) // time allowed for this npc to avoid the player
ParamFloat("avoid_distance", 100.0) // distance at which to avoid player when dodging
ParamFloat("max_aim_time", 1.0) // max time allowed for NPC to aim at player
ParamFloat("min_aim_time_distance", 1000.0) // distance minimum of aim from npc
ParamFloat("max_aim_time_distance", 3000.0) // distance maximum of aim from npc
ParamFloat("base_hit_pause_time_pistol", 2.0) // base time allowed between shots of this npc
ParamFloat("base_hit_pause_time_revolver", 2.0) // base time allowed between shots of this npc
ParamFloat("base_hit_pause_time_rifle", 1.0) // base time allowed between shots of this npc
ParamFloat("base_hit_pause_time_shotgun", 2.0) // base time allowed between shots of this npc
ParamBool("can_interact", 1)
ParamFloat("shooting_strafe_range", 1500.0) // max range allowed for this npc to shoot while strafing
As you can see the human side has a few more gun related variables to configure. I've tried to divide them up and rewrite them in order, it was a jumbled mess in the vanilla version.
----------------------------------------------------------------------------------------------------------------------------------------------------
^Adding Item's to shops*
This one I've seen asked quite a few times. Let's open the DI>out>Data>shops.scr file to begin with, then scroll to this line :
ColorItem("Melee_BoGen", 3, 4, 10)
Now with this item, from left to right, let's go through what it means.
ColorItem - This is the main prefix and inject's the item into the loot tables of a color field
Melee_BoGen - Here is the name of our item, this is what type of weapon will spawn
3 - This is our loot table rarity chance, the higher the number, the larger chance of it spawning
4 - This is the rarity of the spawned item. It being a 4, we know this is a orange weapon.
10 - This is the minimum level of the weapon to spawn
So, now we know that this will spawn a orange Bo item with a minimum level of 10 with the chances of 3 (higher being more common). Now let's try injecting what item we would like to spawn into the field, for example, let's put a gun in there :
ColorItem("Firearm_ColtGen", 1, 4, 12)
Now we know, that it will instead now spawn out a Colt type firearm, that's orange, with a minimum level of 12 roughly 1/4 rarer chances than the Bo had. Now if you take a look at the field's you'll notice that there are spaces for Orange/Violet/Blue/Green/White for each shop. What this mean's is that you can specify more than one type blue, or violet for example to spawn, or you could do 3 blue's and 2 violet's that it would spawn, the choices are up to you! Now, that being said, the white Item's you'll notice have only one value by their field. This value denotes rarity, and is the ony value needed for white. A higher number will increase your chances of it showing up, and a lower number will decrease your chances, beware there is a minimum allowed rarity field for different weapons, as well as max for white. 2-4 seem to work just fine. The same applies for Items.
No comments:
Post a Comment