{"name":"surfaceType","title":"surfaceType","type":"command","url":"https://community.bistudio.com/wiki/surfaceType","revid":379085,"updated":"2026-09-27T08:28:22Z","groups":["Positions"],"status":"ok","games":{"ofpe":"1.00","arma1":"1.00","arma2":"1.00","arma2oa":"1.50","tkoh":"1.00","arma3":"0.50"},"since":"ofpe 1.00","arma3_since":"0.50","description":"Returns what surface type is at the given position. For surface texture see surfaceTexture command.\n\n> [!NOTE]\n> The command returns surface type of the ground, even underneath objects such as buildings and roads\n\n- #GRASSSOUTH\n- #GRASSGENERAL\n- #SANDGENERAL\n\n- #UTGRASS - for natural surfaces\n- #UTCONCRETE - for urban surfaces\n\n- BuildingRubble\n- BuildingRubble_exp\n- cardboard\n- cardboard_exp\n- carpet\n- carpet_exp\n- carpet_inside\n- carpet_in_exp\n- concrete\n- concrete_exp\n- concrete_hall\n- concrete_hall_exp\n- concrete_inside\n- concrete_in_exp\n- concrete_out\n- Default\n- dirtrunway\n- floor\n- floor_exp\n- floor_inside\n- floor_in_exp\n- GdtAsphalt\n- GdtBeach\n- GdtCliff\n- GdtConcrete\n- GdtDead\n- GdtDesert\n- GdtDirt\n- GdtField\n- GdtForest\n- GdtForestMalden\n- GdtForestPine\n- GdtGrassDry\n- GdtGrassGreen\n- GdtGrassLong\n- GdtGrassShort\n- GdtGrassTall\n- GdtGrassWild\n- GdtKLCobblestone\n- GdtKLDirt\n- GdtKlField\n- GdtKLForestCon\n- GdtKLForestDec\n- GdtKLGrass1\n- GdtKLGrass2\n- GdtKlSoil\n- GdtKlStubble\n- GdtKlTarmac\n- GdtKlWeatheredTarmac\n- GdtMarsh\n- GdtMud\n- GdtRedDirt\n- GdtRock\n- GdtRubble\n- GdtSeabed\n- GdtSeabedExp\n- GdtSoil\n- GdtStony\n- GdtStonyThistle\n- GdtStratisBeach\n- GdtStratisConcrete\n- GdtStratisDirt\n- GdtStratisDryGrass\n- GdtStratisForestPine\n- GdtStratisGreenGrass\n- GdtStratisRocky\n- GdtStratisSeabed\n- GdtStratisSeabedCluttered\n- GdtStratisThistles\n- GdtThorn\n- GdtVolcano\n- GdtVolcanoBeach\n- GdtVRsurface01\n- GdtWeed\n- GdtWildField\n- grid\n- grid_exp\n- lino\n- lino_exp\n- lino_in_exp\n- mat_in_exp\n- metalPlate\n- metalPlatePressed_exp\n- metalPlate_exp\n- metalPlate_in_exp\n- mud\n- mud_exp\n- parquet\n- planks\n- planks_exp\n- planks_inside\n- planks_in_exp\n- road\n- road_exp\n- roof_tiles_exp\n- rubble\n- rubble_exp\n- sand\n- sand_exp\n- softwood_in_exp\n- steel\n- steel_exp\n- stones\n- stones_exp\n- straw_exp\n- SurfIntConcrete\n- SurfIntMetal\n- SurfIntTiles\n- SurfIntWood\n- surfint_concrete\n- surfint_metal\n- surfint_tiles\n- surfint_wood\n- SurfMetal\n- SurfRoadConcrete\n- SurfRoadConcrete_exp\n- SurfRoadDirt\n- SurfRoadDirt_Enoch\n- SurfRoadDirt_exp\n- SurfRoadTarmac\n- SurfRoadTarmac1_Enoch\n- SurfRoadTarmac2_Enoch\n- SurfRoadTarmac3_Enoch\n- SurfRoadTarmac_exp\n- SurfRoofTiles\n- SurfRoofTin\n- SurfTrailDirt_Enoch\n- SurfTrailDirt_exp\n- SurfWater\n- SurfWood\n- surf_metal\n- surf_roadconcrete\n- surf_roaddirt\n- surf_roadtarmac\n- surf_rooftiles\n- surf_rooftin\n- surf_wood\n- TEST_SurfNormal\n- tiling\n- trash\n- trash_exp\n- Water\n- wavyMetal\n- wavyMetal_exp\n- woodenFloor","syntaxes":[{"syntax":"surfaceType [x, y, z or useLayerMask]","params":[{"name":"x","type":"Number","description":"world x coordinate of the position","type_expr":"Number"},{"name":"y","type":"Number","description":"world y coordinate of the position","type_expr":"Number"},{"name":"z or useLayerMask","type":"Number or Boolean","optional":true,"description":"When a number is provided (Z in 3D positions), it is ignored. When a boolean is provided, it defines whether the layer mask should be used. Using the layer mask is more accurate but slightly slower.","type_expr":"Number | Boolean","since":"arma3 2.18","text":"z or useLayerMask: Number or Boolean - (Optional) When a number is provided (Z in 3D positions), it is ignored. When a boolean is provided, it defines whether the layer mask should be used. Using the layer mask is more accurate but slightly slower."}],"returns":{"type":"String","type_expr":"String","description":"Surface type"},"form":"unary","right":{"text":"[x, y, z or useLayerMask]"}}],"examples":[{"code":["private _surface = surfaceType [4500, 4500];"]},{"code":["hint surfaceType getPosWorld player;"]},{"code":["private _pos = getPosWorld player;\n_pos set [2, true]; // use layer mask\nsurfaceType _pos;"]}],"see_also":["surfaceTexture","surfaceIsWater","surfaceNormal","getAllEnvSoundControllers"]}