Jump to content
Sign in to follow this  
  • entries
    12
  • comments
    19
  • views
    12810

Today's theory

Sign in to follow this  
Shane C

1008 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?
Sign in to follow this  


1 Comment


Recommended Comments

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.

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!