Хонич А.
Как самому создать трехмерную игру
стр. 140

Без данной техники DOOM просто невозможно было бы создать. В данном конкретном примере предварительные вычисления осуществляются в редакторе уровней игры. Но предрасчетные массивы и структуры также формируются и в процессе работы игры: при загрузке данных уровня, при проектировании 3D лабиринта и во многих других случаях.

7.10. Ресурс BLOCKMAP. (Десятый объект)

BLOCKMAP - предрасчетная структура, используемая в игре для упрощения обнаружения границ стен и объектов. Если бы не было BLOCKMAP, то можно было бы свободно проходить сквозь стены и объекты.

Каждый уровень поделен на блоки. Всего их может быть на одном уровне

- 128. Один блок представляет собой квадрат (эти квадраты можно увидеть в режиме автоматической карты, если нажать “G” - Grid или “сетка”).

Первые два числа BLOCKMAP: XORIGIN и YORIGIN - это координаты левого нижнего угла карты уровня. Эти два числа обычно иа 8 значений меньше минимальных координат X и Y, которых могут достигать вершины в LINEDEFS.

Далее следуют два числа - количество столбцов (COLUMNS) и количество строк (ROWS), которые соответственно определяют, сколько блоков используется на уровне в направлении X и сколько в направлении Y. Этих блоков должно быть столько, чтобы они захватывали все вершины в ресурсах LINEDEFS. Если имеются вершины, которые не охватывают BLOCKMAP, то в данном районе карты можно будет свободно перемещаться сквозь стены и объекты, т.е. границы учитываться не будут. При этом могут возникнуть проблемы, которые визуально могут отображаться как зеркальные эффекты.

Далее следуют (ROWS * COLUMNS) указатели на список границ для конкретного блока. “Направление” этих указателей: направо (восток) и затем вверх (север). Так, первый указатель соответствует строке 0, столбцу 0; второй указатель - строке 0, столбцу' 1, а когда дойдет до последнего столбца, то далее начнется со строки 1, столбца 0 и т.д. Например, если на уровне 45 столбцов, то 46 столбец начнется со строки 1, столбца 0.

После всех этих у казателей вдет список границ (блоков). Каждый из данных описателей содержит список номеров LINEDEFS, т е. номеров линий, которые частично или полностью присутствуют в этом блоке и которые определены в ресурсах LINEDEFS (о ресурсах LINEDEFS речь шла в пункте 7.2). Для примера, если координаты первого блока для вашего уровня в направлении X изменяются от 0 до 127 включительно, а следующего - от 128 до 255 включительно, и имеется вертикальная линия с координатой по X 128, то эта линия будет принадлежать второму блоку, хотя кажется, что оиа находится на





Новости
В 2018 году выйдет игра о затонувшей подлодке «Курск»
Польская студия Jujubee после двух лет работы над компьютерной игрой о гибели подводной лодки «Курск», затонувшей в 2000 году, объявила, что завершит проект в 2018 году.
Подтвердились слухи о разработке Resident Evil 2 Remake
Сотрудники компании Capcom тоже активно подливали масла в огонь, заявляя о том, что ремастеринг уже находится в разработке и скоро увидит свет.