[Underworld Ascendant] Механика нанесения урона (страница 1)

  • Страница 1 из 1
  • 1
[Underworld Ascendant] Механика нанесения урона
# 1 | |

Underworld Ascendant

Появившееся сегодня на Kickstarter обновление Underworld Ascendant едва ли будет интересно большому количеству игроков, поскольку описывает механику нанесения урона с точки зрения её программирования.

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

Наша система расчёта повреждений основана на двух типах (или классах, если среди вас есть программисты) объектов: наносящие урон и получающие. Объекты, наносящие урон, отправляют сообщение с указанием количества повреждений другим объектам, с которыми они взаимодействуют. Объекты, получающие урон, принимают сообщение и меняют своё состояние согласно указанным условиям. Многие объекты могут как получать повреждения, так и наносить их — это их свойства, называемые в Unity компонентами.

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

Раскачивающиеся секиры из видео выше обладают компонентом DoesCollisionDamage («Наносит урон при столкновении»). Этот компонент определяет наносимые повреждения в зависимости от массы секиры, её относительной скорости в момент столкновения и вычисляет оптимальный множитель эффекта, моделирующий столкновения лезвия с плоской поверхностью. Во время столкновения секиры с ящиком компонент отправляет последнему сообщение о наносимом ему кинетическом уроне.

Ящик обладает дочерними объектами, у каждого из которых есть собственный компонент получения повреждений. Этот компонент может иметь список «сопротивлений», уменьшающий получаемый урон. Каждое сопротивление применяется к одному из видов урона, и вычитает из него конкретное число или определённый процент. Сопротивления могут указывать на прочность объекта, его защиту или устойчивость к магии. Каждый дочерний объект имеет свой запас прочности, к которому и применяются полученные повреждения.

Начнём с того, что у ящика есть только один активный и видимый дочерний объект. Когда прочность дочернего объекта падает до нуля, он становится неактивным и создаёт следующий дочерний объект в заранее заданной последовательности. Таким образом, объект проходит три стадии получения урона прежде, чем будет разрушен секирой. Наверняка вы уже представили, как при помощи ящика можно временно вывести из строя ловушку, но лучше бы вам поторопиться и пройти мимо до того, как она снова заработает!

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

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

Обратите вниманием, что ни одно из показанных в демонстрации взаимодействий не является жёстко прописанным в коде. Каждый объект играет свою собственную роль. Всё, что мы должны сделать, чтобы объект в игре загорелся, это придать ему свойство горючести. В мире Underworld многие вещи могут гореть, не всегда тогда и там, где вам это нужно. Из горючих объектов можно делать костры, факелы и даже оборонительные сооружения! Вы можете блокировать ловушки различными объектами, однако лучше подбирать для этой цели вещи попрочнее. Бросая в монстров тяжёлые предметы, вы будете наносить им урон.

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

Главный инженер Джефф.

Источник: Kickstarter.


m00n1ight (Автор темы)
# 2 | |
"Мы быстро осознали, что не все виды урона оказывают одинаковый эффект."

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

Группа: Неймер
Регистрация: 2015-01-22
Сообщений: 312

Любимые CRPG: BG,PT,Fallout1-2,Arx Fatalis,Morrowind,Arcanum,DAO
# 3 | |
Цитата TristisOris ()
ну да, обычно в садике это происходит.

Скорее всего, имелось в виду осознание необходимости реализовать это в игре, что не всегда случается.

m00n1ight (Автор темы)
  • Страница 1 из 1
  • 1
Поиск: