User Tools

Site Tools


nm:gameplay:building_system

Строительство

Общее описание

В игре есть много полезных и капризных механизмов, которые надо защитить от внешней среды и это задача зданий. Сами по себе здания не ценны - игрока интересует их полезное содержимое, однако роль зданий по защите этого содержимого и придания игре эстетического содержания не надо недооценивать.

Здания в игре собираются строителями из фрагментов, по шаблонам. Раз собранное здание можно частично или полностью разрушить. Новаторским в механике является как раз частичное разрушение, когда кусок здания повреждён, это видно игроку и от этого здание может частично терять функциональность.

Функциональность

То есть роль здания в геймплее. Помимо эстетической, здание должно защищать от внешней среды находящиеся внутри него механизмы и людей. Иногда механизмы требуют особого расположения: например радар лучше поднимать над уровнем земли, что так же является функционалом здания.

Полезное содержимое

Есть несколько видов полезного содержимого зданий:

  • жилой объём. То есть полости в здании, где могут находиться и передвигаться люди, а так же набор мелких объектов, которые этими людьми используются:
    • лестницы
    • двери
    • мебель
  • складской объём. Вообще технически от жилого ничем не отличается, вероятно надо их объединить
  • механизмы
    • статические (стоят на месте и приносят пользу)
    • движущиеся

Строители

Подъёмный кран, монтажный робот, сам игрок являются строителями, то есть участвуют в процессе строительства зданий. Строитель - функция, для некоторых сущностей (персонаж игрока) - далеко не основная. Более того, функция эта не чистая, а скорее условная, например, подъёмный кран не умеет сваривать швы - это задача монтажного робота. Различные строительные функции будут описаны чуть ниже.

Фрагменты

Это элементы, из которых собирается здание. Этим элементам присущи собственные свойства - их прочность, нагрузка которую они выдерживают и так далее. У каждого из элементов есть свои условия крепления, что ограничивает фантазию игроков (дизайнеров игры), но придаёт внешнему виду зданий некоторую логичность.

Шаблоны

Проект здания, то есть информация о том, из каких фрагментов сложить здание, назовём шаблоном. Важнейшее свойство шаблонов - вложенность, то есть сложный шаблон может и должен состоять из простых. Шаблон не должен содержать алгоритма, в какой последовательности собирать здание - эта последовательность должна явно следовать из шаблона, и желательно не быть уникальной. Более подробно о шаблонах и последовательности сборки - в соответствующих разделах.

Примитивные фрагменты

Классы

Четыре размерности

Фрагменты могут быть четырёх классов, каждый - своей размерности:

  • нулевая: “узлы”
  • первая: “линии”
  • вторая: “плоскости”
  • третья: “кубики”
Размерность "3" (кубик)

Смысл здесь простой - в трёхмерном пространстве, разлинованном регулярной сеткой, элементарной фигурой является куб. Это высшая размерность, “3”. Всё, что является кубом или его частью относится к классу “кубики”. Это могут быть бетонные кубы, заполненные щебнем полости и так далее.

Размерность "2" (плоскость)

Куб имеет шесть граней, грань является плоской фигурой и толщина её не интересна - только длина и ширина. У куба грани - квадраты, то есть плоскости, это наша размерность “2”. Всё, что является квадратом или его частью, относится к классу “плоскости”. Это могут быть плиты, стенки цельные, стенки с дверьми, ворота, и так далее.

Размерность "1" (линия)

У куба двенадцать рёбер, у квадрата четыре стороны, и всё это является прямыми линиями, а точнее - отрезками. У отрезка есть только длина, это наша размерность “1”. Всё что является отрезком относится к классу “линии”. Это и трубы, и сваи, и стальные балки и тросы.

Размерность "0" (узел)

У куба восемь вершин, у квадрата четыре вершины, у отрезка два конца. Всё это точки у которых нет ни ширины, ни толщины, ничего кроме позиции в пространстве. Это наша низшая размерность “0”. Объектов этой группы немного, но они очень важны, это узлы к которым крепятся многие другие объекты. Например длинная стальная балка, состоящая из нескольких фрагментов единичного размера, сращивается именно такими точечными узлами. И длина этой балки сильно ограничена прочностью узлов на излом.

Условности в графике

У плоскости нет толщины, сбоку она невидима. У точки вообще только позиция, и её не отрисуешь. Логично, что нам такие объекты ни к чему, потому все классы фрагментов представляются трёхмерными объектами, хотя для механики игры они имеют ровно ту размерность, которая указана. Например, стальная балка, являясь линией изображается как сильно вытянутый параллелепипед, то есть как стальная балка. Узел, собединяющий две палки должен бы быть совсем невидимый (он точка), однако отображается как небольшой фрагмент с заклёпками, сшивающий две балки в одну. Плита, которая могла бы быть плоской как бумага, должна иметь заметный объём, и так далее.

Правила соединения

Шаблоны

Процесс строительства здания

nm/gameplay/building_system.txt · Last modified: 2022/04/07 13:13 (external edit)