Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости

в 5:39, , рубрики: Sonic the hedgehog, Алгоритмы, Программирование, разработка игр, старые игры, физика

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 1

Продолжение цикла статей о физике в играх про Соника. В этом посте рассматриваются отталкивания персонажей от различных игровых объектов и их суперспособности.

Ссылки на другие части серии:
Часть 1: твердые тайлы
Часть 2: бег
Части 3 и 4: прыжки и вращение
Части 5 и 6: потеря колец и нахождение под водой

Часть 7: пружины и штуковины

Пружинные площадки

Красные пружинные площадки придают Сонику скорость 16, а жёлтые — скорость 10. В зависимости от направления площадки (вверх или вниз), значение отрицательное или положительное, и соответственно скорости по оси Y придается это значение. Если пружинная площадка направлена влево или вправо, значение скорости отрицательное или положительное, соответственно скорость по оси X приравнивается к этому значению. Вертикальные площадки не влияют на скорость X, как и горизонтальные площадки не влияют на скорость Y.

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 2

Диагональные пружинные площадки

В Sonic the Hedgehog (16-bit) нет диагональных пружинных площадок. Однако они есть в Sonic 2 (16-bit), 3, Knuckles и CD. В Sonic 2, 3 и Knuckles они работают одинаково, но в Sonic CD принцип отличается.

в Sonic 2, 3 и Knuckles диагональная пружина устанавливает скоростям X и Y значение пружинной площадки с соответствующим знаком. Поэтому пружина, направленная вверх-вправо придает скорость Y, равную -16 и скорость X, равную 16. Проблема этого метода в том, что технически Соник отталкивается диагонально быстрее, чем горизонтально или вертикально. Это потому, что разработчики не позаботились учесть косинусы и синусы.

В Sonic CD они исправились. Удобно, что абсолютные значения синуса и косинуса угла в 45 градусов одинаковы, поэтому требуется только одно значение. Скорость становится равной 11.3125 для красных пружин и 7.0703125 для жёлтых.

Блокировка горизонтального управления

Когда Соник отскакивает от горизонтальной пружины (красной или жёлтой), он не может тормозить или иным способом влиять на свою скорость X в течение 16 циклов. Движок достигает этого, устанавливая ту же блокировку горизонтального управления, что и при скатывании с крутых склонов (в S3 и Knuckles байты $32-33 являются таблицей состояний объекта игрока). Зачем блокировать горизонтальное управление? При столкновении с пружиной игрок скорее всего нажимает крестовину в направлении пружины, и это может привести к отталкиванию Соника в анимации торможения. Временное игнорирование ввода — это быстрое и элегантное решение.

Анимация

В случае пружинной площадки, направленной вверх, когда Соник теряет всю скорость, направленную вверх, он переходит в анимацию ходьбы. Кадры этой анимации сменяются каждые 8 циклов.

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

Воздушные шарики

При столкновении Соника с воздушными шариками на уровнях Carnival Night Zone его скорость Y устанавливается равной -7, вне зависимости от угла столкновения. Скорость X не изменяется.

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 3

Бамперы

Бамперы в Spring Yard Zone придают Сонику скорость X, равную 7*cos(p), и скорость Y 7*-sin(p), где p — это угол между центрами бампера и Соника. Скорость устанавливается вне зависимости скорости Соника до столкновения с бампером.

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 4

Пушки

Пушки в Carnival Night Zone придают Сонику горизонтальную скорость 16*cos(p), и вертикальную скорость 16*-sin(p), где p — угол наклона пушки.

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 5

Крышки с пружинами

Красные крышки с пружинами, которые закрывают трубы в Chemical Plant Zone, работают как пружинные площадки, но немного сильнее, чем жёлтые площадки. При столкновении они придают Сонику скорость Y, равную -10.5.

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 6

Вертушки

Чёрные вертушки, которые разгоняют ежа вперёд в Chemical Plant Zone устанавливают скорость X равной 16. Однако они не замедляют его, если он уже движется быстрее.

Лифты в небе

Лифты в небе на уровнях Hill Top Zone перемещаются со скоростью X, равной 2, и скоростью Y, равной 1.

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 7

Грибы

Грибы в Mushroom Hill Zone работают как пружинные площадки, однако каждый последующий отскок становится выше предыдущего (до трёх отскоков). Первый отскок придаёт скорость Y -6.5, второй -7.5, а третий -8.5.

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 8

Разрушение стен

В Sonic 1, 2, 3 и Knuckles для пробивания разрушаемых стен при вращении абсолютная скорость X персонажа должна превышать 4.5 (за исключением персонажа Knuckles, который крошит стены при столкновении, при этом ему не обязательно вращаться). Столкновения с такими стенами не влияют на скорость X.

Однако когда Knuckles разрушает стены в Sonic 3 и Knuckles, несмотря на то, что его скорость X не изменяется, он не двигается в кадре, в котором ударяет стену. То же самое справедливо для пробивания Соником стены при вращении в Sonic 3 и Knuckles.

В Sonic CD, ограничение по скорости X убрано. Соник может пробивать разрушаемые стены, просто прыгая рядом с ними или вращаясь на любой скорости.

Разрушаемые блоки и камни

