{"name":"Arma 3: CfgSurfaces Config Reference","title":"Arma 3: CfgSurfaces Config Reference","type":"topic","url":"https://community.bistudio.com/wiki/Arma_3:_CfgSurfaces_Config_Reference","revid":373231,"updated":"2025-04-12T22:20:50Z","aliases":["Arma 3 CfgSurfaces Config Reference","CfgSurfaces Config Reference"],"markdown":"> [!WARNING]\n> This reference page was created for Arma 3 v1.60+, some fields may not exist in prior games and versions.\n\n#### A\n\n##### access\n\nInteger: Determines the manipulability of the class.\n\n| Value | Type | Description |\n|---|---|---|\n| `0` | ReadAndWrite | Additional values can be added |\n| `1` | ReadAndCreate | Only adding new class members is allowed |\n| `2` | ReadOnly | No modifications enabled |\n| `3` | ReadOnlyVerified | No modifications enabled |\n\nAll *BIS* classes are **ReadOnlyVerified** and can only be inherited into a new class\n\n```cpp\naccess = 2; // ReadOnly\n```\n\n##### AIAvoidStance\n\nArma 3 v1.60\nInteger: Allows restricting the AI from entering prone with two levels of emphasis\n\n| Value | Description |\n|---|---|\n| `0` | No change in behavior |\n| `1` | Less preference for going prone - avoid prone (unless stealth or suppressed or *) |\n| `2` | Almost never going prone - never prone (unless *) |\n\n```\n* means commanded, injured, animated, forced, ...\n```\n\n#### C\n\n##### character\n\nString: Points to a corresponding CfgSurfaceCharacters entry, which defines the clutter on this surface.\n\n```cpp\ncharacter = \"Empty\";        // No clutter will be used on this surface\ncharacter = \"SeabedClutter\";    // SeabedClutter defined in CfgSurfaceCharacters will be used on this surface\n```\n\n#### D\n\n##### dust\n\nFloat: Amount of dust vehicles will create on this surface (higher value = more dust)\n\n```cpp\ndust = 0.75;    // High amount of dust, used for GdtStratisDryGrass\ndust = 0.05;    // Almost no dust, used for GdtConcrete\n```\n\n#### F\n\n##### files\n\nString: Defines which ground texture and roadway texture filenames this surface will apply to\n\n```cpp\nfiles = \"gdt_grass_green_*\";    // Tells the ground texture what surface it corresponds to\nfiles = \"surfint_wood_*\";        // Tells the texture used in the roadway LOD what surface it corresponds to\n```\n\nFrom commented configs of BI (binarize\\bin)\n\n```\nCaution: wildcard pattern \"files\" is matched using special purpose matching\n\n* may be used only as last character of the pattern\n* matches any string in filename\n? matches any single character in filename\n\nwhen six trailing question-marks are detected \"??????\", two patterns are matched:\nfull pattern and short pattern with ?????? omitted\n```\n\n##### friction\n\nSeems obsolete\n\nFloat: Unknown\n\n```cpp\nfriction = 0.9;    // Default value, used by all A3 surfaces\n```\n\n#### G\n\n##### grassCover\n\nFloat: Reduces visibleSize (taken from CfgMovesBasic) of unit for AI visibility movement computations (cannot make fully invisible) - it is NOT about visual drawing\n\n```cpp\ngrassCover = 0;        // Used by GdtStratisConcrete, there will be no simulated grass cover at a distance\ngrassCover = 0.05;    // Used by GdtStratisGreenGrass, there will be some simulated grass cover at a distance\n```\n\n#### I\n\n##### impact\n\nString: Defines what particle effect is shown when the surface is hit by a bullet, points to a corresponding entry in CfgAmmo\n\n```cpp\nimpact = \"hitGroundHard\";    // Used by GdtStony, particle effect will be chunks of rock flying when hit\nimpact = \"hitGroundSoft\";    // Used by GdtStratisDirt, particle effect will be dirt flying when hit\n```\n\nCheck the spoiler for impact values used in vanilla A3 in 1.68:\n\n```\ndefault_Mat\nhitWater\nhitGroundHard\nhitConcrete\nhitGroundSoft\nhitVirtual\nHitGroundRed\nhitGroundRed\n```\n\n##### isWater\n\nInteger: Declares whether the surface is water\n\n```cpp\nisWater = 1;    // Used by SurfWater, declares the surface as water\nisWater = 0;    // Used by Default, declares the surface is not water\n```\n\n#### L\n\n##### lucidity\n\nFloat: how hard to detect a mine on this surface. Default: 1\n\n```cpp\nlucidity = 0.3;    // Used by GdtStratisConcrete\nlucidity = 3.5;    // Used by GdtStratisForestPine\nlucidity = 150;    // Used by GdtStratisSeabed\n```\n\n#### M\n\n##### maxClutterColoringCoef\n\nFloat: Defines the maximal coefficient of difference between the color of the surface and clutter (must be greater than or equal to 1)\n\n```cpp\nmaxClutterColoringCoef = 1.35;    // Used by GdtStratisConcrete\nmaxClutterColoringCoef = 1.5;    // Used by GdtBeach\n```\n\n##### maxSpeedCoef\n\nFloat: Defines the maximum speed coefficient on that surface for carEPE simulation. Default is 1\n\n```cpp\nmaxSpeedCoef = 1;    // Used by GdtStratisConcrete, no change in speed\nmaxSpeedCoef = 0.9;    // Used by GdtStratisGreenGrass, 10% reduction in speed\nmaxSpeedCoef = 0.8;    // Used by GdtStratisForestPine, 20% reduction in speed\n```\n\nFor cars also limited by terrainCoef factor defined in cfgVehicles. Max reduction is 50%.\n\n#### R\n\n##### restitution\n\nSeems obsolete\n\nFloat: Unknown\n\n```cpp\nrestitution= 0;    // Used by every surface\n```\n\n##### rough\n\nSeems disabled in A3.\n\nFloat: Defines the roughness of the surface when driving over it in a vehicle (higher value = more bumps). Seems to limit also speed of tanks somewhat\n\n```cpp\nrough = 0.05;    // Used by GdtStratisConcrete, minimal bumps\nrough = 0.15;    // Used by GdtMud, fairly bumpy\n```\n\n#### S\n\n##### soundEnviron\n\nString: Defines the sound played when walking or driving a vehicle on the surface, points to sounds defined in SoundEnvironExt\n\n```cpp\nsoundEnviron = \"drygrass\";    // Used by GdtGrassDry, dry grass sound\nsoundEnviron = \"gravel\";    // Used by SurfRoadDirt, gravel sound\nsoundEnviron = \"int_wood\";    // Used by SurfIntWood, weapons fired while on this surface will have a reverb effect.\n```\n\nThis value also determines the sound for footsteps inside of a building corresponding for the roadway LOD. It is important to use corresponding textures for surfaces that are indoors or outdoors, as it has an effect on the sound when firing weapons on that surface.\n\nRelates also the sound controllers\n\nCheck the spoiler for soundEnviron values used in vanilla A3 in 1.68:\n\n```\nnormalExt\n\nwater\nseabed_exp\n\nroad - SurfSoundAsphalt\ntarmac - SurfSoundAsphalt\nconcrete - SurfSoundAsphalt\nconcrete_exp\nint_concrete\nint_concrete_exp\nasphalt_exp\npavement_exp\nint_pavement_exp\n\ngravel - SurfSoundGravel\ngravel_exp\nnormal - SurfSoundGravel\ndebris - SurfSoundGravel\nstony - SurfSoundGravel, SurfSoundGrass, SurfSoundDirt\nstones_exp\n\nrock - SurfSoundRock\n\nsand - SurfSoundSand\nsand_exp\n\ngrass - SurfSoundGrass\ngrass_exp\ngrasstall_exp\ndrygrass - SurfSoundGrass\n\nforest - SurfSoundDirt, SurfSoundGrass\nforest_exp\nwood\nint_wood\nsoftwood_exp\nint_softwood_exp\n\nmud - SurfSoundDirt\nmud_exp\ndirt - SurfSoundDirt\ndirt_exp\n\nmetal\nint_metal\nmetalplate_exp\nint_metalplate_exp\nmetalplatepressed_exp\nsteel_exp\ngridmetal_exp\nwavymetal\nwavymetal_exp\nroof_tiles\nrooftiles_exp\nint_tiles\ntiling\n\nvirtual\n\nint_solidwood_exp\nint_carpet_exp\nint_mat_exp\nstraw_exp\nlino_exp\nint_lino_exp\n```\n\n##### soundHit\n\nString: Defines the sound played when the surface is struck by a bullet\n\n```cpp\nsoundHit = \"concrete\";        // Used by GdtStratisConcrete, sound of bullet hitting concrete is played when this surface is hit\nsoundHit = \"soft_ground\";    // Used by GdtStratisDirt, sound of dirt is played when this surface is hit\n```\n\nSeemingly valid values:\n\n- body\n- building\n- concrete\n- default\n- foliage\n- glass\n- glass_armored\n- hard_ground\n- iron\n- metal\n- metal_plate\n- plastic\n- rubber\n- soft_ground\n- water\n- wood\n\nCheck the spoiler for soundHit values used in vanilla A3 in 1.68:\n\n```\nhard_ground\nconcrete\nsoft_ground\nbuilding\n```\n\n##### surfaceFriction\n\nFloat: Defines the surface friction on this surface (lower value = more friction)\n\n```cpp\nsurfaceFriction = 2.5;    // Used by SurfRoadTarmac, highest surface friction value\nsurfaceFriction = 2;    // Used by SurfRoadConcrete, above average surface friction value\nsurfaceFriction = 1.8;    // Used by GdtDirt, below average surface friction value\nsurfaceFriction = 1.5;    // Used by GdtMarsh, low end of surface friction values\n```\n\n#### T\n\n##### terrainClutterFactor\n\nInteger: Can enable clutter on roadway when above 0\n\n```cpp\nterrainClutterFactor = 0;    // Default value used by all surfaces, except for Water = 1\n```\n\n##### tracksAlpha\n\nSeems obsolete\n\nInteger: Defines the alpha value of vehicle tracks\n\n```cpp\ntracksAlpha = 1;    // Default value used by all surfaces\n```\n\n##### transparency\n\nInteger 1: fully transparent. 0 and lower: fully opaque\n\n```cpp\ntransparency = -1;    // Default value used by surfaces if this property is not defined\n```\n\nUsed in the viewGeometry LOD to determine how transparent the surface is to the AI view.\nIn vanilla Arma 3, this property seems to be only used by APEX DLC vegetations: \"a3\\vegetation_f_exp\\data\\foliage_sparse.bisurf\" (`transparency = 0.2`) and \"a3\\vegetation_f_exp\\data\\foliage_dense.bisurf\" (`transparency = 0.01`).","sections":[{"heading":null,"level":1,"markdown":"> [!WARNING]\n> This reference page was created for Arma 3 v1.60+, some fields may not exist in prior games and versions."},{"heading":"A","level":4,"markdown":""},{"heading":"access","level":5,"markdown":"Integer: Determines the manipulability of the class.\n\n| Value | Type | Description |\n|---|---|---|\n| `0` | ReadAndWrite | Additional values can be added |\n| `1` | ReadAndCreate | Only adding new class members is allowed |\n| `2` | ReadOnly | No modifications enabled |\n| `3` | ReadOnlyVerified | No modifications enabled |\n\nAll *BIS* classes are **ReadOnlyVerified** and can only be inherited into a new class\n\n```cpp\naccess = 2; // ReadOnly\n```"},{"heading":"AIAvoidStance","level":5,"markdown":"Arma 3 v1.60\nInteger: Allows restricting the AI from entering prone with two levels of emphasis\n\n| Value | Description |\n|---|---|\n| `0` | No change in behavior |\n| `1` | Less preference for going prone - avoid prone (unless stealth or suppressed or *) |\n| `2` | Almost never going prone - never prone (unless *) |\n\n```\n* means commanded, injured, animated, forced, ...\n```"},{"heading":"C","level":4,"markdown":""},{"heading":"character","level":5,"markdown":"String: Points to a corresponding CfgSurfaceCharacters entry, which defines the clutter on this surface.\n\n```cpp\ncharacter = \"Empty\";        // No clutter will be used on this surface\ncharacter = \"SeabedClutter\";    // SeabedClutter defined in CfgSurfaceCharacters will be used on this surface\n```"},{"heading":"D","level":4,"markdown":""},{"heading":"dust","level":5,"markdown":"Float: Amount of dust vehicles will create on this surface (higher value = more dust)\n\n```cpp\ndust = 0.75;    // High amount of dust, used for GdtStratisDryGrass\ndust = 0.05;    // Almost no dust, used for GdtConcrete\n```"},{"heading":"F","level":4,"markdown":""},{"heading":"files","level":5,"markdown":"String: Defines which ground texture and roadway texture filenames this surface will apply to\n\n```cpp\nfiles = \"gdt_grass_green_*\";    // Tells the ground texture what surface it corresponds to\nfiles = \"surfint_wood_*\";        // Tells the texture used in the roadway LOD what surface it corresponds to\n```\n\nFrom commented configs of BI (binarize\\bin)\n\n```\nCaution: wildcard pattern \"files\" is matched using special purpose matching\n\n* may be used only as last character of the pattern\n* matches any string in filename\n? matches any single character in filename\n\nwhen six trailing question-marks are detected \"??????\", two patterns are matched:\nfull pattern and short pattern with ?????? omitted\n```"},{"heading":"friction","level":5,"markdown":"Seems obsolete\n\nFloat: Unknown\n\n```cpp\nfriction = 0.9;    // Default value, used by all A3 surfaces\n```"},{"heading":"G","level":4,"markdown":""},{"heading":"grassCover","level":5,"markdown":"Float: Reduces visibleSize (taken from CfgMovesBasic) of unit for AI visibility movement computations (cannot make fully invisible) - it is NOT about visual drawing\n\n```cpp\ngrassCover = 0;        // Used by GdtStratisConcrete, there will be no simulated grass cover at a distance\ngrassCover = 0.05;    // Used by GdtStratisGreenGrass, there will be some simulated grass cover at a distance\n```"},{"heading":"I","level":4,"markdown":""},{"heading":"impact","level":5,"markdown":"String: Defines what particle effect is shown when the surface is hit by a bullet, points to a corresponding entry in CfgAmmo\n\n```cpp\nimpact = \"hitGroundHard\";    // Used by GdtStony, particle effect will be chunks of rock flying when hit\nimpact = \"hitGroundSoft\";    // Used by GdtStratisDirt, particle effect will be dirt flying when hit\n```\n\nCheck the spoiler for impact values used in vanilla A3 in 1.68:\n\n```\ndefault_Mat\nhitWater\nhitGroundHard\nhitConcrete\nhitGroundSoft\nhitVirtual\nHitGroundRed\nhitGroundRed\n```"},{"heading":"isWater","level":5,"markdown":"Integer: Declares whether the surface is water\n\n```cpp\nisWater = 1;    // Used by SurfWater, declares the surface as water\nisWater = 0;    // Used by Default, declares the surface is not water\n```"},{"heading":"L","level":4,"markdown":""},{"heading":"lucidity","level":5,"markdown":"Float: how hard to detect a mine on this surface. Default: 1\n\n```cpp\nlucidity = 0.3;    // Used by GdtStratisConcrete\nlucidity = 3.5;    // Used by GdtStratisForestPine\nlucidity = 150;    // Used by GdtStratisSeabed\n```"},{"heading":"M","level":4,"markdown":""},{"heading":"maxClutterColoringCoef","level":5,"markdown":"Float: Defines the maximal coefficient of difference between the color of the surface and clutter (must be greater than or equal to 1)\n\n```cpp\nmaxClutterColoringCoef = 1.35;    // Used by GdtStratisConcrete\nmaxClutterColoringCoef = 1.5;    // Used by GdtBeach\n```"},{"heading":"maxSpeedCoef","level":5,"markdown":"Float: Defines the maximum speed coefficient on that surface for carEPE simulation. Default is 1\n\n```cpp\nmaxSpeedCoef = 1;    // Used by GdtStratisConcrete, no change in speed\nmaxSpeedCoef = 0.9;    // Used by GdtStratisGreenGrass, 10% reduction in speed\nmaxSpeedCoef = 0.8;    // Used by GdtStratisForestPine, 20% reduction in speed\n```\n\nFor cars also limited by terrainCoef factor defined in cfgVehicles. Max reduction is 50%."},{"heading":"R","level":4,"markdown":""},{"heading":"restitution","level":5,"markdown":"Seems obsolete\n\nFloat: Unknown\n\n```cpp\nrestitution= 0;    // Used by every surface\n```"},{"heading":"rough","level":5,"markdown":"Seems disabled in A3.\n\nFloat: Defines the roughness of the surface when driving over it in a vehicle (higher value = more bumps). Seems to limit also speed of tanks somewhat\n\n```cpp\nrough = 0.05;    // Used by GdtStratisConcrete, minimal bumps\nrough = 0.15;    // Used by GdtMud, fairly bumpy\n```"},{"heading":"S","level":4,"markdown":""},{"heading":"soundEnviron","level":5,"markdown":"String: Defines the sound played when walking or driving a vehicle on the surface, points to sounds defined in SoundEnvironExt\n\n```cpp\nsoundEnviron = \"drygrass\";    // Used by GdtGrassDry, dry grass sound\nsoundEnviron = \"gravel\";    // Used by SurfRoadDirt, gravel sound\nsoundEnviron = \"int_wood\";    // Used by SurfIntWood, weapons fired while on this surface will have a reverb effect.\n```\n\nThis value also determines the sound for footsteps inside of a building corresponding for the roadway LOD. It is important to use corresponding textures for surfaces that are indoors or outdoors, as it has an effect on the sound when firing weapons on that surface.\n\nRelates also the sound controllers\n\nCheck the spoiler for soundEnviron values used in vanilla A3 in 1.68:\n\n```\nnormalExt\n\nwater\nseabed_exp\n\nroad - SurfSoundAsphalt\ntarmac - SurfSoundAsphalt\nconcrete - SurfSoundAsphalt\nconcrete_exp\nint_concrete\nint_concrete_exp\nasphalt_exp\npavement_exp\nint_pavement_exp\n\ngravel - SurfSoundGravel\ngravel_exp\nnormal - SurfSoundGravel\ndebris - SurfSoundGravel\nstony - SurfSoundGravel, SurfSoundGrass, SurfSoundDirt\nstones_exp\n\nrock - SurfSoundRock\n\nsand - SurfSoundSand\nsand_exp\n\ngrass - SurfSoundGrass\ngrass_exp\ngrasstall_exp\ndrygrass - SurfSoundGrass\n\nforest - SurfSoundDirt, SurfSoundGrass\nforest_exp\nwood\nint_wood\nsoftwood_exp\nint_softwood_exp\n\nmud - SurfSoundDirt\nmud_exp\ndirt - SurfSoundDirt\ndirt_exp\n\nmetal\nint_metal\nmetalplate_exp\nint_metalplate_exp\nmetalplatepressed_exp\nsteel_exp\ngridmetal_exp\nwavymetal\nwavymetal_exp\nroof_tiles\nrooftiles_exp\nint_tiles\ntiling\n\nvirtual\n\nint_solidwood_exp\nint_carpet_exp\nint_mat_exp\nstraw_exp\nlino_exp\nint_lino_exp\n```"},{"heading":"soundHit","level":5,"markdown":"String: Defines the sound played when the surface is struck by a bullet\n\n```cpp\nsoundHit = \"concrete\";        // Used by GdtStratisConcrete, sound of bullet hitting concrete is played when this surface is hit\nsoundHit = \"soft_ground\";    // Used by GdtStratisDirt, sound of dirt is played when this surface is hit\n```\n\nSeemingly valid values:\n\n- body\n- building\n- concrete\n- default\n- foliage\n- glass\n- glass_armored\n- hard_ground\n- iron\n- metal\n- metal_plate\n- plastic\n- rubber\n- soft_ground\n- water\n- wood\n\nCheck the spoiler for soundHit values used in vanilla A3 in 1.68:\n\n```\nhard_ground\nconcrete\nsoft_ground\nbuilding\n```"},{"heading":"surfaceFriction","level":5,"markdown":"Float: Defines the surface friction on this surface (lower value = more friction)\n\n```cpp\nsurfaceFriction = 2.5;    // Used by SurfRoadTarmac, highest surface friction value\nsurfaceFriction = 2;    // Used by SurfRoadConcrete, above average surface friction value\nsurfaceFriction = 1.8;    // Used by GdtDirt, below average surface friction value\nsurfaceFriction = 1.5;    // Used by GdtMarsh, low end of surface friction values\n```"},{"heading":"T","level":4,"markdown":""},{"heading":"terrainClutterFactor","level":5,"markdown":"Integer: Can enable clutter on roadway when above 0\n\n```cpp\nterrainClutterFactor = 0;    // Default value used by all surfaces, except for Water = 1\n```"},{"heading":"tracksAlpha","level":5,"markdown":"Seems obsolete\n\nInteger: Defines the alpha value of vehicle tracks\n\n```cpp\ntracksAlpha = 1;    // Default value used by all surfaces\n```"},{"heading":"transparency","level":5,"markdown":"Integer 1: fully transparent. 0 and lower: fully opaque\n\n```cpp\ntransparency = -1;    // Default value used by surfaces if this property is not defined\n```\n\nUsed in the viewGeometry LOD to determine how transparent the surface is to the AI view.\nIn vanilla Arma 3, this property seems to be only used by APEX DLC vegetations: \"a3\\vegetation_f_exp\\data\\foliage_sparse.bisurf\" (`transparency = 0.2`) and \"a3\\vegetation_f_exp\\data\\foliage_dense.bisurf\" (`transparency = 0.01`)."}],"categories":["Arma 3: Reference Lists"],"groups":["Reference Lists"]}