Здесь описаны виды сущностей игры, интересных с точки зрения механики, и составляющий собой игровой мир. Можно определить игровой мир как сумму сущностей игры.
Сущность с плоским ландшафтом и гиперболическим горизонтом в отрисовке. Взаимодействует с другими объектами через коллизии, хранит информацию для отрисовки и логики игры (полезные ископаемые). Ландшафт динамически изменяем - можно копать и взрывать.
Предметы в игре, это свободно лежащие в мире объекты, внутренняя структура которых либо тривиальна, либо безразлична нам. Максимальный размер предмета равен сечению Конструктора Зданий (2.0м), чаще всего предметы вписываются в диаметр Конструктора Машин (0.5м). Любой отломавшийся кусок машины или здания можно считать предметом, он отдаётся во власть игровой физики и в принципе его можно удалять из игры через некоторое время. Предметы имеют вес, и чаще всего от таков, что игрок может взять предмет и переместить его куда ему надо. Если предмет является фрагментом конструктора, можно его использовать в этой роли, если нет - можно положить в контейнер предметов или бросить в топку.
Каждая сущность физического мира игры условно состоит из “оболочки” и “начинки”. У здания в роли оболочки выступают стены, а у машины - детали корпуса. Технически, никакой разницы между корпусом и рамой нет, вся машина состоит только из конструкционных деталей (“КД”) и механизмов (описаны ниже). Конструкционные детали, не прикреплённые к какому-либо объекту являются предметами и могут быть перемещены или уничтожены.
Корпус машины либо стены здания, всё что сложено из КД, придаёт объекту жёсткость, и при этом совершенно не обязательно для функционирования объекта. Однако если вынуть из машины раму и попробовать на ней ехать, то обнаружится что уехал только двигатель с колёсами, разорвался канал управления машиной и она превратилась в бесполезный набор мусора на ландшафте. <note important>Тут важно придумать, в какой момент этот мусор можно за-decay-ить</note>
Некий объект, внутреннее устройство которого сложно, но закрыто для нас. Чёрный ящик, на входах и выходах которого находится строго фиксированный объём параметров. Примеры механизмов:
Механизмы реагируют на внешние воздействия и могут ломаться, поломки условны, то есть что там внутри сломалось мы не знаем, просто механизм теряет свою функциональность - полностью или частично. Для каждого механизма прописываются свои сценарии поломки, например, двигатель может терять в мощности, периодически или разово глохнуть. Сценарий может выбираться случайно, или в зависимости от типа воздействия на механизм. Например ЭМ-импульс перезагружает компьютеры, а взрывная волна просто их ломает.
Таким образом, каждый механизм имеет свой уникальный набор состояний и правил смены этих состояний. Игроки могут определять эти состояния и “чинить” механизмы в некоторых из них. Каждый механизм имеет состояние “хлам”, в котором починка его невозможна.
<note>Под вопросом (идея из Косморейнджеров)</note> Некоторые механизмы настолько малы, что текущий масштаб конструктора (0.5м) не позволяет их отображать. С другой стороны, есть сильное желание сделать механизмы настраиваемыми. Предлагается следующий подход: каждый механизм, являясь “чёрным ящиком”, а точнее - затекстуренным кубиком, имеет несколько составных частей. Увидеть их нельзя, но вынуть-заменить - вполне. Когда такая часть вынута, она является предметом в руках игрока, когда установлена в механизм - её не видно. Можно привести довольно много примеров, где такой подход сработает:
Если принять эту парадигму, то свойства механизмов и даже сценарии их поломок, описываются на языке таких микромодулей, а ремонт и модернизация становятся визуально-наглядными. Некоторые затраты на изготовление мешей этих деталей могут окупиться более цельной игровой механикой и понятным геймплеем. Важно будет лишь угадать со спектром возможных модулей - чем больше механизмов будут шарить между собой одинаковые модули, тем лучше получится результат.
Дверные петли, замки и множество других объектов можно так же реализовать через модули. Так же очень удобно складывать модули в ящики (пренебрегаем формой и размерами) и доставать их оттуда.
Сложный объект, включающий в себя один или несколько механизмов. Понятие машина условно, оно нужно нам для удобства, так как именно с машинами в первую очередь взаимодействует игрок. Как правило, машина имеет некий единый интерфейс управления, прослойку между механизмами и пользователем. Например, механизм управления автомобилем берёт на себя функции дифференциала, то есть игроку предоставляется возможность крутить руль, а интерфейс управления знает, что такую команду надо трансформировать в поворот передних (или задних) колёс.
Интерфейсы управления по сути являются механизмами и могут быть довольно сложными. Они должны настраиваться на ту или иную конкретную реализацию предназначенной им машины. Например, интерфейс управления автомобилем должен пережить, если ему вручат автомобиль 6 колёсами и объяснят, что передние 4 колеса рулевые. В данный момент это, наверное, самое сложное место в игре, вероятно придётся хорошенько поломать голову над ним
Технологически, любая машина должна предоставлять доступ ко всем своим механизмам. Говоря русским языком, у машины должен открываться капот. Если создатель машины забыл выполнить это условие, машина работать будет, однако у игрока могут случиться трудности с ремонтом такой машины в игре. Есть идея изготавливать ЛЮБУЮ машину с изобилием технических лючков, снимаемых деталей и прочей полу-декоративной мишуры. Механика игры позволяет ездить с открытым капотом и даже с частично снятой обшивкой на любой технике, а физика игры обеспечивает увеличение уязвимости механизмов, если эти защитные поверхности убраны. здесь тоже надо крепко подумать
Взрыв ракеты может порождать один или несколько следующих эффектов:
Все эти воздействия описываются либо на языке объектов-прожектайлов, которые трассируются как мгновенные лучи, либо на языке полевых воздействий. При чём поле может быть как мгновенным (ЭМ-волна), так и продолжительного действия (ударная волна). Выбор того или иного механизма диктуется особенностями реализации игровой физики, например, ударная волна должна “тащить” объекты за собой и поднимать пыль, а от ЭМ-волна нам нужна только что бы испортить электронику в зоне действия, и здесь хватает единоразового воздействия.
Если отвлечься от ракет, то любое низкоуровневое воздействие в системе относится к строго определённому слою в компонентной модели игры, который может быть как физическим, так и условным (логическим). Чаще всего воздействие является объектом особого типа, про которые надо бы не забыть.
Оружие - подвид механизмов, который можно иногда рассматривать как отдельный объект. Это не имеет смысла, если мы говорим о танковой пушке, но как только нам нужно выдать солдатику винтовку, становится понятно, что оружие лучше выделить в отдельный класс сущностей. Однако более общий случай - установка на технику, и там между оружием и другими агрегатами (двигатели, колёса) особых различий нет.
Каждый тип имеет свои преимущества и недостатки. Всего типов три, и в каждом два подтипа, один “классический”, второй - попытка устранить недостатки своего типа, приобретя некоторые черты соседнего типа.
Всё оружие делится на классы по массе (размеру). Каждая машина или персонаж, скафандр или орудийная башня, имеет слоты-крепления для оружия, и ставить туда можно только оружие своего класса. Всё оружие одного класса имеет одинаковые габариты, хотя могут быть небольшие визуальные различия в размерах исключительно из соображений эстетики.
Примечание: на космической технике применяются форматы, начиная со “среднего”.
Космические корабли различаются только по количественным параметрам: у них одна область применения, и, хотя размеры, и даже функции кораблей могут сильно разниться, суть у них одна. Космические станции, являясь частным случаем кораблей, лишаются некоторых функций. Космические истребители и москитный флот вообще не относится к космическим кораблям, а считается разновидностью авиации (см. “летательные аппараты”)
Функции космических кораблей:
Характеристики корабля складываются из характеристик его механизмов, навыков экипажа и свойств корпуса корабля (массы, балансировки и пр.). Характеристики часто связаны между собой, например чем больше масса корабля, тем лучше он держит курс, но медленнее поворачивает.
Каждый механизм имеет следующие параметры:
Служит для стабилизации и прецизионного ориентирования корабля. Устанавливается только в крупные суда с низким коэффициентом управляемости.
Разгоняют судно и поддерживают заданную скорость. Так как у нас особая, неньютоновская физика, то тормозит корабль сам. То есть с выключенным двигателем, корабль теряет скорость и останавливается. Реализм - фигня (ц).