Difference between revisions of "Map Indexing"

From ALiVE Wiki
Jump to: navigation, search
 
(79 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Indexing maps for ALiVE is relatively straight forward process but there are some laborious manual steps involved.  By far the most time consuming is defining the Static Data for custom maps so that ALiVE can understand the context in which building objects are used.  For example, a "house" object could be used in both a military context such as a compound or army base but it may also be used in a civilian town context.  To make matters worse, there is no standard naming convention or pattern to it, even with stock BIS objects.  ArmA2 buildings are named differently to ArmA3 ones and that's before we even get into mods and addons.  A computer isn't intelligent enough to correlate the data so we need to give it instructions in the form of static data.  Finally, the only way to know if you've got it right is to run the map analysis, which can take up to 30 mins on larger maps!
+
= Map Indexing Step by Step Instructions =
  
== Indexing Steps ==
+
== Preparation ==
  
This is a very basic summary of the main steps taken to index a map for ALiVE:
+
Read and follow these instructions very carefully!
  
# Capture and parse a list of all map objects to scrub irrelevant junk like trees and rocks
+
# BattlEye MUST BE DISABLED - you can enable/disable through the A3 Launcher or using your .cfg file
# Manually define building types in the context they are used by the map maker (Static Data)
+
# It is recommended you either temporarily disable your AV software or exclude the indexing folder from AV scanning
# Autodetect building clusters to identify civilian and military centres
+
# ALiVE must be in <code>@ALiVE</code> folder in ArmA3 (Warning: folder name is case sensitive!)
# Generate ALiVE objectives
+
# <code>ALiVEClient.dll</code> and <code>alive_object_blacklist.txt</code> must be in the @ALiVE folder
 +
# Acquire a copy of Mikero's Tools, get them here https://www.dropbox.com/s/zs5iforxoflasdt/dewrp_alive.zip?dl=1
 +
# <code>DeWRP.exe</code> must be installed on Windows (i.e. have a dewrp.exe directory set in your PATH environment variable)- http://www.computerhope.com/issues/ch000549.htm
 +
# Make sure all .exe and .dll files are 'unblocked' in Windows (right-click, Properties)
 +
# Download the following [http://alivemod.com/downloads/scripts.zip <code>scripts</code>] folder and copy to <code>C:\Users\*username*\My Documents\Arma 3</code>
 +
# Download Baretail and use it to monitor the ArmA3 rpt file as you run the Indexer (<code>c:\users\username\appdata\local\ArmA 3\</code>)
  
 +
== Index the Map! ==
  
== Defining Static Data ==
+
# Start ArmA with command line <code>-mod=@ALiVE; @CBA_A3; @YourCustomMap -filePatching</code>
 +
# Open the Editor
 +
# Place down a player unit
 +
# Place the <code>ALiVE Map Indexer</code> Module
 +
## Settings
 +
### <code>Object Categorization</code>:
 +
#### <code>Yes</code> Allows you to categorize map objects and is the default for all new maps.
 +
#### <code>No</code>  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 files can be downloaded from the ALiVE repo on [https://github.com/ALiVEOS/ALiVE.OS/tree/master/addons/main/static github here] and must be placed in <code>@ALiVE\indexing\mapname\x\alive\addons\main\static\mapname_staticData.sqf</code>
 +
### <code>Map PBO file path</code> Path and filename of the map in your ArmA3 folder (e.g. <code>@mapname\addons\mapname.pbo</code>)
 +
### <code>Custom Map Bounds</code> Used for fixing cluster coverage on incorrectly configured map sizes.  Set to 0 by default.
 +
# Save the mission as index
 +
# Launch game, go to map screen and zoom out to see whole map
 +
# Open the ALiVE interaction menu (default key <code>Right App Menu</code>) and select <code>Map Indexing</code>
 +
# A cmd.exe window will launch (this is deWRP doing its thing)
 +
# Press UP arrow on your keyboard (do not press space bar or ESC) when it says to <code>press any key to continue</code>
 +
# 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 <code>@ALiVE/indexing/x/alive/addons/main/static</code> folder and manually correct any mistakes. 
 +
## Check that all arrays in your staticData file are terminated i.e. finish in <code>];</code> for example the ALIVE_BLACKLIST array sometimes is not terminated correctly when lots of objects have been blacklisted.
 +
# Then press 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.
 +
## NOTE: Open the RPT in Baretail - ensure the log is being updated. If it is stuck on <code>Generating Sector Data</code> then you will need to copy the <code>\x</code> folder found in the <code>\scripts</code> folder into your mission folder (<code>C:\My Documents\Arma 3\missions\index.yourmap\x</code>).
 +
# Once completed all files will be in <code>@ALiVE\indexing\mapname\x</code>
  
Understanding how the map maker has used building objects and ensuring they are placed in the right context is key to successfully indexing a map.  This can take a lot of trial and error and literally teleporting around a new map cursorTargetting buildings with the debug console to see where they're used.  If you get it wrong, the subsequent automatic analysis has to be redone.
+
If you have any issues please post your RPT and log.txt file (under <code>@ALiVE\indexing\mapname\</code> to the ALiVE Forum (map indexing section)
  
The different contexts recognised by ALiVE are as follows:
+
== Test your Index ==
 +
* Go back to the editor and create a new mission
 +
* Place down a player unit
 +
* Place down the <code>ALiVE Required module</code>
 +
* Place down the <code>ALiVE Virtual AI module</code>, enable debug, virtualize all except synced units
 +
* Place down the <code>ALiVE Military Placement (Mil. Obj.)</code> module, enable debug
 +
* Place down the <code>ALiVE Military Placement (Civ. Obj.)</code> module, enable debug
 +
* Save the mission as IndexTest
 +
* Copy the <code>@ALiVE\indexing\mapname\x</code> folder into your IndexTest.YourMap mission folder, for example "<code>C:\My Documents\Arma 3\missions\indexTest.Kunduz</code>"
 +
* Check that <code>C:\My Documents\Arma 3\missions\indexTest.yourmap\x\alive\addons\main\static\yourmap_staticData.sqf</code> 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 <code>@ALiVE\indexing\mapname\x\</code> folder EXCEPT for your <code>@ALiVE\indexing\mapname\x\alive\addons\main\static\mapname_staticData.sqf</code> file. Edit your static data file where the ALIVE_MapBounds value is set. Ensure you select No to object categorisation (in the Indexer Module settings).
  
=== Military Buildings ===
+
== Post on the ALiVE Forum ==
  
*ALIVE_militaryBuildingTypes
+
* Zip up your x folder
*ALIVE_militaryParkingBuildingTypes
+
* Post on the ALiVE Forum a topic Complete Index of _mapname_
*ALIVE_militarySupplyBuildingTypes
+
* If you disabled your AV to run the indexing process don't forget to turn it back on!!
*ALIVE_militaryHQBuildingTypes
+
*ALIVE_militaryAirBuildingTypes
+
*ALIVE_militaryHeliBuildingTypes
+
  
=== Civilian Buildings ===
+
= What is Static Object Data? =
  
*ALIVE_civilianAirBuildingTypes
+
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.
*ALIVE_civilianHeliBuildingTypes
+
*ALIVE_civilianPopulationBuildingTypes
+
*ALIVE_civilianHQBuildingTypes
+
*ALIVE_civilianSettlementBuildingTypes
+
  
=== Civilian Infrastructure ===
+
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. 
  
*ALIVE_civilianPowerBuildingTypes
+
 
*ALIVE_civilianCommsBuildingTypes
+
== What are the categories and what do they mean? ==
*ALIVE_civilianMarineBuildingTypes
+
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.
*ALIVE_civilianRailBuildingTypes
+
 
*ALIVE_civilianFuelBuildingTypes
+
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.
*ALIVE_civilianConstructionBuildingTypes
+
 
 +
[[File:objectview.png|640px]]
 +
 
 +
* 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)
  
  
Line 199: Line 283:
 
};
 
};
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
== How Can You Help? ==
 
 
Providing the Static Data array for a map would be a huge help to the ALiVE team.  We have tools to generate the raw indices and report a list of building types used in the map but plugging it all together takes considerable effort.  There is still a fair degree of trouble shooting that we need to do but completing these steps would help us crack on with more user made maps!
 
 
Please post on the alivemod.com forums if you're interested and we can discuss the possibilities of taking this forward!
 

