Sonic Physics Guide
From Sonic Retro
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.
A prerequisite for much of the info on this guide.
Basic info about characters such as their varying sizes and jump height, and also detailing how their specific moves work.
A detailed description of how sloped terrain is constructed, and how objects use sensors to collide with it.
Explaining object hitboxes, solidity, the Player's hitbox, and other ways objects directly interact with them.
How the Player moves with momentum over angled surfaces, along with the specific physics for actions such as rolling.
Explaining the Player's physics through the air.
Describing how horizontal inputs control the Player while walking/running.
The Player's jump physics and how variable jump height is achieved.
Describing how horizontal inputs control the Player while rolling.
What happens when the Player gets hit.
Describing how the Player bounces off enemies and other destroy-able items.
How the Player's movements change underwater.
How the Player's abilities change when super.
The order of events for objects, including characters.
How objects such as rings, enemies, blocks, and springs move around, are constructed, and interact with the Player.
How rings disperse when hit.
General special abilities such as spindashing and elemental shields.
Mechanics of the camera following the Player.
Covering how animations play and specific animation timings.
Lua scripts which overlay the game in an emulator for an interactive visual of collision.