In simple 'step based' graphical engines object movement is tied directly into frame rate. This was fine in the 1980's when hardware was identical.
For years now engines have been 'time based' with d=s/t. This means that an object will take the same time to get from A to B no matter what the frame rate or power of the computer.
If everything is time based, how can we perform actions like a characters hit points decreasing by x when being hit by an NPC? A 'hit' may be every 5 seconds.
As far as I can tell this 5 second delay is called a 'heartbeat'. Many MMO's use a heartbeat like this that is global for a lot of actions.
Are 'heartbeats' the best method to use for none linear events in a time based engine?
UPDATE:
Thank you for your verbose response. I will try and clarify if possible. I'm trying to decide which options to use for the MMO Server to internally simulate the world that it controls.
As I understand there are 3 main 'stimuli' into the system that cause objects to change: NOTE, these are internal to the Server only.
Linear integrated operations. These are done inside the game loop. For example NPC movement from A to B.
Client events. These occur at seemingly random times as far as the server is concerned. For example the user clicks fire.
Time based. These occur at heartbeat intervals. For example, check for any idle NPCs and give them something to do.
Step 3 is the one I'm wrestling with and looking for clarification as to if this method is correct. I hope this clarifies what my question is.