EDIT: I have changed the title as I think that this is a general gamedevelopment question but, on a technical note, I am using Cocos2d v2.0
Some time ago I had asked a question on which was the most efficient way/method to spawn enemies.
I have choosen to spawn my enemies on the "update" cycle of the main GameScene. In short: at each update call every single enemy in the enemy array is checked and if the enemy has not spawn and the total elapsed time is greater than the current time then the enemy will spawn.
I have realized only now that basing the spawn time on the total elapsed time has the following drawback.
For example, in a vertical scrolling shooter game, ff the frame rate is very low (e.g. 20 fps) then the spawn position will be much different from each other.
I have "planned" and "engineered" my gameplay around 60fps, so if for any chance there is a framedrop then the user will have a different user experience also in terms of enemy spawn position (normally, in those "bad" cases the user should be affected only by the lower frame rate but here is actually getting a different game - in certain cases easier in other cases more difficult).
On the bright side I have been using Cocos2d 2.0 that limits the game to only more powerful devices plus I have optimized my game quiet a lot (use of spritebatch nodes and pvr.ccz compressed images) which means that on avarage the game is running relatively fast.
Remains the drawback that we are talking about "avarage fps" and hence different users with different iPhones will have different spawning positions of enemies.
Any suggestion to limit this drawback? Am I the only one experiencing/noticing this?