Aimbeast

Aimbeast

Not enough ratings
Гайд по созданию сценариев
By aimin'
Структура сценариев, описание большей части опций, тонкости и советы.
   
Award
Favorite
Favorited
Unfavorite
О гайде
Гайд условно можно поделить на три части: 1. Где находятся инструменты для создания сценариев и как сценарии создаются. 2. Беглое описание вкладок и возможностей. 3. Подробное описание практически всех опций 4. Отсебятина, возможные проблемы, известные баги, лазейки, советы, удобные клавиши, проч.
Гайд в постоянной разработке. Он будет корректироваться и дорабатываться.
Где создаются сценарии
Главные инструменты по созданию сценариев находятся в главном меню в "Customize" и во вкладке "Custom". Через кнопку "Customize" в главном меню редактируются и создаются карты, пресеты ботов, оружия и игрока. Потом во вкладке "Custom" эти пресеты собираются вместе, задаются общие настройки сценария и сценарии выгружаются в мастерскую.
"Customize": Кастомизация пресетов. Общее описание секций.
В Weapons настраиваются пресеты оружия. Здесь можно настроить оружие так, чтобы оно стреляло по клику либо по удержанию кнопки стрельбы; изменить скорость, с которой оружие может стрелять, добавить перезарядку, отдачу, разброс; дать оружию дополнительные способности (knockback, aim punch)

В Characters конфигурируется сам игрок (камера) и то, какое оружие он использует. Здесь можно поменять игроку пресет оружия, изменить игроку скорость и другие физические свойства. Также можно включить Possession и выбрать для него профиль движения (доступны на выбор только TDS профили движения), чтобы камеру двигало без вмешательства игрока.

В Bots настраиваются боты, таргеты. Здесь меняется моделька бота, размеры бота, количество его хп, скорость, физические свойства. В movement через movement profiles можно настроить стрейфы бота по горизонтали. Также здесь можно включить некоторые алгоритмы поведения (при столкновении с объектами и при приближении/отдалении от игрока на заданное расстояние). Далее идут "События". Можно добавить регенерацию здоровья, изменение размера, стрельбу по игроку, мультипрыжки, блинки, полет бота вверх-вниз, изменение скорости и еще много чего.

В Maps можно дублировать карту, переименовать ее и зайти в редактор карты.
Вкладка "Custom": общие настройки сценария
Во вкладке "Custom" находятся все локальные сценарии - скачанные и созданные. Здесь через настройки сценария собираются вместе ранее кастомизированные пресеты (игрока, бота и карты) и меняются общие настройки сценария. Это Timescale, лимит времени, правила спавна ботов и система получения очков. Еще здесь можно отключить возможность движения игроком.
Описание опций: Weapons
Weapon type - С Hitscan пули достигают цели в момент выстрела, с Projectile можно настроить пулям физику - скорость, гравитацию и область поражения. Для большинства сценариев будет использоваться Hitscan.
Weapon category - С Full auto оружие будет стрелять по зажатию кнопки. С Semi auto оружие будет стрелять по клику.
Fire rate - Количество выстрелов, которое оружие способно сделать за минуту. Чтобы перевести количество выстрелов в минуту на количество выстрелов в секунду для лучшего понимания скорости, нужно Fire rate разделить на 60. Fire rate влияет на все типы оружия. Максимальный Fire rate 2500, но его можно умножить при помощи Timescale в общих настройках сценария. Для smoothness сценариев есть смысл ставить более низкий Fire rate, чтобы приоритизировать uptime на боте и наказать за частые смещения прицела с бота. Для сценариев, где приходится каждые несколько миллисекунд корректировать прицел на цель, лучше подходит высокий Fire rate, чтобы уменьшить фактор случайности. (Например, если Fire rate 600, то выстрелы будут раз в 100 миллисекунд, поэтому если игрок удерживает прицел на цели не дольше 100 миллисекунд, есть вероятность, что оружие не успеет даже выстрелить, и игрок не получит очков за удержание прицела на боте вообще).
Infinite ammo - при вкл. дает оружию бесконечный магазин. При выкл. патроны тратятся при выстреле. При выкл. есть возможность установить количество патронов в магазине (Ammo count) и время перезарядки (Reload time). Также можно включить мгновенную перезарядку после убийства цели или после попадания по цели - Refill ammo on kill и Refill ammo on hit соответственно.
Body damage - урон оружия при попадании по "телу" бота
Head damage - урон оружия при попадании по "голове" бота
В Extra есть интересная опция Slow enemy on hit, которая позволяет умножить скорость бота после попадания по нему и установить Duration - длительность эффекта умноженной скорости.
Описание опций: Characters
Здесь можно выбрать оружие, настроить физику персонажу, включить possession.
Опции для изменения физики те же самые, что и в Bots.
Описание опций: Bots. Часть 1
Bot type - тип модельки бота
Hide head - убрать хитбокс головы
Random height from ground - можно задать область, на какой высоте будет спавниться бот
Invincible - бот не будет получать урон от попадения по нему
Health - количество хп бота. Чтобы понять, сколько попадений понадобится, чтобы бот умер, нужно разделить Health на Body damage (из настроек оружия). Чтобы посчитать сколько миллисекунд нужно будет держать прицел на боте, чтобы его убить, нужно полученное ранее число умножить на 1000/(Fire rate/60)
Life time - время в секундах сколько будет жить бот после того, как заспавнится. Опция может работать параллельно с опцией Invincible.
Jump velocity - сила прыжка. Влияет на прыжки в ивенте multiple jumps и на прыжки внутри пресета движения (movement profile).

