Dynamic AI Creator OpFor Zones for JCOVE Lite

Dynamic AI Creator ( DAC )

Using DAC to spawn OpFor AI is exactly the same as I’ve done for civilians, but with more options and potential. This week I’m going to create three OpFor spawn zones and link two of them together. I’ll build on the mission I created last week, so see this post if you need instructions on how to setup DAC.

Creating OpFor Zones

As I did with civilians in the last post, I’m going to insert triggers in my village to create OpFor zones. The differences will be in the size, name and On Act. script, otherwise the triggers are exactly the same.

Settings for my 1st OpFor Zone:

Name: op1

Axis a: 150

Axis b: 150

On Act.: [“op1“,[10,0,0,150,150],[2,2,10,4],[],[ ],[ ],[2,2,2,0]]exec “DAC\Scripts\DAC_Init_Zone.sqs”

I’ve highlighted in red the parameters that are different from my previously created civilian zone.

  • “op1”: name of the trigger, must be unique
  • [10,0,0,150,150]: 10 is the DAC zone ID number. 150 is the trigger’s a & b axis (the size of the zone)
  • [2,2,10,4]:  This tells DAC that I want; 2 infantry groups with size 2 (2-6 units per group), 10 total waypoints, 4 waypoints assigned to each group.
  • [2,2,2,0]: sets the zone’s AI to; side Resistance, Resistance Units, Resistance behaviour.

Linking Zones

Linking zones will combine all the waypoints in the zones into one pool and make them available for all the units in the linked zones. To link zones all I have to do is use the same DAC zone ID number in my On Act. call to DAC_Init_Zone.sqs.

eg.

op1 On Act.: [“op1“,[10,0,0,150,150],[2,2,10,4],[],[ ],[ ],[2,2,2,0]]exec “DAC\Scripts\DAC_Init_Zone.sqs”

op2 On Act.: [“op2“,[10,0,0,150,150],[2,2,10,4],[],[ ],[ ],[2,2,2,0]]exec “DAC\Scripts\DAC_Init_Zone.sqs”

By using the same DAC zone ID number 10 I’ve linked these zones, giving the groups spawned in them access to a pool of 20 waypoints  ( 10 from op1 + 10 from op2).

Non-linked Zones

For my third zone I want to generate wheeled vehicles available for support to the other two zones, but otherwise I don’t want the wheeled vehicles to be around zones op1 and op2.

Name: op3

On Act.: [“op3”,[11,0,0,150,150],[],[3,2,6,2],[ ],[ ],[2,2,2,0]]exec “DAC\Scripts\DAC_Init_Zone.sqs”

Because I’m using 11 as my DAC zone ID number,  zone op3 is not linked to zones op1/op2. Therefore zone op3 does not share waypoints, but DAC will make the units available for support calls from zones op1/op2.

If you have any questions feel free to send me an email or post a comment.

Reference

Sample JCOVE mission created in this article: Morning_Sweep_v1_1
Previous post – Setting up a Mission with DAC

DAC for ArmA includes documentation
Bis forum entry for more info.
DAC for JCOVE at www.jcovelite.co.uk (registration required).

Dynamic AI Creator for JCOVE Lite

Dynamic AI Creator ( DAC )

DAC is a suite of scripts originally created for Operation Flashpoint by the folks over at Mapfact.net then later ported to ArmA. At it’s most basic, DAC allows the mission builder to dynamically spawn groups of AI and waypoints, but DAC’s features are many. Too many to list, so here is a partial list of my favorites in no particular order:

  • dynamic AI spawn camps
  • AI radio chatter
  • Player/AI artillery support
  • automatic dead body removal (for improved performance)
  • improved AI tactics
  • dynamic AI group reduction (for improved performance when not around the player)

DAC is one of my most favorite set of scripts, so I was very pleased to see that burns had added the VBS2 unit classes to DAC and made a sample mission for JCOVE (see Resources at bottom).

How to use DAC

DAC is very well documented and comes with sample missions, but even so it can be a bit daunting to setup and get working. To get you started I’ll walk you through setting up a simple mission that uses DAC to spawn civilians.

Creating the Mission

To start I’ll open the mission editor and insert a player unit, naming it “s1”. In order for the DAC AI to react to the players DAC needs to know the names of the player units. By default the DAC assumes playable units are named s1 to s16. This can be changed in a config script, but for simplicity I’ll just call my unit s1.

I now save the mission and give it a name, in my example “Morning Sweep”. Then I alt-tab out of JCOVE so I can open up “my documents” and navigate to the jcove, missions folder. Into my mission folder “Morning Sweep.Sama”, I copy the DAC folder as well as the Init.sqf file, both supplied by burns. I then alt-tab back into JCOVE and save the mission, so JCOVE will recognize the changes I’ve made.

Creating AI Zones

DAC creates and manages the AI using “zones” defined in the mission editor. A zone could be as big as the entire map, but for improved performance it’s better to use many smaller zones. In my example I want to have some civilians populate a village about 350 x 450 meters in size, so I start by inserting a trigger in the center of the village with the following settings:

Axis a: 350

Dynamic AI Creator DAC trigger example

DAC trigger example

Axis b: 450

Shape: Rectangle

Activation: Gamelogic, Repeatedly, Present, Countdown

Name: z1

Condition: true

On Act.: [“z1”,[1,0,0,350,450],[10,2,50,6],[10,2,30,5],[ ],[ ],[3,3,3,0]]exec “DAC\Scripts\DAC_Init_Zone.sqs”

Everything is straight forward until we get to that bit of script in the On Act. (On Activation) field, then things get a bit hairy. For those who have never programmed before, it’s an array of seven parameters that the trigger passes to the script DAC_Init_Zone.sqs to create my first zone. Here’s a breakdown of the seven parameters:

  1. “z1” – This is the name of the trigger that we have created.
  2. [1,0,0,350,450] – 1 is the DAC ID of this zone, 0 means the zone is active at mission start, the next 0 means I’m not using any special events, 350 is the trigger’s a axis, 450 is the trigger’s b axis.
  3. [10,2,50,6] – 10 infantry groups, 2 group size (2-6 units/group), 50 waypoints, 6 waypoints for each group.
  4. [10,2,30,5] – 10 wheeled vehicle groups, 2 group size (2-6 units/group), 30 waypoints, 5 waypoints for each group.
  5. [ ] – empty in my example, normally used for tracked vehicles.
  6. [ ] – empty in my example, normally used for helicopters or spawn camps
  7. [3,3,3,0]- side 3 (civilian), unit configuration 3 (JCOVE civilians), default behavior 3 (civilian), spawn camp type 0

So if I’ve typed everything correctly, when I preview my mission DAC should create a zone 350 x 450 meters populated by 10 civilian groups on foot and 10 groups mounted in vehicles.

Reference

Sample JCOVE mission created in this article: Morning Sweep v1

Related Posts:

DAC OpFor Linked Zones

DAC for ArmA includes documentation
Bis forum entry for more info.
DAC for JCOVE at www.jcovelite.co.uk (registration required).

Guard Waypoint

Guard Waypoint

The guard waypoint is used to instruct one or more AI groups to defend a particular location. Only one group will defend the location at a time, but when the first group is defeated the second will move in to defend. The guard waypoint is designed to be used with the ‘Guarded by‘ trigger.

Insert the Trigger

Place the trigger on the location you want the AI to defend. Set the type to guarded by and the side that will defending this point. The size, activation and orientation of the trigger has no effect.

Insert the Groups

Insert the groups and give them a guard waypoint. The group with the closest guard waypoint they will then move to the trigger location. The other groups will wait at their guard waypoints until called by the  trigger when the first group either flees or is destroyed.

according to the biki

Without a Trigger

You can also use guard waypoints without a Guarded by trigger. The AI group will move to their guard waypoint and wait. When another AI group comes into contact with enemy forces, it may call on the group with the guard waypoint for support. The guarding group will then move to engage the enemy. Once the area is clear, the guarding group will then move back to its guard waypoint and wait for another support call. Using the guard waypoints in this manner makes it easy to setup a mission where the AI can call for support without you having to use a script.

Mission Review: Election Day

I was over at www.jcove-lite.co.uk and grabbed a mission to try out. Thought I’d try and write a quick little mission review.

Mission Details:

Scenario Name: Election Day
Version:
1.02
Author: W0lle
Scenario Type:
Cooperative for 1 – 12 Players
Island: As Samawah
Side: West
Respawn: Group
Required: JCOVE Lite or VBS2 v1.18+
Features: Random time, random weather conditions

The objective for this mission is quite simple. On election day your section is tasked with protecting a polling station from insurgents. There is a selection of vehicles available to you, the heaviest of which is a mastiff. Support consists of an aid station and medic.

The layout of the polling station, equipment selection and objectives give this mission a realistic feel. At least more so than the usual rambo wins the war type missions.

Despite its simplicity the mission can still be a challenge. I played this mission twice in single player and even though I managed to eliminate the insurgents I failed to protect the civilians. I’m sure Multiplayer would have been more interesting, but my regular lan gaming group have no interest in this sort of game so I couldn’t try it.

But If you’re looking for a 20 minute challenge a bit different than the norm, go grab the mission from www.jcove-lite.co.uk.

Starting a Mission in a Parachute

Starting a Mission in a Parachute

To have the player start an ArmA mission in a deployed parachute is quite easy. Select F1 to insert a unit, choose your side and for Class select Air. Select parachute as the Unit type. Make sure you set Special to flying, and you will start the mission as a Special Forces unit floating in a parachute.  If you want to have anything other than the default Special Forces unit, it is a bit more involved.

Insert a Playable Unit

In the mission editor you first have to insert a playable unit so that EMPTY will then be a valid option under SIDE. Note that this doesn’t have to be the unit that will start the mission in the parachute. Once a playable unit is on the map you can then insert an empty parachute.

Insert an Empty Parachute

Insert a unit and for side: chose empty. If  empty is not an option and you only see West or East, make sure you have a player unit on the map and try again. Once you have selected Empty as the side, select Class type Air, then Unit: parachute. Set Special: to Flying and give the parachute a name. For this example I’ve called it p1. Now that you have an empty parachute we can move the unit we want into it.

Move Unit Into Parachute

To place a unit into the empty parachute insert this line of code into the unit’s initialization field.

this moveInDriver p1

Where this refers to the unit we’re putting into the parachute, and p1 is the name of the parachute.

Now when you start the mission this unit will be floating in a deployed parachute.

Note that this method will only work with units of class Man. To attach another type of unit to a parachute, for example a tank, would require more complex scripting.  An example of this would be kronzky’s air drop script.