Ein Überblick über die Physik in Sonic-Spielen. Teil 3 und 4: Springen und Drehen

Ursprünglicher Autor: info.sonicretro.org
  • Übersetzung


Von einem Übersetzer: Teile der Rezension sind klein, deshalb habe ich beschlossen, zwei Teile gleichzeitig zu übersetzen.

Links zu anderen Teilen der Serie:
Teil 1: Massivfliesen
Teil 2: Laufen
Teile 5 und 6: Ringe verlieren und unter Wasser sein
Teile 7 und 8: Federn und Gizmos, Supergeschwindigkeiten

Teil 3: Springen



Ускорение в воздухе

Когда Соник находится в воздухе, он может ускоряться быстрее, чем на земле. В два раза быстрее, если быть точным: 0.09375. Назовём это значение air.

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

Кроме того, для замедления также нет отличий, при нажатии кнопки «влево» из горизонтальной скорости всегда будет вычитаться air, а при нажатии кнопки «вправо» air будет к ней добавляться.

Максимальная скорость Соника в воздухе такая же, как и на земле, и равна 6.

Schwerkraft Die

Schwerkraft hat einen Wert von 0,21875 ( grv ). Dieser Wert wird bei jedem Schritt, bei dem Sonic nicht am Boden ist, zur vertikalen Geschwindigkeit addiert. Es lässt ihn fallen, wenn er von einer Klippe rutscht, und erlaubt ihm nicht, sich beim Springen endlos nach oben zu bewegen.

Maximale vertikale Geschwindigkeit

Es scheint, dass in Sonic 1 die vertikale Geschwindigkeit von Sonic in keiner Weise begrenzt ist. Beim Fallen erhöht grv die vertikale Geschwindigkeit weiter und erhöht sie unendlich.

In Sonic CDEs wird eine Einschränkung eingeführt, in der Sonic nicht schneller als 16 Pixel pro Schritt fallen kann. Diese Einschränkung ist wichtig, damit Sonic die Kamera niemals überholt und nicht durch den Boden fliegt, da er sich so schnell bewegen kann, dass er nicht einmal damit kollidiert. Ich denke, diese Einschränkung wurde aufgrund der erhöhten Höhenhöhe eingeführt, zum Beispiel in Collision Chaos, und des endlosen vertikalen Schafts in Tidal Tempest. Ohne diese Einschränkung könnte Sonic in einigen Bereichen auf enorme Geschwindigkeiten beschleunigen, was zu einer Unterbrechung des Gameplays führen könnte.

{
 Y speed = Y speed + grv
 if Y speed > 16 then Y speed = 16
 }

Luftwiderstand

Bei jedem Schritt, in dem Sonic in der Luft ist, wird eine spezielle Formel auf die horizontale Geschwindigkeit von Sonic angewendet, jedoch nur unter bestimmten Bedingungen. Erstens sollte die vertikale Geschwindigkeit negativ sein. Zweitens sollte die vertikale Geschwindigkeit größer als -4 sein (zum Beispiel -3 oder -3,5 größer als -4). Drittens sollte der Absolutwert der Horizontalgeschwindigkeit größer als 0,125 sein. Wenn diese Bedingungen erfüllt sind, wird die horizontale Geschwindigkeit mit einem Faktor von 0,96875 multipliziert.

 {
 if Y speed < 0 and Y speed is > -4
   {
   if absolute(X speed) >= 0.125 then X speed = X speed * 0.96875
   }
 }

Tatsächlich ist dies nur eine ungefähre Berechnung, und aus diesem Grund: Da die ursprünglichen Spiele 2 Bytes zum Speichern des Sonic-Geschwindigkeitswerts verwenden, wobei der erste Pixel und der zweite Subpixel sind, wird die Geschwindigkeit von 6,5 Pixel pro Schritt in einem Hexadezimalwert von 0680 USD ausgedrückt. In Dezimalzahl ist es 1664. Natürlich bewegt sich Sonic nicht mit einer Geschwindigkeit von mehr als tausend Pixeln pro Schritt! 1 Pixel = 100 US-Dollar (256), ein halbes Pixel = 80 US-Dollar (128). Daher sollte im ursprünglichen Spiel der Luftwiderstand wie folgt berechnet werden:

 {
 if Y speed < 0 and Y speed is > -$0400
   {
   X speed = X speed - ( X speed div $0020 ) ; "div" - это целочисленное деление
   }
 }

Wenn wir diese Berechnungen für relativ niedrige Werte der Horizontalgeschwindigkeit durchführen würden, die immer weniger als 20 USD (32) betragen würden, würde dies die Horizontalgeschwindigkeit kaum beeinflussen. Warum? Denn bei einer ganzzahligen Division einer beliebigen Zahl von weniger als 32 durch 32 wäre das Ergebnis 0. Daher müssen Sie im ursprünglichen Spiel vor der Berechnung des Luftwiderstands nicht prüfen, ob die horizontale Geschwindigkeit eines bestimmten Werts größer ist - wenn die horizontale Geschwindigkeit gleich oder kleiner als $ 001F ist, dann auf jeden Fall nichts wird passieren.