Use character movement settings - копирует физику из профиля игрока. Советую всегда держать опцию выключенной.
Movement speed - скорость бота при максимальном ускорении
Movement acceleration - ускоряемость; то, как быстро бот набирает скорость до максимальной.
Ground friction - сила трения бота с поверхностью "земли". Чем больше будет это трение, тем быстрее и резче бот будет останавливаться и менять направление влево-вправо.
Braking friction и braking deceleration - сила трения при торможении и скорость торможения. Имеют заметное влияние только в связке с Ground friction или с Air control < 1. Чтобы дать боту практически мгновенное торможение и ускорение, можно поставить movement acceleration и deceleration на 50000.
Max walkable floor angle - максимальный угол наклона поверхности, при котором бот сможет по этой поверхности передвигаться.
Max step height - максимальная высота шага, через насколько высокие преграды бот может пройти.
Gravity scale - сила гравитации бота. Значения выше нуля плохо дружат с event'ом Fly up/down (бот будет пролетать через пол и потолок).
Air control - влияет на то, как быстро бот может менять направление (и может ли вообще) при полете вверх или вниз, при прыжке и падении. При 0 бот не сможет набирать скорость в воздухе.
Force movement in air - заставляет бота всегда двигаться в воздухе.
Keep spawn height from ground - спавнит бота поверх его спавн-поинта. С этой опцией лучше не использовать ивент jump(in air) (бот пролетает через потолок и пол).
Spawn in air - спавнит бота в воздухе.

