Сейчас базовый размер карты выбран как 1024*1024. Физически карта больше, так как наша “хексовая” карта, что бы быть эффективной и простой искажена, подробнее об этом можно прочитать (и посмотреть картинки) тут: http://wiki.ioupg.com/kg:doc_discoc_universe
Физический размер, и допустимые индексы для карта таковы: 1536х1024. От этой прямоугольной области отрезано два угла (использовать их нельзя), то есть любой вертекс в этих углах физически существует, но размещение там игровых объектов недопустимо.
Ниже иллюстрация из спецификации карт:
Здесь видно, какие именно углы карты не используются.
Точка карты, с которой сопоставлена определённая информация: тип местности, высота, модификаторы (снег, трава, выжжено). Положение любых объектов на карте задаётся в вертексах, нахождение этих объектов между вертексами недопустимо. Некоторые объекты могут передвигаться по карте с точностью выше чем вертекс, отображение этих объектов допустимо с попиксельной точностью, однако это лишь визуальный эффект. И такое “межвертексное” перемещение всегда происходит между соседними вертексами карты. То есть из каждого вертекса такой объект может двигаться лишь в шести направлениях.
Набор линий, соединяющих соседние вертексы. Вертексная сетка карты имеет вид множества равносторонних (идеальных) треугольников. Направления линий в сетке могут быть горизонтальными, а вертикальными быть не могут - особенности хексовой метрики. Все подвижные объекты карты передвигаются исключительно по вертексной сетке, и последовательно проходят все узлы. Двигаться можно только между соседними вертексами.
Шестиугольный фрагмент карты, имеющий центр в “центральном” вертексе, и опирающийся на 6 дополнительных вертексов, являющихся соседями к центральному. Фрагмент считается хексом, если удовлетворяет условиям:
Для карты с ребром D количество вертексов составляет чуть меньше чем D*D/3, тандартная карта с диаметром 1024 имеет около 300 тысяч хексов. Хексы являются не сущностью карты, а лишь наброшенной поверх неё сеткой, облегчающей ориентирование и формулировку некоторых правил, ограничивающих нахождение на карте различных объектов. Хексы не используются для задания местоположения объектов на карте, для этого лучше обратиться к вертексам. Свойства хексов таковы:
Вертекс, в зависимости от своих данных, считается проходимым или непроходимым. Проходимость вертекса используется как для движения армий, так и для определения - можно строить (тут) домик, или нет. Точка считается проходимой, если:
Пара смежных вертексов соединяется ребром, это нужно для графа проходимости (оттуда и термин). Для каждого вертекса существует шесть соседей, и значит шесть рёбер, исключение - крайние вертексы карты, где соседи могут банально выходить за её границу. Непроходимость хотя бы одного вертекса делает ребро непроходимым, но даже если оба вертекса проходимые, ребро при этом может быть всё равно непроходимым, так как там имеются дополнительные условия. Вот полная формулировка проходимости ребра:
Проходимый вертекс может быть тем не менее непроходим, потому что на нём, например, находится вражеская армия. В отличие от простого определения проходимости, заблокированность вертекса зависит не только от ландшафта, но и от большого числа других факторов. Однако любой непроходимый вертекс автоматически считается заблокированным.
В карте должна существовать хотя бы одна крупная связная проходимая область. Могут встречаться и изолированные от этой основной области куски карты, например, ограниченные горами, и для некоторых задач использование этих областей ограничено. Если существует путь, по которому из вертекса (А) можно попасть в основную область, считаем (А) “глобально достижимой”