Latest revision as of 06:20, 23 April 2019

Map Indexing Step by Step Instructions

Preparation

Read and follow these instructions very carefully!

  1. BattlEye MUST BE DISABLED - you can enable/disable through the A3 Launcher or using your .cfg file
  2. It is recommended you either temporarily disable your AV software or exclude the indexing folder from AV scanning
  3. ALiVE must be in @ALiVE folder in ArmA3 (Warning: folder name is case sensitive!)
  4. ALiVEClient.dll and alive_object_blacklist.txt must be in the @ALiVE folder
  5. Acquire a copy of Mikero's Tools, get them here https://www.dropbox.com/s/zs5iforxoflasdt/dewrp_alive.zip?dl=1
  6. DeWRP.exe must be installed on Windows (i.e. have a dewrp.exe directory set in your PATH environment variable)- http://www.computerhope.com/issues/ch000549.htm
  7. Make sure all .exe and .dll files are 'unblocked' in Windows (right-click, Properties)
  8. Download the following scripts folder and copy to C:\Users\*username*\My Documents\Arma 3
  9. 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!

  1. Start ArmA with command line -mod=@ALiVE; @CBA_A3; @YourCustomMap -filePatching
  2. Open the Editor
  3. Place down a player unit
  4. Place the ALiVE Map Indexer Module
    1. Settings
      1. Object Categorization:
        1. Yes Allows you to categorize map objects and is the default for all new maps.
        2. 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 files can be downloaded from the ALiVE repo on github here and must be placed in @ALiVE\indexing\mapname\x\alive\addons\main\static\mapname_staticData.sqf
      2. Map PBO file path Path and filename of the map in your ArmA3 folder (e.g. @mapname\addons\mapname.pbo)
      3. Custom Map Bounds Used for fixing cluster coverage on incorrectly configured map sizes. Set to 0 by default.
  5. Save the mission as index
  6. Launch game, go to map screen and zoom out to see whole map
  7. Open the ALiVE interaction menu (default key Right App Menu) and select Map Indexing
  8. A cmd.exe window will launch (this is deWRP doing its thing)
  9. Press UP arrow on your keyboard (do not press space bar or ESC) when it says to press any key to continue
  10. 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.
  11. 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.
    1. Check that all arrays in your staticData file are terminated i.e. finish in ]; for example the ALIVE_BLACKLIST array sometimes is not terminated correctly when lots of objects have been blacklisted.
  12. Then press any key to continue the indexing process.
  13. 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.
    1. NOTE: Open the RPT in Baretail - ensure the log is being updated. If it is stuck on Generating Sector Data then you will need to copy the \x folder found in the \scripts folder into your mission folder (C:\My Documents\Arma 3\missions\index.yourmap\x).
  14. Once completed all files will be in @ALiVE\indexing\mapname\x

If you have any issues please post your RPT and log.txt file (under @ALiVE\indexing\mapname\ to the ALiVE Forum (map indexing section)

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 IndexTest
  • Copy the @ALiVE\indexing\mapname\x folder into your IndexTest.YourMap mission folder, for example "C:\My Documents\Arma 3\missions\indexTest.Kunduz"
  • Check that C:\My Documents\Arma 3\missions\indexTest.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. Edit your static data file where the ALIVE_MapBounds value is set. Ensure you select No to object categorisation (in the Indexer Module settings).

Post on the ALiVE Forum

  • Zip up your x folder
  • Post on the ALiVE Forum a topic Complete Index of _mapname_
  • If you disabled your AV to run the indexing process don't forget to turn it back on!!

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.

Objectview.png

  • 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"
    ];
};