Enable bot movement - открывает возможность задать боту движения по горизонтали. Если бот не двигается лучше держать опцию выключенной для оптимизации.
Movement profile count - количество профилей движения. Они используются, чтобы совмещать стрейфы с разной длинной.
Movement profile type - тип профилей движения. LMP - вручную задаются минимальная и максимальная длительность стрейфов. TDS - профиль создается на основе ваших движений.
Swap movement profiles - при выкл профиль движения выбирается случайным образом при спавне бота и больше не меняется. При вкл. можно задать время смены профилей. По умолчанию профили будут сменяться случайным образом, на основе их "веса".
Cycle movement profiles - профили будут сменяться по порядку.
Disable wall detection - бот не будет автоматически менять направление, чтобы не столкнуться со стенами. Он будет идти в стену, пока не поступит команда пойти в другом направлении. Wall detection работает иначе на вертикальные движения - с ним бот будет просто отскакивать от потолков и пола, он не будет пытаться предотвратить столкновения с ними. При выключенном Wall detection (то есть если Disable wall detection включена), бот будет пролетать сквозь стены и потолки с ивентом Fly up/down, либо будет лететь в потолок/пол с ивентом jump(in air).
Keep distance from player - сохранять дистанцию от игрока. Заставляет бота идти назад при достижении MIN расстояния и вперед при достижении MAX расстояния. Если бот не может дойти до этого расстояния, он идет либо только вперед, либо только назад.
Lock rotation on spawn - задает направления движения при спавне бота в зависимости от направления спавн-поинта. При выключенной опции (по умолчанию) бот движется вправо-влево-назад-вперед относительно игрока и двигается по какой-то спирали (хотя по идее должен двигаться по окружности TT).
Forward angle multiplier - множитель угла при движениях вперед+влево, вперед+вправо, назад+влево и назад+вправо. При значении 1 при этих движениях бот движется на 45 градусов относительно плоскости пола.
LMP Movement profile
Нажав на шестеренку возле LMP профиля движения можно открыть окно с редактированием профиля движения.
Forced l/r - заставить бота двигаться либо влево, либо вправо. С выключенной опцией бот может решить не двигаться ни вправо ни влево - стоять на месте, либо двигаться вперед/назад.
Forced f/b - то же самое, но с движениями вперед и назад.
Avoid repeating dodge directions - без этой опции бот после стрейфа в одну сторону может решить делать еще один стрейф в эту же сторону. Покажу на примере.

Здесь бот двигается всегда либо вправо, либо влево с равным шансом. Например, он решает идти влево 1.25 секунды. После этих 1.25 сек, как бот закончит стрейф, он снова решает, идти ему влево или вправо. И он снова может решить идти влево. Допустим, уже на 1.75 секунд. В таком случае получится, что бот движется влево уже 3 секунды, хоть максимальное время влево и установлено на 2 секунды. И так есть вероятность, что бот будет делать очень длинные стрейфы. Чтобы заставить бота поменять направление сразу, как он сделает стрейф в одну сторону, нужно включить опцию Avoid repeating dodge direction.
Left/Right/Forward/Back weight - относительная вероятность стрейфа в какую-то сторону. Не сильно важные параметры в большинстве случаев.
Left/Right/Forward/Back time - время стрейфа в каком-то направлении.
Остальное здесь смело могу назвать бесполезным - прыжки, остановки (опция Can idle) лучше добавлять через Events
Описание опций: Bots. Часть 2
Enable size shifting - увеличение/уменьшение размера бота.
На примере в скрине бот спавнится со множителем размера 1, то есть у него свой обычный размер, за 0.5 секунд он увеличивается в 2 раза (Mid size multiplier), потом за 1 секунду он увеличивается в 4 раза (End size multiplier), потом за 1.5 секунды уменьшается до изначального множителя - до 1.
End trigger - что должно произойти по истечении End size duration. End session - завершить сценарий; Deal player damage - нанести игроку урон; Destroy - самоуничтожиться боту; Loop - зациклить увеличение-уменьшение размера, он будет меняться в порядке: Initial size -> Mid size -> End size -> Initial size -> Mid size -> End size и так далее. Reverse - цикл в обратном направлении. Будет порядок: Initial size -> Mid size -> End size -> Mid size - Initial size и так далее. None - никаких действий после End size.

Health regen - восстановление здоровья бота; регенерация.
Health regen amount - то, сколько восстанавливается хп за один раз.
Health regen interval - то, через какой промежуток времени добавляется хп.

Enable blink - блинки
Use wall detection - опция должна предотвращать блинки в стены. Однако с этой опцией бот делает блинки вперед либо назад, когда бот "видит" стену. Даже когда блинки вперед и назад выключены. Также wall detection не работает на потолки и пол. Как по мне лучше даже не включать wall detection.
Disable blink overlap protection - с выключенной опцией блинк не срабатывает если бот в этот момент делает другой блинк.
Blink on hit - бот будет делать блинк после попадания в него.
Blink duration - как быстро бот будет делать блинк.
Blink towards movement direction - бот будет делать блинк в направлении своего движения.
Blink {direction} weight - относительная вероятность блинка в каком-то направлении. Направление определяется при спавне бота, поэтому оно будет зависеть от направления спавн-поинта на карте.
Blink distance - расстояние блинка. Зная Blink duration и Blink distance можно высчитать скорость движения бота при блинке. Для этого нужно это расстояние поделить на Blink duration. Если есть какое-то препятствие в направлении блинка ближе, чем на расстоянии блинка, скорость блинка уменьшается. Возможно, это баг.
Blink angle - угол блинка по оси Y. Чтобы бот делал блинки на все 180 градусов в каком-то направлении (влево или вправо) можно вписать угол от -90 до 90.
Blink interpolation type - уменьшает скорость при начале и/или окончании блинка, чтобы немного сгладить движение, либо делает скорость блинка одинаковой все время (Linear).

