Example:
(you are only to understand the complexity, the example is not important or real)
**** EXAMPLE START ****
Game Object A
is to be placed according to the result of
Raytrace X mixed with Raytrace Y and added the computation of Game Object B
Raytrace X: Fired every frame
Raytrace Y: Fired when Game Object C, a child of Game Object A is colliding
Game Object B is averaged from the path of Game Object A
... Or something..
**** EXAMPLE END ****
Now, we have a lot of different inputs and calculations, and each need to happen in the right order, spread over actions and Game Objects.
One can place "Next frame event" several places, and some actions might start over.. You can toggle Debug/Breakpoints, but this does not provide a clue to what is happening in the other actions, how many times a routine was run elsewhere.
RESULT: It's impossible to see what happens in what frame, and in what exact order. So really making a smooth "you touched here, so in the next frame we move that one there, and move you to.." kind of optimizing is not doable.
Sometimes a smooth camera is flickering, sometimes a raytrace from previous frame is used as "the latest" etc.
SOLUTION:
A Debug Mode where a simple list of "What happened in the previous frame" is shown.
Alone what actions are fired in what frame would be awesome, but of course more details like variables value would be welcome.
Imagine just 10 lines like this:
FRAME 0084:
Game Object A: State: "Calculate" Event " No" State: "Move"
Raytrace X: Fired
Game Object C: State: "Idle"
FRAME 0085:
Game Object A: State: "Move" Event: "Finish" State: "Move"
Raytrace X: Fired
Raytrace Y: Fired
Game Object C: State: "Collided"
and so on.
Of course this would slow down actual runtime, but as an optional debug mode to switch on and analyze, it'd create a REALLY valuable insight and a tool to see what is actually going on, and maybe move some calculation from one Game Object to another, so things happens in the right order.
Cheers