Статья
Раздел:
3. Редактор данных
Содержание:

Введение

Зачастую в стратегиях применяют точные значения, чтобы подчеркнуть необходимость точного расчёта. Но как часто такая точность встречается нам в реальной жизни? Никогда. Именно поэтому каждый уважающий себя командир должен учитывать фактор вероятности и уметь её считать.
А каждый уважающий себя модмейкер должен уметь предоставить такую возможность командиру. Эта статья научит Вас основам работы с вероятностью в Starcraft II посредством эффектов, а также раскроет невиданные доселе возможности.
Так вот, в SC2 есть несколько способов получить случайное воздействие на игровое событие:
  • триггерный;
  • через игровые константы;
  • через алгоритмы;
  • через урон;
  • через случайную задержку;
  • через вероятность срабатывания эффекта.
А теперь поподробнее о каждом из них.

Способ 1, триггерный

Для этого используются ф-ии блока "Случайный" из Редактора Триггеров.
Этот способ идеален тогда, когда воздействие на игру не обязательно осуществляется из РД (1). Такая "обходимость" возникает в тех случаях, когда мы используем триггерно созднные способности, или задаём сюжет, но не со стопроцентной вероятностью (например, случайный выбор игрока и т.п.). Однако в случаях, когда создаётся модификация, настоятельно рекомендуется избежать этого способа.

Способ 2, через Игровые Константы

Для этого используются соответствующий тип данных в SC2
Толком этот способ невозможно использовать. Он срабатывает только автоматически, да и самих случайных функций в нём маловато. А на игру воздействуют единицы.

Способ 3, через Алгоритмы

Для этого используются соответствующий тип данных в SC2
Простор этого способа куда выше, но у него есть одно серьёзнейшее ограничение - узкая специализация. Идеален для провешивания критов и уклонений.

Способы 4-5, через Урон и Случайную задержку

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

Способ 6, через вероятность эффекта.

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

Первый уровень вероятности.

Самый простой уровень, первый, определяет, сработал ли эффект или нет. И ничего более. Да, за одним эффектом может стоять сотня, но на данном уровне нет обратной связи. Иначе говоря, вот оно:
if (rnd.GetNext(0, 1) <= RandomValue && Validators()) Effect();
Никаких пунктов "иначе".

Простой пример. Не всегда ранящее оружие.

Сделаем так, чтобы Винтовка Гаусса наносила 10, а не 6 ед. урона, но только в 75% случаев. Иначе оружие не попадает или не ранит.
Для этого:
  • Возьмём эффект "Морпех - Винтовка Гаусса (урон)" и заменим:
  • Количество на 10 ед.
  • Вероятность на 0.75.

Пример посложнее. Починка.

Создадим спелл, который бьёт с определённой вероятностью, например "Починка".
Суть спелла:
  • Если у цели прочность больше или равна 80%, то чинит всегда.
  • При [60%; 80%) чинит с вероятностью 80%.
  • При [40%; 60%) чинит с вероятностью 60%.
  • При [20%; 40%) чинит с вероятностью 40%.
  • При [0; 20%) чинит с вероятностью 20%.
Чинит на 10% за раз.
Для этого нам понадобятся:
  • 1 способность.
  • 5 эффектов "Починка" (тип - "Изменить единицу") на +10% хп.
  • 4 валидатора на здоровье.
  • 1 запускающий эффект типа "Переключить".
Итак, что мы делаем:
  1. Создаём способность (можно взять базовую)
    • Id обозначим ##id##
  2. Создём 1 эффект-"Модификация (Изменить единицу)".
    • Ставим ему Id вида ##id##.
    • Пишем суффикс - уровень 1.
    • Ставим "Модфикация - Здоровье - Доля" - 0.1
    • Копипастим 4 раза.
    • Изменяем Id на ##id##1
    • В скопипастенных заменяем суффикс.
    • Там же заменяем вероятность согласно уровням (базовое значение вероятности - 1, поэтому в первом можно не менять). Верятность задётся десятичной дробью. 1% = 0.01, 100% = 1
  1. Создаём валидатор типа "Единица - Сравнение основных показателей".
    • Ставим ему Id вида ##id##.
    • Пишем суффикс - уровень 1.
    • Ставим "Здоровье" - 1.
    • Тип сравнения меняем на "доля" и "больше или равно".
    • Копипастим 3 раза.
    • Изменяем Id на ##id##1.
    • В скопипастенных заменяем суффикс.
    • Прописываем значения для проверки.
  1. Создаём эффект типа "Переключить".
    • Ставим ему Id в ##id##.
    • Заполняем поле "Случаи":
      a. Добавляем случай.
      b. Ставим ему Эффект - наш эффект 1.
      c. Аналогично с валидатором.
      d. Повторить ещё 3 раза (вплоть до №4) (можно копипастить!).
    • Ставим в "Стандарт" наш 5ый эффект.
  1. Смотрим на абилку и проверяем, что как запускаемый эффект прописан наш "случающий".
Лично я дал КСМу в качестве ремонта.

Примечания

  1. РД - здесь и далее - Редактор Данных.
  2. Поле "Случайный" (англ. Random) эффекта тип "Урон" - это поле задаёт максимальную дополнительную прибавку к урону.
Общее = Значение + (0-Случайный)
Total = Value + (0-Random)
  1. После третьей части статьи будет выложена карта с воплощёнными примерами.
  2. В логотипе статьи использована иконка с открытым доступом. Ссылка на источник предоставлена.

`
ОЖИДАНИЕ РЕКЛАМЫ...
6 комментариев удалено
14
Завтра будут парт 2 и парт 3.
Спеллы робят, проверл. Только с автокастом проблемы, но они будут решены.
20
напиши статью по созданию триггерных спеллов, а так зачётно +
14
Karp1989, СК2 тем и хорош, что здесь нет необходимости в создании триггерных спеллов (разве только что ради рандома и сложнейших функций). Ну, по крайней мере, в большинстве случаев.
15
здесь нет необходимости в создании триггерных спеллов
Я один уже сделал - показ/скрытие окна талантов. Функциональность и размер триггера минимальны, но одними только эффектами такого не сделать.
Hares, карту пример выложишь?
14
Харгард, после парт3.
В данный момент делаю юзабельными абилки из парт 2.

Запилил иконку
20
Hares, некоторые не хотят углубляться в дата эдитор, так как он очень сложный, и им легче сделать триггерные спеллы. на своей мапе я использую и те и другие спеллы
14
Karp1989, я же сказал, это для модификаций важно.
(Там триггеры не всегда робят.)
Этот комментарий удален
Чтобы оставить комментарий, пожалуйста, войдите на сайт.