Так как поверхность скорее всего будет прямоугольная и непрерывная, лучше всего для нее создать двухмерный массив, в качестве значений использовать хендлы типа, хотя, имхо, это изврат
Кстати, может быть, массиву можно присвоить тип, но я этого в блитце никогда не делал...
Type T_cubes
Field x
Field y
Field z
Field col$
Field ent
Field hndl
End Type
Dim Map(10,10)
For x=1 to 10
For y=1 to 10
cube.T_cubes = New T_cubes
cube\ent = CreateCube()
cube\x = x*tile_size
cube\y = y*tile_size
cube\z = 20
Map(x,y) = Handle(cube.T_cubes)
Next
Next
Далее уже можно обращаться к типу через массив, с известными x и y.
Вообще лучше всего бросить блитц, и использовать PureBasic, например в связке с Xors3D или тем же самым B3D.
В нем такая конструкция получится такого вида:
Structure Cube
X.i:Y.i:Z.i
Color.i:Entity.i
EndStructure
;Далее любую переменную, массив, список и т.д. можно объявлять с этой структурой:
Dim Tiles_array.Cube(100)
NewList Tiles_list.Cube()
NewMap Tiles_map.Cube()
;Примеры
Tiles_array(1)\X=10:Tiles_array(1)\Y=20
AddElement(Tiles_list())
Tiles_list()\X=10
Tiles_list()\Y=20
Tiles_map("Element_name")\X=10
Tiles_map("Element_name")\Y=20