Thank you for the very detailed and thorough response SEELE. I really appreciate it!
The game I am currently developing uses only custom movement (i.e. X=X+1), so it is tied to MMF's Framerate property. For this reason, I cannot use time-based movement to "workaround" the problem, and as you have already mentioned, if I could use it I think it would lead to problems since it is a "stop-gap" measure.
Your Framerate Independent platform example is a very good proof of concept, however for my game, I don't think that it's very practical. With many objects on screen it would probably have a performance impact (especially if Pixelthief's grouped fast loops observation has an impact - though I haven't experienced this in my own tests). It is also quite complicated to implement since I would have to do it for many different objects, and I could see how I could easily become confused in debugging.
The concept of using the "timer" variable is still a very good idea and perhaps it can be utilized since it's independent of "Draw updates" - right?
In the end I guess it comes down to the amount of effort to implement independent logic/draw rate, the performance and the gains from having this new feature.
Really... what I am looking for is something that will make my game run with a MMF Framerate property of 60 (i.e. "Game Logic Update Rate"), and display smoothly on a wide range of systems.
I want my game to run at 60 FPS on a monitor with 60hz, but still run at 60 FPS ("logic updates") on a monitor with 120hz or 50hz. I don't want my characters to run twice as fast on the 120hz machine. I want people to play the game on one machine, and then another, and for them to feel the same.
The simplest way to achieve this is to just set the MMF2 Framerate to 60, not use VSync, and turn on Machine-independent-speed (so slow computers don't run "slow"), but this can lead to screen tearing since there's no vsync.
Do you have any ideas on how "timer" can be utilized with a small amount of effort? I am thinking along the lines of:
I think that would work in MMF2. It's what many independent logic/draw engines use.
1. dt = (timer - time_since_last_update)
2. x_position = x_position + (movespeed * dt) [using temp floats]
3. time_since_last_update = timer