Difference between revisions of "Sonic Physics Guide"
From Sonic Retro
m (Consistency) |
m (More accurate descriptions & updated link) |
||
Line 27: | Line 27: | ||
===Collision=== | ===Collision=== | ||
'''[[SPG:Solid Tiles|Solid Tiles]]''' | '''[[SPG:Solid Tiles|Solid Tiles]]''' | ||
− | :''Terrain Part 1:'' A detailed description of | + | :''Terrain Part 1:'' A detailed description of the individual building blocks of terrain and how they are processed detected. |
:*[[SPG:Solid Tiles#Sensors|''Sensors'']] | :*[[SPG:Solid Tiles#Sensors|''Sensors'']] | ||
'''[[SPG:Solid Terrain|Solid Terrain]]''' | '''[[SPG:Solid Terrain|Solid Terrain]]''' | ||
− | :''Terrain Part 2:'' How Solid Tiles and | + | :''Terrain Part 2:'' How Solid Tiles and collison layers are used to construct slopes, loops, and other structures. |
:*[[SPG:Solid Terrain#Layers|''Layers'']] | :*[[SPG:Solid Terrain#Layers|''Layers'']] | ||
:*[[SPG:Solid Terrain#Loops|''Loops'']] | :*[[SPG:Solid Terrain#Loops|''Loops'']] | ||
'''[[SPG:Slope Collision|Slope Collision]]''' | '''[[SPG:Slope Collision|Slope Collision]]''' | ||
− | :''Slopes Part 1:'' How the Player object uses its sensor arrangement to detect and react to | + | :''Slopes Part 1:'' How the Player object uses its sensor arrangement to detect and react to sloped terrain. |
:*[[SPG:Slope Collision#The_Player.27s_Sensors|''The Player's Sensors'']] | :*[[SPG:Slope Collision#The_Player.27s_Sensors|''The Player's Sensors'']] | ||
:*[[SPG:Slope Collision#Sensor_Activation|''Sensor Activation'']] | :*[[SPG:Slope Collision#Sensor_Activation|''Sensor Activation'']] | ||
Line 54: | Line 54: | ||
===Physics=== | ===Physics=== | ||
'''[[SPG:Slope Physics|Slope Physics]]''' | '''[[SPG:Slope Physics|Slope Physics]]''' | ||
− | :''Slopes Part 2:'' How the Player moves with momentum over angled surfaces, and | + | :''Slopes Part 2:'' How the Player moves with momentum over angled surfaces, and 360° movement along extreme slopes such as walls and ceilings. |
:*[[SPG:Slope Physics#Moving At Angles|''Moving At Angles'']] | :*[[SPG:Slope Physics#Moving At Angles|''Moving At Angles'']] | ||
− | :*[[SPG:Slope Physics# | + | :*[[SPG:Slope Physics#360_Degree_Movement|''360 Degree Movement'']] |
:*[[SPG:Slope Physics#Falling and Slipping Down Slopes|''Falling and Slipping Down Slopes'']] | :*[[SPG:Slope Physics#Falling and Slipping Down Slopes|''Falling and Slipping Down Slopes'']] | ||
:*[[SPG:Slope Physics#Landing On The Ground|''Landing On The Ground'']] | :*[[SPG:Slope Physics#Landing On The Ground|''Landing On The Ground'']] |
Revision as of 07:17, 24 November 2022
ROM Hacks make the process of developing a functional Sonic game with unique art, enemies, and modifications much easier, since the game engine and basic mechanics are already functional. However, if the game requires a different game engine, modifying existing low-level assembly may be inappropriate, and some game designers might choose to program their own unique game engine. The physics of a game engine are rules that describe how to transform the Player's input (either in the form of buttons, keyboard, or even a mouse if the designer feels inclined) into appropriate changes in the position of the sprites in the game (such as the Sonic sprite, or alternatively, how enemy sprites will respond). These physics guides will hopefully make the process of simulating the rules used in Sonic games easier.
Since the rules themselves are independent of how they are implemented, many people choose programming languages such as Java, C, C++, Python, or a Lisp dialect to implement game physics. In addition, people can choose to use more specialized applications like Adobe Flash (Animate), GameMaker Studio 2, or a Clickteam program like Multimedia Fusion 2.
Hopefully, these guides will provide adequate information to facilitate implementation.
Physics Guides
- A prerequisite for much of the info on this guide, including common variables, how angles work, how precise values for positions and speeds work, how object sizes are displayed, and more.
- Information about specific characters and their constants, variables, their varying sizes and jump height, and also detailing how their specific moves work.
Collision
- Terrain Part 1: A detailed description of the individual building blocks of terrain and how they are processed detected.
- Terrain Part 2: How Solid Tiles and collison layers are used to construct slopes, loops, and other structures.
- Slopes Part 1: How the Player object uses its sensor arrangement to detect and react to sloped terrain.
- Object hitboxes, the Player's hitbox, object solidity, platforms, and other ways objects directly interact with other objects.
Physics
- Slopes Part 2: How the Player moves with momentum over angled surfaces, and 360° movement along extreme slopes such as walls and ceilings.
- Horizontal input & general physics of the Player while they are in the air.
- Horizontal input & general physics of the Player while walking/running.
- Jump physics, jumping at angles, and how controllable jump height is achieved.
- Horizontal input & general physics of the Player while rolling.
- What happens when the Player gets hit.
- The Player's physics bouncing off enemies and other destroy-able items.
- The Player's physics underwater.
- The Player's abilities when super.
Gameplay
- The order that objects update each frame, and order of specific events like Player collision and movement.
- Mechanics and sizes for things like rings, pushable blocks, buttons, and springs. How they are constructed, function, and interact with the Player.
- Ring dispersal mechanics and physics when lost.
- General special abilities such as spindashing and elemental shields.
Presentation
- Camera mechanics when following the Player.
- Animations system, and specific animation timings & rules.
Special
- Lua scripts which overlay the game in an emulator for an interactive visual of collision.
- Special stages including the rotating mazes from Sonic 1.