Daher kann der Luftwiderstand wie folgt genauer emuliert werden:

 {
 if Y speed < 0 and Y speed is > -4
   {
   X speed = X speed - ( ( X speed div 0.125 ) / 256 )
   }
 }

In jedem Fall ist der Unterschied zwischen den beiden Methoden ziemlich unbedeutend, nur die zweite ist technisch genauer.

Der Luftwiderstand wird bei jedem Schritt berechnet, bevor der vertikalen Geschwindigkeit grv hinzugefügt wird .

Sprunggeschwindigkeit

Jetzt sind wir daran gewöhnt, aber zum Zeitpunkt der Veröffentlichung des Spiels Sonic the Hedgehog gab es viele Spiele, die eine feste Sprunghöhe verwendeten. Es spielt keine Rolle, wie schnell der Spieler die Sprungtaste loslässt - der Charakter steigt immer noch um die gleiche Anzahl von Pixeln. Spiele wie Mario und Sonic gehörten zu den ersten, die flexiblere und reaktionsschnellere Steuerelemente hatten, die ein verbessertes Gefühl der Charaktersteuerung boten, was ein viel interessanteres und sparsameres Gameplay bedeutet.

Wie ist eine variable Sprunghöhe angeordnet?

Wenn Sie die Aufwärts-Taste drücken, während Sonic am Boden ist, beträgt die vertikale Geschwindigkeit -6,5 ( jmp) In einem Spiel ohne variable Sprunghöhe würden danach keine weiteren Berechnungen durchgeführt, außer der Hinzufügung der Schwerkraft, und die Geschwindigkeit des Charakters würde unter seinem Einfluss allmählich abnehmen. Das Ergebnis wäre ein genau 1 Sekunde dauernder Sprung auf eine Höhe von 100 Pixel. Diese Art von Sprung wird erzielt, wenn der Spieler den Sprungknopf drückt und ihn gedrückt hält, bis Sonic den oberen Rand seiner Flugbahn erreicht. Der Trick, der eine variable Sprunghöhe erzeugt, besteht darin, die Taste loszulassen.

Wenn ein Spieler nach dem Sprung die Sprungtaste in der Luft loslässt, prüft der Computer, ob sich Sonic nach oben bewegt (d. H. Die vertikale Geschwindigkeit ist negativ). Wenn ja, prüft es, ob die vertikale Geschwindigkeit kleiner als -4 ist (zum Beispiel ist -5 kleiner als -4). Wenn ja, wird der vertikalen Geschwindigkeit -4 zugewiesen. Somit können Sie den Sprung jederzeit abschließen, indem Sie die Sprungtaste loslassen. Wenn der Spieler die Taste im nächsten Schritt nach dem Sprung loslässt, macht Sonic den kürzesten Sprung.

In dem Schritt, in dem der Computer das Klicken einer Sprungtaste erkennt, bewegt sich Sonic nicht nach oben. Daher kann er im nächsten Schritt das Loslassen der Sprungtaste erkennen und Sonic beginnt, sich mit einer Geschwindigkeit von -4 nach oben zu bewegen, ohne sich mit einer Geschwindigkeit von jmp nach oben zu bewegen .

Überprüfen Sie, ob die Sprungtaste losgelassen wurde , bevor Sie Sonic an eine neue Position bringen und die vertikale Geschwindigkeit um grv erhöhen.

Leider überprüft der Computer das Klicken der Sprungtaste, bevor Sonic verschoben wird. Wenn der Spieler die Sprungtaste drückt, verlässt er den Rest des Zyklus, sodass Sonic sich während des Schritts, in dem der Spieler springt, weder in vertikaler noch in horizontaler Position bewegt. Dies ist falsch, da die horizontale Geschwindigkeit nicht verloren geht und er sich weiter bewegen muss. Dieser Nachteil kann im neuen Motor beseitigt werden.

Tails springt wie Sonic und Knuckles springt etwas tiefer, weil es einen etwas niedrigeren JMP- Wert hat , -6.



Teil 4: Rotation



Reibung

Wenn Sonic sich beim Drücken auf das Querstück zu drehen beginnt , aber nicht mehr beschleunigen kann. Egal wie der Spieler den Knopf für eine lange Zeit und in Bewegungsrichtung drückt, er verhält sich so, als ob der Spieler nichts drückt. Das einzige, was in diesem Fall eine Rolle spielt, ist die Reibung. Hier hat sie einen Wert von 0,0234375 (die Hälfte des Normalwerts), sodass Sonic anscheinend reibungslos rollt, wie ein Rad oder eine Kugel. Tatsächlich berechnet Mega Drive die Reibung während der Drehung und halbiert den Wert der normalen Reibung. Wenn Sie Game Genie verwenden, um den Reibungswert zu ändern, ist die Rotationsreibung immer halb so hoch.