Когда Соник запрыгивает на разрушаемые объекты, такие как камни в Hill Top Zone, блоки в Marble Zone или крышки труб в Chemical Plant Zone, он отскакивает от них со скоростью Y, равной -3. Скорость X не изменяется.

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 9

Часть 8: суперскорости

Супербыстрые ботинки

Примечание переводчика: супербыстрые ботинки (Super Fast Shoes) — это бонус увеличения скорости, действующий 20 секунд и повышающий ускорение и максимальную скорость Соника. Выбивается из вот таких мониторов:

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 10

Переменная Значение
Ускорение 0.09375
Торможение 0.5 (не изменяется)
Трение 0.09375
Максимальная скорость 12
Ускорение в воздухе 0.1875
Трение при вращении 0.046875
Торможение при вращении 0.125 (не изменяется)

Примечание: если Соник падает в воду, все эффекты супербыстрых ботинок (Super Fast Shoes) обнуляются. «Подводные» переменные полностью их заменяют. Если вы выпрыгнете из воды, эффект супербыстрых ботинок не вернётся. Похоже, что это относится ко всем 5 играм.

В Sonic 3 и Knuckles темп музыкальной композиции увеличивается в 1.25 раза.

Супер/Гиперсоник

Примечание переводчика: Суперсоник (Super Sonic) — это суперформа персонажа Sonic the Hedgehog. Такая форма Соника впервые была применена в игре Sonic the Hedgehog 2 и в различном объёме реализовалась затем в каждой основной игре про Соника. Превратиться в Суперсоника можно, собрав все семь Изумрудов Хаоса, найдя не менее 50 колец и потеряв всю защиту. Сделав двойной прыжок, Соник становится жёлтым Суперсоником, это более быстрая и почти неуязвимая форма Соника. Однако на поддержание этой формы тратятся кольца (см. ниже).

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 11

В играх Sonic 3 и Knuckles, после сбора всех Изумрудов Хаоса на специальных уровнях можно собрать семь Суперизумрудов, после чего превратиться в Гиперформу персонажа. Она также тратит собранные кольца. В этом режиме персонаж может делать направленные двойные прыжки, уничтожать всех противников на экране и не способен утонуть, в отличие от суперформы.

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 12

Обзор физики в играх Sonic. Части 7 и 8: пружины и штуковины, суперскорости - 13

Переменные относятся к Суперсонику в Sonic 2 и к Супер- или Гиперсонику в Sonic 3 и Knuckles, за исключением отмеченной переменной.

Переменная Значение Значение (под водой)
Ускорение 0.1875 0.09375
Торможение 1 0.5
Трение 0.046875 (не изменяется) 0.046875 (не изменяется)
Максимальная скорость 10 5
Ускорение в воздухе 0.375 0.1875
Начальная скорость прыжка 8 3.5 (не изменяется)
Скорость прыжка при отпускании кнопки 4 (не изменяется) 2 (не изменяется)
Трение при вращении 0.09375 (0.0234375 в Sonic 3 и Knuckles) 0.046875 (0.0234375 в Sonic 3 и Knuckles)
Торможение при вращении 0.125 (не изменяется) 0.125 (не изменяется)

Способность Hyper Blast (только у Гиперсоника)

Когда игрок нажимает второй раз кнопку прыжка в воздухе, скорость Соника по оси X приравнивается 8, если он смотрит вправо, и к -8, если влево, а скорость по оси Y обнуляется. Если игрок удерживает «вверх» на крестовине при нажатии на кнопку, то скорость Соника по оси Y приравнивается к -8, а по оси X обнуляется.

Супертейлз, Супер/Гипернаклз

Переменная Значение Значение (под водой)
Ускорение 0.09375 0.046875
Торможение 0.75 0.375
Трение 0.046875 (не изменяется) 0.046875 (не изменяется)
Максимальная скорость 8 4
Ускорение в воздухе 0.1875 0.09375
Начальная скорость прыжка (не изменяется) (не изменяется)
Скорость прыжка при отпускании кнопки (не изменяется) (не изменяется)
Трение при вращении 0.0234375 0.0234375
Торможение при вращении 0.125 (не изменяется) 0.125 (не изменяется)
Скорость взбирания (только для Наклза) 2 2
Начальная скорость скольжения (только для Наклза) 4 (не изменяется) 4 (не изменяется)
Ускорение скольжения (только для Наклза) 0.046875 0.046875

Стенотрясение (Wall Quake) (только для Гипернаклза)

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

Отбор колец

Находясь в режиме Супер/Гипер, персонаж теряет по одному кольцу каждые 60 циклов, или раз в 1 секунду.

Примечания

Если Супер/Гиперперсонаж получает супербыстрые ботинки, разбив монитор, переменные супербыстрых ботинок заменяют переменные режима Супер/Гипер, на самом деле замедляя персонаж (однако максимальная скорость остаётся немного выше). Это может быть нежелательно в вашем собственном движке.

Когда Супер/Гиперперсонаж падает в воду, он использует указанные выше переменные. Однако, если они становятся Супер/Гипер уже под водой, переменные режима Супер/Гипер становятся такими, как будто он не находится под водой. Это баг, и его следует избегать в своём движке.

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

image

Автор: PatientZero

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js