Аватар и движение
Аватар ходит со скоростью 15 единиц в секунду, а рывок за 0,15 с переносит его на 7,5 единицы. Хитбокс - круг радиусом 0,15 единицы, меньше нарисованного квадрата в 0,5 единицы
Эта страница - источник истины для аватара. Игра и оба бота сделаны под эти числа, а в SDK они записаны константами AvatarRules. Код, который с этой страницей не согласен, - ошибка в коде
Расстояния указаны в мировых единицах. Камера по умолчанию ровно 10 единиц в высоту (ValueRules.DefaultZoom), так что единица - это десятая часть высоты экрана, а тело аватара шириной в половину единицы.
Зум камеры меняет то, сколько вы видите, но не числа ниже
Числа
| Что | Значение | Простыми словами |
|---|---|---|
| Скорость ходьбы | 15 ед./с | пересекает экран сверху вниз за две трети секунды |
| Скорость рывка | 50 ед./с | в 3,3 раза быстрее ходьбы |
| Длительность рывка | 0,15 с | |
| Дальность рывка | 7,5 единицы | скорость × длительность, три четверти высоты экрана |
| Перезарядка рывка | 0,3 с | считается с начала рывка |
| Неуязвимость рывка | 0,3 с | тоже с начала, поэтому длится на 0,15 с дольше самого движения |
| Кратчайший рывок | 0,01 единицы | столько же, сколько дистанция прибытия, ближе вы уже стоите на цели |
| Скорость отбрасывания | 50 ед./с | в 3,3 раза быстрее ходьбы, Урон и жизни |
| Длительность отбрасывания | 0,15 с | управлять в это время нельзя |
| Таймаут урона | 1,0 с | все следующие попадания внутри него игнорируются |
| Размер тела | 0,5 единицы | нарисованный квадрат |
| Хитбокс | радиус 0,15 единицы | 0,3 от тела, намеренно меньше видимого |
| Появление и исчезновение | 0,3 с | вырастает и сжимается в точку |
| Влияние размера игрока на скорость | полное, 1,0 | более крупный аватар движется пропорционально быстрее. Это трек размера игрока в уровне, а не зум камеры |
| Скорость поворота | 30 /с | косметика: куда смотрит тело |
| Дистанция прибытия | 0,01 единицы | ближе этого к курсору считается, что вы стоите на нём |
Производные от них, и именно они решают уворот:
| Что | Значение |
|---|---|
| Кратчайший рывок: расстояние | 0,01 единицы |
| Кратчайший рывок: длительность | заметно короче кадра |
| Кратчайший рывок: перезарядка и неуязвимость | заметно короче кадра, у каждой |
| Самые частые рывки | не чаще, чем через кадр |
| Дальность отбрасывания | 7,5 единицы |
Что происходит при попадании - Урон и жизни
Движение
Управлять можно одним из двух способов, и игра никогда их не смешивает:
- Направление: WASD, стик геймпада, гироскоп. Аватар движется туда, куда вы толкаете, со скоростью ходьбы. Стик, отклонённый наполовину, даёт половину скорости, и другого "медленного шага" нет
- Курсор: мышь или палец. Аватар догоняет точку, а не телепортируется в неё. Он движется со своей скоростью ходьбы и отстаёт от быстрой мыши
Движение мгновенное в обоих случаях: без разгона, скольжения и инерции. Вы останавливаетесь в тот же кадр, когда перестаёте двигаться
Рывок
Неуязвимость длится на 0,15 с дольше движения. Этот запас после приземления и позволяет проходить рывком сквозь препятствие
Во время рывка вы управляете направлением. Рывок идёт туда, куда вы просите: по зажатому направлению или в точку прицела, и его можно поменять посреди рывка. Рывок без зажатого направления никуда не двигает
С курсором рывок идёт туда, куда вы указываете, и там останавливается:
| Расстояние до курсора | Что происходит |
|---|---|
| дальше 7,5 единицы | полный рывок в его сторону. Вы останавливаетесь, не доходя до курсора |
| от 0,01 до 7,5 единицы | укороченный рывок, который заканчивается точно на курсоре |
| ближе 0,01 единицы | рывка нет |
Укороченный рывок - тот же рывок в уменьшенном масштабе. Путь, неуязвимость и перезарядка уменьшаются вместе: рывок вполовину короче вдвое меньше защищает и вдвое быстрее перезаряжается. Дешевле он не бывает. Два половинных рывка стоят ровно столько же, сколько один полный, и проходят то же расстояние
Несостоявшийся рывок ничего не стоит: перезарядка не начинается, ничего не тратится. Игрок с направлением, который ничего не зажал, получает тот же ответ - рывка нет
Тело становится глубже синим, пока вы в рывке, а затем возвращает обычный цвет за следующие 0,15 с. Ничто другое не меняет цвет тела, даже попадание - рывок это ваше собственное движение, поэтому меняется только он
След рывка и этот синий зависят от длины рывка: полный рывок показывает их целиком, самый короткий - на 0,3 от этого, всё между ними пропорционально. У короткого рывка частицы вылетают медленнее, так что след выглядит ровно такой длины, как рывок
Два стиля, один бюджет
- В режиме
Направлениерывок всегда идёт на все 7,5 единицы. Надёжная дальность, прицеливаться не надо, но и остановиться на полпути нельзя - С курсором вы выбираете длину и можете остановиться точно в точке. Короткий рывок - это короче защита и ещё один уязвимый кадр на каждый рывок. Если указать далеко, вернётся полный рывок
По прямой оба проходят одно и то же расстояние за одно и то же время. Ни один стиль не сильнее: один даёт точность, другой простоту
Рывки подряд
Зажатый рывок - не неуязвимость. Перезарядка и защита одной длины, поэтому зажатая кнопка даёт непрерывную цепочку рывков. Но между двумя рывками всегда есть ровно один кадр, в который вас можно задеть, при любой частоте кадров, на медленном телефоне так же, как на быстром ПК. Самая плотная цепочка - рывок не чаще, чем через кадр
Хитбокс
Кольцо из точек на аватаре нарисовано ровно по хитбоксу. Пуля задела контур и ничего не сделала? Так и задумано
Пока вы неуязвимы (в рывке или сразу после попадания), хитбокса нет вовсе
Это же кольцо показывает жизни: горящая точка - жизнь в запасе
Заметность кольца задаёт Настройки → Интерфейс → Непрозрачность кольца хитбокса. 0 скрывает его, но уровни сбалансированы под того, кто его видит
Тело - сетка из 25 квадратов, 5 на 5. С потерей здоровья квадраты от края к центру не исчезают, а гаснут: потерянный квадрат остаётся бледным призраком, так что сетка всегда показывает все 25, а здоровье читается по числу ещё горящих.
Так выглядит классический скин. Скин может поменять сетку, форму каждой клетки и цвета - Скины
Квадраты-призраки достаточно прозрачны, чтобы сквозь них было видно кольцо хитбокса под телом.
При нуле здоровья горит ровно один квадрат - последний.
Любая потеря здоровья показывается за 0,25 с, любое восстановление - за 0,6 с, сколько бы жизней это ни было.
Если выключить Графика → Эффект осколков, тело станет одним квадратом, который гаснет. Это для слабых устройств
Появление и исчезновение
Аватар за 0,3 с вырастает в уровне и за 0,3 с сжимается в точку при смерти. В обоих случаях он не отвечает на ввод, а во время появления его нельзя задеть
Масштабирование
Уровень может анимировать размер и скорость аватара своими треками. Ещё он может на время забрать управление или выключить столкновения
- Скорости ходьбы, рывка и отбрасывания умножаются на одно число. Поэтому на половинной скорости вдвое короче и рывок (3,75 единицы)
- Более крупный аватар движется пропорционально быстрее, потому что его увороты тоже выросли. Размер здесь - собственный размер аватара из трека размера игрока. Зум камеры не меняет ни скорость, ни расстояния, ни окна: аватар проходит 15 единиц в секунду, что бы ни делала камера
- Хитбокс - доля нарисованного тела, поэтому растёт и уменьшается вместе с аватаром
- Прицеливание рывка использует текущую дальность, а не табличные 7.5. На уровне с половинной скоростью курсор в 3,75 единицы уже просит полный рывок, а порог 0,01 единицы становится 0,005, потому что рывок над ним тоже вдвое короче
- Окна в секундах не масштабируются: перезарядка, неуязвимость, таймаут урона, появление. Только длина самого рывка масштабирует два его собственных окна
Боты подчиняются тем же правилам, Боты