Verlangsamung

Sonic kann jedoch beim Drehen immer noch langsamer werden. Wenn die Taste entgegen der Bewegung gedrückt wird, verringert sich die horizontale Geschwindigkeit um 0,125. Im Gegensatz zum Gehverhalten bleibt die Reibung während der Drehung auch dann bestehen, wenn der Spieler einen Knopf in Fahrtrichtung drückt. Daher nimmt in der Realität beim Abbremsen die horizontale Geschwindigkeit in jedem Schritt um 0,125 + 0,0234375 oder um 0,1484375 ab.

Es ist seltsam, dass während der Drehung dieselbe Anomalie der Verzögerung auftritt, wie beim Laufen. Wenn der Absolutwert der Horizontalgeschwindigkeit kleiner als 0,1484375 ist, wird dieser Wert subtrahiert, anstatt die Horizontalgeschwindigkeit mit Null gleichzusetzen, und wird in der entgegengesetzten Richtung gleich 0,5. Daher kann sich Sonic während der Drehung unerwartet drehen, auch wenn er nicht beschleunigen kann! Dieser Fehler wurde in Sonic 3 und Knuckles behoben. Wahrscheinlich fanden die Programmierer selbst dieses Verhalten unerwünscht.

Höchstgeschwindigkeit

(Hinweis: Derzeit wird dies für Sonic 1 und 2 getestet. Es ist noch nicht bekannt, ob dies für Sonic 3K oder Sonic CD gilt.)
Obwohl Sonic allein nicht schneller rollen kann, bedeutet dies nicht, welche - Niemals kann ein Hügel ihm einen zusätzlichen Schub geben. Hügel und Hänge können verwendet werden, um sich mit sehr hohen Geschwindigkeiten zu drehen. Wie beim Laufen hat Sonic während der Rotation eine maximale Geschwindigkeitsbegrenzung, obwohl diese viel höher ist und 16 Pixel pro Schritt erreicht. Im Gegensatz zum Laufen kann Sonic dieses Tempolimit jedoch in keiner Weise überwinden. Wenn sein gsp einen Wert von 16 erreicht und versucht, weiter zu steigen, wird er automatisch auf 16 gesetzt.

Bedingungen

In Sonic 1- und Sonic 2- Spielen kann Sonic nicht mit dem Drehen beginnen, wenn seine absolute horizontale Geschwindigkeit größer als 0,53125 ist.

In Sonic 3 und Knuckles wird dieser Wert auf 1,03125 erhöht. Dies ist sehr praktisch, da Sie die Abwärtstaste gedrückt halten können, um sich zu drehen. Wenn Sonic vor dem Bücken anhalten müsste, hätte der Spieler Schwierigkeiten mit dem schnellen Start der Rotation.

In Sonic 3 und Knuckles hört Sonic auf, sich zu drehen, wenn seine absolute horizontale Geschwindigkeit unter 0,5 fällt. Vielleicht wollten sie auf diese Weise die Anomalie beseitigen, die mit dem Drehen in die entgegengesetzte Richtung beim Drehen in früheren Spielen verbunden ist.

Drehsprung

In Sonic 1, 2, 3 und Knuckles kann der Spieler den Weg von Sonic in der Luft nicht mit den Richtungstasten steuern, wenn er in Rotation springt. Daher ist es schwierig, die Drehung zu starten, um an Geschwindigkeit zu gewinnen und dann einen exakten Sprung zu machen. In Sonic 3 und Sonic & Knuckles kann ein Spieler die Kontrolle über die Richtungstasten wiedererlangen, indem er den W Kaiten-Angriff abschließt.

W kaiten Angriff
Er ist Insta-Shield , auch bekannt als W-Spin-Angriff (W 回 転 アTwinッ ク) (in Japan), auch bekannt als Twin-Spin-Angriff in Sonic Generations - dies ist eine spezielle Bewegung, die Sonic erstmals in Sonic the Hedgehog 3 verwendet . Das Springen und erneutes Drücken der Sprungtaste in der Luft erzeugt einen kurzen Blitz, der Sonics Angriffsradius vergrößert und ihn vorübergehend unverwundbar macht. Diese Technik ist nützlich, um Bosse anzugreifen, die sich etwas außerhalb des Angriffsradius befinden und mit mit Stacheln versehenen Feinden wie Orbinaut bedeckt sind. Keiner der Charaktere außer Sonic kann diese Technik verwenden.


Orbinaut

In einer Sonic-CD kann ein Spieler jedoch einen in Rotation gemachten Sprung steuern, als wäre es ein normaler Sprung. Es scheint, dass dies ehrlicher mit dem Spieler ist.

Jetzt auch beliebt: