DECORATE. Cоздание декораций(1).

Введение

DECORATE — это язык программирования, представленный в ZDoom, позволяющий создавать декорации, монстров, снаряды, менять свойства игрока, и многое другое. Также существует ZSCRIPT, который является улучшенной версией DECORATE, скрипт у него похожий. Как нибудь изучим его, но позже.

Подготавливаем изображения

  1. Сначала, скачайте пак_картинок(UPD ссылка обновлена), он понадобится для создания декораций.
  2. Далее закиньте, эти картинки в ваш wad файл.
  3. Потом нажмите «New Entry«, как показано на рисунке.
Это изображение имеет пустой атрибут alt; его имя файла - dec0-1024x543.png

Передаю благодарность пользователям под ником McMare и илья стриго с дискорд сервера -=[Doom]=- Comminity, за информационную помощь в создании этого гайда.

И создайте 2 маркера S_START и S_END, изображения должны находится между этими двумя маркерами. Перемещать маркеры можно стрелочками, как это показано на рисунке.

Это изображение имеет пустой атрибут alt; его имя файла - dec0_1-1024x543.png

Должно получится так

Это изображение имеет пустой атрибут alt; его имя файла - dec1-1024x543.png

Работать мы будем с изображением BUNNA0.

То пересечение двух линий что я выделил красной точкой, в будущем я буду называть смещением. Чтобы поменять смещение(Offset), нужно выбрать режим «Sprite» как показано на рисунке.

Задаем правильное смещение

Смещение изображения задает ту точку, относительно которой строится изображение. Например:

Пример неправильного смещения

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

Пример того, как будет выглядеть это в игре

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

Пример неправильного смещения
Пример того, как будет выглядеть это в игре

Нужно задать правильное смещение и тогда все будет хорошо.

Пример правильного смещения
Пример того, как будет выглядеть это в игре

Ладно, смещение задали, теперь перейдем к главному.

Разбираемся в DECORATE.

Синтаксис у DECORATE следующий:

actor имя_актора номер_предмета_в_редакторе
{
  ...
}
  • Имя актора(имя класса) — задает название предмета в думе. Введя в консоли «summon название_актора» можно заспавнить актор(предмет, монстр, бочка, декорация).
  • Номер предмета в редакторе — задает уникальный номер(id), его можно и не задавать, но лучше задать, чтобы можно было ставить акторы прямо в редакторе(Ultimate Doom Builder).

Напишите этот код в DECORATE:

actor bunny 10000
{
  radius 10
  height 64
  +SOLID
  states
  {
  Spawn:
    BUNN A -1
    stop
  }
}

А теперь разберем.

actor bunny 10000

С этой строчкой все понятно:

  • Имя актора — bunny
  • Номер предмета в редакторе — 10000
radius 10
height 64

Это свойства, подробнее на вики

  • radius задает ширину актора, например кибердемон шире имба, потому-что у него радиус больше. Из-за этого он не может протиснуться в узкие проходы.
  • height — задает высоту актора.
+SOLID

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

Блок States

states
  {
  Spawn:
    BUNN A -1
    stop
  }

Это блок states, в нем описываются события, что делать во время спавна актора или во время смерти актора, или во время атаки если это монстр. Кстати, синтаксис у states следующий:

states
  {
  название_события:
    первые_4_буквы_названия_спрайта название_кадра длительность_в_тиках
    ....
  }
  • Название события может быть любым, но есть и предустановленные события такие как Spawn, Death, Raise, Use и многие другие. Главное помните что событие Spawn, есть во всех акторах.
  • Первые 4 буквы названия спрайта — например POSS.
  • Название кадра — 5я буква названия спрайта, задающая кадр анимации, например A для первого кадра, если хочешь второй кадр анимации то B. Разумеется в директории должны иметься изображения POSSA0 и POSSB0.
  • Длительность в тиках — это длительность кадра в тиках(1 сек = 35 тиков). Если длительность равна -1(как в нашем случае) то этот кадр будет проигрываться вечно.

По поводу названия спрайтов(для использования в DECORATE):

  • Первые 4 буквы — задают название спрайта, они неизменны.
  • 5я буква — задает кадр анимации.
  • 6я цифра — задает как будет выглядеть актор, в зависимости от поворота камеры, сейчас я не буду объяснять это подробно, только лишь скажу что цифра 0 обозначает поворот актора на игрока, то-есть с какой бы стороны ты не посмотрел на актор, изображение не изменится. Подобное поведение заметно у аптечек, убитых импов, патронов, оружия и т.д.

Хорошо, с этим разобрались, осталось обьяснить что такое stop.

states
  {
  Spawn:
    BUNN A -1
    stop
  }

stop — останавливает скрипт актора, на практике это значит актор(например аптечка) исчез из игры.

Ну вот и все, сохраните вадник, и поместите кролика на карту.

Продолжение следует…

Итоговый результат

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!