LINUX.ORG.RU

Функция, действие, агент, событие, действие.

 ,


0

2

Я разрабатываю игру, точнее движок для игр. http://star-engineers.blogspot.ru/ И сегодня обдумывал метод реализации взаимодействия объектов и придумал систему их взаимодействия. Хочу задать вопросы. Как это дополнить и усовершенствовать? Есть ли модели получше?

Описание.

Каждый присоединяемый к части юнита в соответствующий слот модуль регистрируется в специальном поле части юнита как исполнитель определённого типа действий, манипулятор, инструмент, оружие, распылитель фермента и прочее.

При получении приказа исполнения функции, модуль если может, генерирует агента. Агент это нуль-контейнер для передаваемой вещи, м-контейнер для монтажа модуля на другого юнита, облако аэрозоля, луч, снаряд, ЭМП-удар. То есть агент является дополнительным объектом определяющим метод доставки действия к цели.

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

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

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

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

Я разрабатываю игру

«— Я доцент. — Поздравляю.»

Miguel ★★★★★ ()
Ответ на: комментарий от rezedent12

В лут будет выпадать всё что сохранило хотя бы 1 единицу прочности.

Т.е. болтик от ядерного реактора что ли? Или в соответствии с вопросом: подкова от верблюда?

korvin_ ★★★★★ ()
Последнее исправление: korvin_ (всего исправлений: 1)
Ответ на: комментарий от korvin_

Т.е. болтик от ядерного реактора что ли? Или в соответствии с вопросом: подкова от верблюда?

Да. Поэтому на полях сражений будут валяться горы запчастей. И тут можно реализовать вторичную переработку как элемент экономики.

rezedent12 ☆☆☆ ()
Ответ на: комментарий от rezedent12

уже было в Total Annihilation и его клонах: остовы техники и зданий целиком можно было переработать в металл прямо на месте

Hrenomoto ()
Ответ на: комментарий от Hrenomoto

уже было в Total Annihilation и его клонах: остовы техники и зданий целиком можно было переработать в металл прямо на месте

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

rezedent12 ☆☆☆ ()
Ответ на: комментарий от buddhist

И пишешь на гамбасе, конечно

Да. Правда не знаю как быстро будет работать обработка 5000 юнитов...

rezedent12 ☆☆☆ ()

юзали похожую систему в прототипе в 2007м. Вроде рабочая. Проверить не удалось, т.к. кроме мехнаики нужна еще и сама игра, а она не вышла.

stevejobs ★★★★☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.