Enable events - включает возможность добавлять события.
Event trigger - то, что запускает событие. Timer - запуск события по интервалу времени. On hit - запуск события после попадания по боту. On destroy - запуск события после того, как бот уничтожится. On jump - запуск события после прыжка. On collision - после столкновения с объектами (если включен wall detection бот не сталкивается со стенами, он меняет направление до столкновения). On landed - при падении бота на пол. Без Gravity > 0, при столкновении бота с полом, событие не будет срабатывать. On blink - вроде как срабатывает именно после того, как бот завершил блинк.
Event triggered - само событие, которое происходит от Event trigger'а.
Jump - прыжок от пола. Без Gravity > 0 не имеет смысла использовать.
Jump velocity - сила прыжка.
Jump (in air) - прыжок в воздухе. Имеет смысл использовать как Gravity=0, так и с Gravity>0. При отрицательном значении velocity бот "прыгает" вниз.
Fly up/down - полет вверх/вниз. Отличается от Jump (in air) тем, что гравитация, даже если она есть, не тянет бота вниз после того, как бот пролетел вверх. Ее, кстати, лучше выключить с этим ивентом (поставить на 0), чтобы бот не пролетал сквозь пол. Еще можно заставить бота считать, что он находится на земле (включив опцию Keep spawn height from ground) и тогда на бота будет действовать Ground friction, это создает очень много возможностей для изменения физики бота. Также у события Fly up/down можно настроить полет по дистанции, которую он должен пролететь.

Опции из раздела FLY влияют только на ивент Fly up/down.
Force full movement - Если опция включена: когда срабатывает событие и бот решает пролететь какую-то дистанцию, он ее пролетит полностью, даже если во время полета сработает событие на полет в противоположном направлении
Если опция выключена: Допустим, сработал ивент, чтобы бот пролетел дистанцию в 1000 единиц вверх, но через 0.5 секунд срабатывает событие полететь вниз. Даже если бот еще не успел пролететь 1000 вверх, бот полетит вниз, если сработает такой ивент.
Min distance threshold - минимальная дистанция, которую бот должен пролететь вверх/вниз (на jump (in air) не влияет).
В примере на скриншоте бот будет лететь либо 150-300 вниз, либо 150-300 вверх за одно срабатывание события (может несколько раз сработать событие полететь вниз/вверх и тогда бот пролетит больше 300 в одном направлении).
Fly interpolation type - кривая полета. Лучше всего работает SMOOTH 1 в большинстве случаев.
Match bot movement speed - скорость полета будет равна скорости движения по горизонтали (Movement speed).
Override fly speed - скорость полета.
Описание опций: вкладка "Custom", настройки сценария
Выбираем ранее кастомизированные пресеты:
Character's profile - профиль игрока. Стоить заметить, что выбирается именно профиль игрока, а не оружия. Профиль игрока, в свою очередь, привязывается к профилю оружия.
Map - карта.
Add bot profile - добавление пресетов ботов. Можно добавить несколько, чтобы иметь на карте несколько разных ботов одновременно, либо сменять одного бота на другого после его смерти.
Если поставить в общих настройках пресет, а потом поменять ему имя, пресет слетит. Нужно будет выставить его снова.

