What is JCOVE Lite?

JCOVE Lite is a stripped down, freeware version of the UK Ministry of Defense’s Joint Combat Operations Virtual Environment (JCOVE). JCOVE is based on VBS2 VTK by Bohemia Interactive and uses the same Real Virtuality 2 gaming engine as ArmA Armed Assault. You can download it by registering at jcove-lite.co.uk

First Impressions

If you are familiar with ArmA, JCOVE will be vary familiar. The menus, editor, scripting language, and control keys are all basically the same. The differences on the surface are negligible but nice improvements.  For example the gear menu is more functional:

  • allows squad leaders to move gear between nearby squad mates, bodies or ground
  • shows the weight of your gear, carrying capacity and load
  • provides a description and image of items

Gear Menu

One additional menu Item I like allows you to interact with vehicles. This will give you a graphical look at the vehicle and crew positions, allowing you to mount or move around the vehicle, open doors, start the engine etc. with a mouse click.

Interact Menu

Other additions include an action item for turned out crew members called Use Personal Items. This will allow some crew members of certain vehicles to shoot their personal weapons (rifle, grenades etc) while mounted in the vehicle. A nice addition that was always lacking in ArmA. Two features of VBS2 that have been stripped out of JCOVE lite are the After Action Report and Realtime Editor. Understandable since JCOVE Lite is not to be used for training, but disappointing.

The two landmasses that come with JCOVE are based on real world data and are quite detailed.  A woodland area based on the Warminster Land Warfare Centre in the UK and an arid landmass based on As Samawah in Iraq.

As Samawah

As Samawah


Both landmasses are quite detailed and provide a number of possible scenarios for mission builders. Personally I found As Samawah the most interesting, especially it’s large dense urban areas.

As Samawah JCOVE

As Samawah Street

The Downside

Since JCOVE was used for training, by design it is not as graphically impressive as ArmA, even though it uses the same engine.

Soldiers in a field

Soldiers in a field

The extra detail and fidelity of the models offsets not using the advanced shaders, but some gamers may still be put off by the lack of eye candy. Of greater concern to gamers are the limitations imposed on the freeware version of JCOVE. There is a maximum of 8 players in multiplayer. There is no dedicated server available. You can’t use any addons so you are stuck with the two landmasses and U.K./generic insurgent equipment. Unfortunately these last items limit the usefulness of JCOVE Lite for the casual gamer as compared to ArmA or Arma II. Still, for the price (free) JCOVE provides more play value than your average first person shooter. For a gamer looking for a more mature, realistic shooter, JCOVE Lite provides a nice free introduction to the world of ArmA and Arma II and is well worth the download.



  • It’s free! Hey, can’t go wrong with free.
  • hundreds of high quality addons.
  • large landmass – realworld based with many objects
  • some of the cool features of VBS2
  • can create and distribute your own single player and Multiplayer missions
  • well made, if small collection of single and multiplayer missions


  • only 8 players
  • no dedicated server
  • no additional addons,  only U.K. units
  • only 2 islands
  • no server browser, only direct connect through ip address
  • no After Action Report
  • no Realtime editor
  • small community
  • some of the models appear incomplete

Creating a Simple Mission – Part 5

Random Patrols

One way to give a mission a little more re-playability is to add some random elements. The built in function BIS_fnc_taskPatrol will allow me to assign my randomly created OPFOR AI a randomly created patrol route around a location.

See previous post for instructions on setting up the Functions editor module.

To call the function I need to provide:

  1. the group to patrol
  2. position to patrol around
  3. distance between waypoints
  4. area blacklist (optional)

In my mission I’ll add the following code to my group’s waypoint in the On.Act. field:

[group this, position this, 200] call BIS_fnc_taskPatrol;

This will give my group a series of waypoints 200 meters apart, randomly centered on the waypoint.

I’ve created a little sample mission with a script that spawns a group using BIS_fnc_spawnGroup then places markers on the BIS_fnc_taskPatrol generated waypoints.

Example of BIS_fnc_taskPatrol

After running the sample mission a  few times I’ve noticed a few things.

  1. The function doesn’t generate waypoints in the water.
  2. the number of waypoints is variable.
  3. the waypoints are random, so they may not be evenly spread around my center position. In the example screen shot below all the waypoints are north east of my center at WP5.
  4. the last waypoint is created on the center position that was passed to the function.
  5. the last wayopint is a “cycle” waypoint (I’m assuming this, I haven’t actually checked yet)

I really like this function and I can see myself using it a lot.

BIS_fnc_taskPatrol example

BIS_fnc_taskPatrol example

Creating a Simple Mission – Part 4

Spawning Random Groups

One of the functions (BIS_fnc_spawnGroup) BIS has provided allows you to spawn a random group or any group listed under the group (F2) function.

For my mission I’d like to spawn a random OPFOR  group of 12 units and have them patrol the town. I put a game logic where I wanted the group to spawn and typed the following in the init:

[position this, EAST, 12] call BIS_fnc_spawnGroup

What the script should do is spawn a random group of 12 Eastern units at the position of the game logic. Unfortunately however, this did not work. No matter what I tried, I could not get BIS_fnc_spawnGroup to work from the init line of a game logic. What I ended up doing was adding a waypoint to the game logic and placing the same code in the “on activation” field of the waypoint. This did work, but I’m not sure why.

Next: Random patrols

Creating a Simple Mission – Part 3

Secondary Operations Manager

The Secondary Operations Manager (SOM) editor module is used to manage player support requests or generate side missions (Secondary Operations or SecOps) that the player can perform. Usage of the SOM can be straight forward, but it has a few options to customize the generated SecOps missions that can be a bit hairy. To keep things simple I’ll start with the basic SOM module, disable the side SecOps missions and then add support missions for the player to call.

Support Requests

First I’ll insert the SOM module in the editor, making sure that it isn’t grouped with any other unit (F2). Then I’ll synchronize (F5) the module with the player. To disable the standard side missions I add the following code to the SOM module’s init.

this setVariable ["settings", [[], true, nil, nil, false]];

With the SOM module in place I’ll add the support requests for the player. The available support requests are: “transport”, “supply_drop”, “tactical_airstrike”, “artillery_barrage”

The only support I want the player to have is “artillery_barrage” and I want to limit it’s availability. I’ve also decided that the artillery will only be available once the player has completed the first objective, moving to the observation post I’d created before. So I create the first waypoint by the observation post and add this to the on activate field:

[["artillery_barrage"], player] call BIS_SOM_addSupportRequestFunc;

I could have used this same code on a repeating trigger to have unlimited artillery missions, but for my simple little mission this will work quite well.

Next: creating adversaries

Creating A Simple Mission – Part 2

In my last entry I showed how to create an observation post using Dynamic Object Compositions or DynO module. Now it’s time to man my post with friendlies.


The easiest way to accomplish the manning of my observation post is with the built in funtion bis_fnc_taskDefend
This function will cause some members of a group to man static weapons within 100m of a position, sit on the ground or patrol the area. Very cool.

First I have to add the Functions editor module, making sure it is neither grouped, or synchronized with anything. This module will make all the BIS functions available in my mission. Next I add a Bluefor squad and create them a waypoint at my observation post. In the on activation field of the waypoint I’m going to add two lines of code to setup the defense of the observation point.

The first line of code:

waituntil {!isnil “bis_fnc_init”};

just causes the script engine to wait until the Functions module is done initializing. The next bit of code:

[group this, getPos obs_post] call bis_fnc_taskDefend

calls the bis_fnc_taskDefend with my Bluefor group’s name and the position of my observation post game logic (obs_post). The group should then man the .50cal of my observation post while others patrol or loiter around the defenses.

Next time: Playing around with the Secondary Operations Manager.