Jump to content

  • Log In with Google      Sign In   
  • Create Account






Today's theory

Posted by Shane C, 08 October 2013 · 472 views

Something which I noticed was that at least for 2D games, smaller resolutions are in theory smoother. At 320x240, you can move the same speed moving 4 pixels a frame as if you moved 8 pixels a frame with 640x480. With 640x480, you would "skip" 8 pixels, while at 320x240 you would "skip" 4. This is just an example. Thoughts?




If both resolutions were full-screen on a monitor, and the monitor was the same physical size (22" or whatever), then you're still moving the same physical distance (1/4" or however much) on the monitor.

 

If you want smoother movement then don't move X pixels a frame, because different frames take different amounts of time. If Frame A and Frame B take different amounts of time, but both more the same distance, then you get erratic movement. (8 pixels in 1/10th of a second, and then 8 pixels during 1/20th of a second, and so on).

 

Instead, you could use floats for movement, only casting to integer pixels at the last second. Then, each frame you calculate how far to move based on how much time has passed.

//The amount of time that has passed since the last frame, measured in seconds. 0.5 = half a second.
float deltaTime;

//The number of pixels to move in one full second of movement.
const float PLAYER_SPEED = 200;

//The amount to move this frame.
//'playerPos' variable needs to persist from frame to frame (possibly as a member-variable of the player class).
float playerPos += (deltaTime * PLAYER_SPEED);

//Cast to pixels only when drawing.
int playerPixelPos = (int)playerPos;

This way, if the computer is going slower or faster, the player is always moving at a constant speed relative to the amount of time passed instead of relative to the number of frames drawn.

September 2014 »

S M T W T F S
 123456
78910111213
1415 16 17181920
21222324252627
282930    

Recent Entries

Recent Comments

PARTNERS