Bot number - количество ботов на карте.
Timescale - множитель времени. Он влияет на все таймеры, на скорость ботов и персонажей, на акселерацию, торможение, на скорость стрельбы оружия - все это ускоряет/замедляет в X раз. Не влияет он только на продолжительность сценария.
Infinite time - у сценария не будет таймера. Тем не менее сценарий может закончится, если есть какой-то ивент, который заканчивает сценарий (Столкновение объекта с End Game Block на карте, либо же запуск ивента End match из настроек бота, либо достижение лимита по убийствам).
Time limit - таймер сценария, его продолжительность.

Spawn collision handling - опция для выбора что делать, если бот при спавне сталкивается с другим объектом.
Always spawn, ignore collisions - спавнить независимо от того, сталкивается бот с чем-то или нет. Если у бота спавн-поинт в стене, то он заспавнится в стене с этой опцией.
Try to adjust location, but always spawn - попробовать сменить позицию бота, чтобы избежать коллизий, но если не получится, то заспавнить игнорируя коллизии. Если бот спавнится наполовину в стене, эта опция его может передвинуть.
Try to adjust location, don't spawn if still colliding - попробовать сменить позицию бота, чтобы избежать коллизий, а если не получится, то пропустить спавн.
Don't spawn - не спавнить если бот сталкивается с другим объектом.

Spawn system: instant - спавнить мгновенно и параллельно; normal - спавнить по порядку, дает возможность задать задержку спавна.
Spawn delay (min/max) - минимальный и максимальный промежуток времени между спавнами.
Skip first spawn delay - первый спавн будет без задержки.
Spawn in order (Spawn id) - спавнить ботов в спавн поинтах по порядку их id (первый спавн поинт, который устанавливается на карте, имеет spawn id=1, второй spawn id=2 и так далее).
Spawn in order (Bot profile) - спавнить ботов в порядке профилей (Profile 1, Profile 2, Profile 3...)
Spawn overlap protection time - кулдаун спавн-поинтов; время, которое должно пройти после спавна в какой-то точке, чтобы спавн-поинты вокруг в каком-то радиусе снова могли быть использованы. Используется, чтобы после убийства бота на его месте и слишком рядом сразу не спавнился следующий.
Spawn overlap protection radius - в круге этого радиуса будет действовать кулдаун. Если радиус 0, то кулдаун будет работать только на сам спавн поинт, который был использован.
Disable spawn overlap protection - выключить кулдаун.

Scoring system - если сценарий не подразумевает движения игроком, то всегда будет NORMAL.
Score per kill - количество очков за убийство бота. Если помимо Score per kill установлен еще Score per hit, то за каждое убийство помимо очков за убийство будут даваться очки за попадание. Они не заменяют друг друга, а суммируются.
Divide by lifetime - при убийстве бота делит Score per kill на то, сколько секунд бот прожил с момента спавна, и начисляет полученное число в качестве очков за одно убийство. Например, Score per kill=100, на карте спавнится бот, я убиваю его за 0.4 секунды (400 миллисекунд). За это убийство я получу 100/0.4=250 очков.
Score per hit - количество очков за попадание по боту.

Disable player movement - отключить возможность движения игроком.
Disable third person - отключить возможность использования вида от третьего лица.
Randomize initial player spawn point - Если на карте несколько спавн поинтов игрока, будет спавнить в случайном из них.
Редактор карт: инструменты
Редактор карт: удобные кнопки, комбинации клавиш, управление.
Чтобы передвигаться нужно зажимать правую кнопку мыши и использовать WSAD, Space, Ctrl.
Чтобы выбрать несколько объектов за раз нужно кликать на них зажимая Shift.
Чтобы дублировать выделенные объекты, нужно зажать Alt и передвинуть/повернуть объекты.
Редактор карт: как направить камеру на спавн-поинт
Чтобы направить камеру в центр спавн-поинта бота/стены нужно поставить спавн-поинт игрока на 75 единиц ниже, чем спавн-поинт бота, в настройках игрока Characters установить Gravity=0, а в настройках бота включить опцию Spawn in air.
При этом прямо под спавн поинтом игрока не должно быть объектов.
2 Comments
bblladde#rawinput 15 Jul @ 12:04am 
хорош:rheartr:
hellkai 9 Oct, 2024 @ 7:49am 
сигма, когда-нибудь я сделаю свой таск!!!