SPG:Main Game Loop
From Sonic Retro
|Sonic Physics Guide
In order to gain a full picture of how classic Sonic games work, the order of events is just as important as knowing what physically happens during them.
Characters/Players are the first objects to run their code.
Their main events depend on their current state.
|"Normal" means any time the Player is not airborne or rolling.
|"Rolling" means any time the Player is curled up into a ball on the ground.
|"Airborne" means when the Player is falling or jumping or otherwise not grounded.
After moving, the Player will check for nearby object hitboxes for overlap with theirs. It it important to note this happens from the Player's code, so before any objects run their code or act solid.
Next, objects executed are those which setup certain special events, like title cards.
After this, general objects are executed.
Object movement for things like enemies, bosses, gimmicks and any other objects found in a zone and their collisions with the terrain occur here.
The things listed below are in no particular order. Every object is coded separately and execute their code and actions in various orders within their routines.
Actions And Movement
General game objects run their various routines with actions in whatever order they are designed with. Their position could be the first thing to update, or it could be the last. They could update their X Speed and Y Speed before or after the position updates. It depends on the object.
- See Game Objects and Game Enemies for descriptions of the actions that general objects will execute here.
Solid Collision With Player
Player object collision with general objects happens here too. As stated in Solid Objects, solid objects run their own code to push the Player out rather than the Player object itself detecting them. This allows the game to run less code per frame, because the player isn't checking every object before object's are looped to run their own code. Player collision with an object could happen anywhere in an object's routine, also.
If the object uses a trigger area, overlap with that will be checked somewhere within the object's code, using the Player's current position.
Order Of General Objects
General objects themselves can be processed in any kind of order, objects are loaded into available memory at any time as they are needed. So an order or priority of general objects isn't really accounted for.