Skip to content
10Dozen edited this page Jun 14, 2016 · 24 revisions

What is it?

dzn_dynai (Dynamic AI) is the lite and user-friendly script tool to generate areas full of angry AI-controlled units.

Features:

  • Single- and multiplayer compatible
  • Spawn infntry and vehicles with selected crew
  • Units patrol their zones, call for reinforcements if they have loses or met more powerful force
  • CQB units that hold positions in houses and advance when hostiles come close enough
  • Caching of units placed far from players (270+ units per mission)
  • Easy to set up zone via simple html interface (using any modern web browser)
  • Ability to create zone both via editor and during the mission via scripts
  • Ability to control spawned units (behavior, assign new waypoints)

Installation

  • Download latest master branch from repository
  • Extract files to your mission folder

dzn_dynai also includes dzn_commonFunctions (obligatory) and dzn_gear (not obligatory, but allows to easilygear up spawned units with custom gear).

Step 1: Editor objects

  • Place single GameLogic object and name it - dzn_dynai_core.
  • Add another GameLogic object with appropriate name (e.g. NATO_BasePatrol), use only english letters and avoid spaces and special symbols (except _).
  • Synchronize GameLogic with dzn_dynai_core object.
  • Place one or several triggers, that represent area where units will be spawned and what area they will patrol after.
  • Synchronize trigger(s) with GameLogic.

Step 2: DynAI Helper

  • Go to tools and open xmlDynai.html file with any browser (e.g. Google Chrome).
  • Populate all fields:

     Name - a name of GameLogic object (e.g. NATO_BasePatrol)
     Side  - side of the zone. Default Arma3 unit classnames of selected side will be used at Unit References section.
     Is Zone Active - if checked - activates zone on mission start.
     
     Unit References - section that describe what groups will be spawned in zone:
              Count of groups - number of the groups of given type that will be spawned in zone.
              Add Unit - button to add infantry unit to group template:
                       Class of unit - unit classname, pre-populated if Side is chosen.
                       Kit for unit - name of dzn_gear kit that will be assigned to this unit.
                       Patrol/In building/In Vehicle - type of unit behaviour. Patrol - unit will move on foot, In building - unit will hold position inside buildings, In Vehicle - unit will take specified role in vehicle.
              Add Vehicle - button to add vehicle unit to group template (just vehicle, crew should be assigned as Infantry - In Vehicle - "driver"/"gunner"/"commander"/"cargo"):
                       Class of unit - vehicle classname.
                       Kit for unit - name of dzn_gear kit that will be assigned to this vehicle.
     
     Speed Mode - speed of the units.
     Behavior - behavior settings for units.
     Combat Mode - combat settings for units (use Yellow or Red to make units faster in engaging).
     Formation - formation of groups.
  • Click Create Zone Config button and copy generated array to dzn_dynai\Zones.sqf file.
  • If there are several zones - do not forget to separate arrays with comma

Step 3: Setup of dzn_dynai_init

  • Open dzn_dynai\dzn_dynai_init.sqf file
  • dzn_dynai_allowGroupResponse - if true - groups can call and provide reinforcement to each other.
  • dzn_dynai_forceGroupResponse - if true - all editor-placed groups will call and provide reinforcements.
  • dzn_dynai_responseDistance - max. distance for groups to response to reinforcement call.
  • dzn_dynai_complexSkill/tt> - if true - dzn_dynai_skill will use detailed skill values, if false - single number will be used to define units skill.
  • dzn_dynai_allowedHouses - list of allowed buildings for In building unit behaviour (you can restrict specific buildings here).
  • dzn_dynai_enableCaching - if true - unit caching will be used.
  • dzn_dynai_cacheDistance - max. distance from players where units are not cahced, all units outside this distance will be cached

Step 4: Scripting

Wait until dzn_dynai become initialized by waitUntil { !isNil "dzn_dynai_initialized" && { dzn_dynai_initialized } }; expression.
After dzn_dynai is initialized - you can use functions like dzn_fnc_dynai_activateZone.

Clone this wiki locally