Today's theory

Published October 08, 2013
Advertisement
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?
1 likes 1 comments

Comments

Servant of the Lord

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.

October 08, 2013 06:55 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement