Map Indexing
Contents
Map Indexing Step by Step Instructions
Preparation
Read and follow these instructions very carefully!
- ALiVE must be in
@ALiVE
folder in ArmA3 (Warning: folder name is case sensitive!) -
ALiVEClient.dll
andalive_object_blacklist.txt
must be in the @ALiVE folder (download here if you don't have it http://alivemod.com/...t_blacklist.txt - Acquire a copy of Mikero's Tools, specifically DeWrp.exe and DePbo.dll (the version dated 09/08/2014 seems to work OK).
-
DeWRP.exe
must be installed on Windows (i.e. have a dewrp.exe directory set in your PATH environment variable) - Make sure all .exe and .dll files are 'unblocked' in Windows (right-click, Properties)
- Download Baretail and use it to monitor the ArmA3 rpt file as you run the Indexer (
c:\users\username\appdata\local\ArmA 3\
)
Index the Map!
- Start ArmA with command line
-mod=@ALiVE; @CBA_A3; @YourCustomMap -filePatching
- Open the Editor
- Place down a player unit
- Place the
ALiVE Map Indexer
Module- Settings
- Object Categorization:
-
Yes
Allows you to categorize map objects and is the default for all new maps. -
No
Select No only if you have an existing static data file for this map (e.g. if you are re-indexing an old map OR you wish to accept the Stratis/Altis defaults). The existing static data file must be placed in@ALiVE\indexing\mapname\x\alive\addons\main\static\mapname_staticData.sqf
-
- Map PBO file path Path and filename of the map in your ArmA3 folder (e.g.
@mapname\addons\mapname.pbo
) - Custom Map Bounds Used for fixing cluster coverage on incorrectly configured map sizes. Set to 0 by default.
- Object Categorization:
- Settings
- Launch game, go to map screen and zoom out to see whole map
- Open the ALiVE interaction menu (default key
Right App Menu
) and selectMap Indexing
- A cmd.exe window will launch (this is deWRP doing its thing)
- Press any key when it says so.
- To categorise objects, select all the relevant criteria for the displayed object then click next. Refer to the section below on Static Data for details.
- The process will pause after object categorising is complete, providing an opportunity to edit the statiddata.sqf in the
@ALiVE/indexing/x/alive/addons/main/static
folder and manually correct any mistakes. ThenPress any key to continue
the indexing process. - Sit back and relax while analysis and clustering happens. This can take up to 30 mins on vary large maps - monitor progress in baretail and don't worry if nothing seems to happen for several minutes. ArmA3 will not respond during this time - DO NOT CLOSE IT! Note that while you can alt tab out, ArmA3 must be the active window for indexing to conclude.
- Once completed all files will be in
@ALiVE\indexing\mapname\x
Test your Index
- Go back to the editor and create a new mission
- Place down a player unit
- Place down the
ALiVE Required module
- Place down the
ALiVE Virtual AI module
, enable debug, virtualize all except synced units - Place down the
ALiVE Military Placement (Mil. Obj.)
module, enable debug - Place down the
ALiVE Military Placement (Civ. Obj.)
module, enable debug - Save the mission as Index
- Copy the
@ALiVE\indexing\mapname\x
folder into your Index.YourMap mission folder, for example "C:\My Documents\Arma 3\missions\index.Kunduz
" - Check that
C:\My Documents\Arma 3\missions\index.yourmap\x\alive\addons\main\static\yourmap_staticData.sqf
exists. - Press Play Scenario
- Check the mission loads without error and that units are spawning in the correct locations
- If you have any issues, re-index the map, set the Map Bounds (in the Indexer Module settings) to the size of the map rounded up to the nearest 1000, i.e. 5120 = 6000. Make sure you delete everything under the
@ALiVE\indexing\mapname\x\
folder EXCEPT for your@ALiVE\indexing\mapname\x\alive\addons\main\static\mapname_staticData.sqf
file. Ensure you select No to object categorisation (in the Indexer Module settings).
- If you have any issues, re-index the map, set the Map Bounds (in the Indexer Module settings) to the size of the map rounded up to the nearest 1000, i.e. 5120 = 6000. Make sure you delete everything under the
Post on the ALiVE Forum
- Zip up your x folder
- Post on the ALiVE Forum a topic Complete Index of _mapname_
What is Static Object Data?
ALiVE indexing needs to know whether map objects are Civilian or Military before it can fine clusters to turn into Objectives for the AI Commanders. They are also used for the ambient placement of vehicles, supplies, HQ's, civilians, player tasks and many other things.
Unfortunately not all maps use objects the same way. For example, the ArmA object "hangar" is often used by map makers in a civilian factory setting. Some objects may appear in multiple categories. The only way to interpret this context correctly is for a human to do it. We therefore need to build a static data file which categorises the map objects for ALiVE.
What are the categories and what do they mean?
Using the Indexing Object Viewer, you should select all the categories that apply to each building object as they are displayed. These are added to a staticdata.sqf file for merging into the master code later.
A count of the number of objects to be categorised as at the bottom of the screen alongside the ArmA3 model name for reference. The model name gives a useful indication of the type of object you are looking at.
- Blacklist - objects that have no relevance and will be removed from the index (e.g. clutter, carts, boxes, pipes, wood blocks etc)
- Military Buildings (General) - any building that is in a military base or camp (e.g. bunker). This is a very important building category for defining military objectives!
- Allow Ambient Vehicles - ambient vehicles will be placed near these buildings by the Military Placement module.
- Allow Ambient Supplies - ambient supply boxes will be spawned around these buildings by the Military Placement module.
- Allow HQ - can be selected as HQ locations by the Military Placement module. You should have at least one building of this type on the map.
- Aircraft (Fixed Wing) - buildings such as control towers, runways and hangars. Mil Placement can also spawn fixed wing aircraft in suitable locations.
- Military or Civilian - determines whether the buildings will be considered a military or civilian objective. For best results you should only select one.
- Aircraft (Rotary Wing) - mostly helipads.
- Military or Civilian - determines whether the object will be considered a military or civilian objective.
- Civilian Buildings (General) - any civilian building (e.g. house). This is a very important building category for defining civilian objectives!
- Allow HQ - Civ buildings that can be used as an HQ by the Mil Placement modules.
- Allow Ambient Civilians - buildings which will be used by the Civ Pop module to spawn ambient civilians. Works best with enterable buildings.
- Civilian Infrastructure Buildings - these will be considered priority targets for Tasks and Insurgents in Asymmetric. They also contribute towards defining Civilian Objectives for Mil Placement.
- Power - e.g. power plants
- Comms - e.g. TV mast
- Marine - e.g. pier
- Rail - e.g. rail station
- Fuel - e.g. gas station
- Construction - e.g. WIP building site
Staticdata.sqf category translation
The static data arrays translated from the Object Viewer explains below with a description of how they are used by the various Placement Modules. You can manually edit these arrays to correct any errors made using the Object Viewer.
- ALIVE_airBuildingTypes = buildings that ambient fixed wing aircraft will spawn in by the Military Placement module
- ALIVE_militaryParkingBuildingTypes = buildings that ambient vehicles will be placed around / nearby by the Military Placement module
- ALIVE_militarySupplyBuildingTypes = buildings that ambient supply boxes will be placed around by the Military Placement module
- ALIVE_militaryHQBuildingTypes = buildings that can be selected as HQ locations by the Military Placement module
- ALIVE_militaryHeliBuildingTypes = buildings that ambient military helicopters will spawn in by the Military Placement module
- ALIVE_militaryBuildingTypes = All military buildings (should also include all buildings listed in Parking, Supply & HQ categories)
- ALIVE_civilianPopulationBuildingTypes = buildings that ambient civs can spawn in and ambient vehicles can spawn around
- ALIVE_civilianSettlementBuildingTypes = all buildings used to create a civilian cluster (this should include all buildings listed in CivilianPopulationBuildingType)
- ALIVE_civilianHQBuildingTypes = civilian buildings that can be selected as HQ locations by Mil Placement module.
The remaining categories are used to determine civilian or military infrastructure targets for high priority objectives. Try include only buildings that are unique to this category.
- ALIVE_militaryAirBuildingTypes = (e.g. control tower on a military airbase)
- ALIVE_civilianAirBuildingTypes = (e.g. control tower on a civilian airport)
- ALIVE_civilianHeliBuildingTypes = (e.g. helipads in civilian locations)
- ALIVE_civilianPowerBuildingTypes = (e.g. power sub station)
- ALIVE_civilianCommsBuildingTypes = (e.g. TV mast)
- ALIVE_civilianMarineBuildingTypes = (e.g. pier)
- ALIVE_civilianRailBuildingTypes = (e.g. rail station)
- ALIVE_civilianFuelBuildingTypes = (e.g. gas station)
- ALIVE_civilianConstructionBuildingTypes = (e.g. WIP building site)
Example Static Data
The static data arrays look something like this once they're all plugged in. Note that you do not need the full object name in the variable, so for example the variable mil_house recognises mil_house_1; mil_house_2; mil_house_2a...etc
ALIVE_airBuildingTypes = ALIVE_airBuildingTypes + [ "hangar" ]; ALIVE_militaryParkingBuildingTypes = ALIVE_militaryParkingBuildingTypes + [ "bunker", "cargo_patrol_", "research", "barrack", "airport", "mil_house", "mil_controltower", "mil_guardhouse", "deerstand", "u_barracks_v2_f" ]; ALIVE_militarySupplyBuildingTypes = ALIVE_militarySupplyBuildingTypes + [ "barrack", "cargo_hq_", "cargo_patrol_", "research", "posed", "mil_controltower", "fuelstation_army", "mil_house" ]; ALIVE_militaryHQBuildingTypes = ALIVE_militaryHQBuildingTypes + [ "barrack", "cargo_hq_", "barrack", "mil_house" ]; ALIVE_militaryAirBuildingTypes = ALIVE_militaryAirBuildingTypes + [ "airport_tower" ]; ALIVE_civilianAirBuildingTypes = ALIVE_civilianAirBuildingTypes + [ "ss_hangar", "hangar_2", "hangar", "runway_beton", "runway_end", "runway_main", "runway_secondary" ]; ALIVE_militaryHeliBuildingTypes = ALIVE_militaryHeliBuildingTypes + [ ]; ALIVE_civilianHeliBuildingTypes = ALIVE_civilianHeliBuildingTypes + [ "heli_h_civil" ]; ALIVE_militaryBuildingTypes = ALIVE_militaryBuildingTypes + [ "airport_tower", "bunker", "cargo_patrol_", "research", "army_hut", "mil_wall", "fortification", "dome", "deerstand", "barrack", "mil_house", "mil_controltower", "mil_guardhouse", "deerstand", "hospital" ]; ALIVE_civilianPopulationBuildingTypes = ALIVE_civilianPopulationBuildingTypes + [ "house_", "shop_", "garage_", "stone_" ]; ALIVE_civilianHQBuildingTypes = ALIVE_civilianHQBuildingTypes + [ "offices", "a_office01" ]; ALIVE_civilianPowerBuildingTypes = ALIVE_civilianPowerBuildingTypes + [ "dp_main", "spp_t", "pec_", "powerstation", "trafostanica" ]; ALIVE_civilianCommsBuildingTypes = ALIVE_civilianCommsBuildingTypes + [ "communication_f", "telek", "telek1", "transmitter_tower" ]; ALIVE_civilianMarineBuildingTypes = ALIVE_civilianMarineBuildingTypes + [ "crane", "lighthouse", "nav_pier", "pier_", "pier" ]; ALIVE_civilianRailBuildingTypes = ALIVE_civilianRailBuildingTypes + [ ]; ALIVE_civilianFuelBuildingTypes = ALIVE_civilianFuelBuildingTypes + [ "fuelstation", "dp_bigtank", "indpipe", "komin", "ind_tankbig" ]; ALIVE_civilianConstructionBuildingTypes = ALIVE_civilianConstructionBuildingTypes + [ "wip", "bridge_highway", "sawmillpen", "workshop" ]; ALIVE_civilianSettlementBuildingTypes = ALIVE_civilianSettlementBuildingTypes + [ "church", "hospital", "amphitheater", "chapel_v", "households", "generalstore", "house", "domek", "dum_", "kulna", "afbar", "panelak", "deutshe", "dum_mesto_in", "dum_mesto2", "hotel" ]; };