What I think I'm seeing with the built-in physics of AppGameKit is that it's calculating the physics stuff (movement, collisions, etc) in something like "real time", regardless of how fast the game runs.
But I need it to just use the speed of the game, i.e. not the pre-set value of SetSyncRate(), but the actual value of ScreenFPS() at any given moment. Otherwise, as the framerate slows down, the physics processor skips to keep up with what the framerate
should be. But the player can't do that. Their input is bound to the speed at which the program can run, which is ultimately limited by how fast their computer is.
My game is a platformer with a main character whose jump height is determined by how long you hold down the jump key (with an upper limit). Because the character is a physics sprite, the jumping and other input-driven movements of this character use setspritephysicsimpulse(). When the game is running at its maximum framerate, holding down the jump key and not releasing it will result in the "jump" signal being detected for the maximum number of program loops, giving the character the maximum jump height that I intended. But as I put more and more things into the game, or as more and more sprites are spawned, the value of ScreenFPS() starts to drop off, and as a result the "jump" signal is detected for fewer and fewer program loops as the main character sprite moves upward, causing it to fail to reach the maximum
intended jump height before the force of gravity causes it to start moving downward again. Running my program in a browser, which slows things down even more, quite noticeably reduces the maximum attainable jump height.
tl;dr = Is there a quick way to make the built-in physics processing match an inconsistent framerate (caused by computer performance), or do I just have to get more efficient at coding so my program doesn't slow down, and/or advise players to have a fast computer?