views:

376

answers:

2

What I am trying to do is create a viewport to view a small portion of a background. (And later put sprites in).

However the problem I have noticed is there seems to be an issue of the background blurring when it starts moving. I was not sure if this is because blitting is slow or because of a problem in the code. I was looking for examples on how others blit or create scrolling backgrounds and found this article: Scrolling Games

I used their simple example and sure enough the background appears blurry as you scroll (aka blit the background with an offset). I also thought it might be the FPS dropping for whatever reason however it doesn't deviate at all. I can't recall an issue like this with other 2D games. I understand there may be some motion blur due to it constantly shifting. Just wondering if I can do anything to alleviate this. Can someone chime in on anything I may be missing? I would appreciate any feedback or help. Thank you

A: 

By "blurry" do you mean that the background appears "doubled"? Do you get the same effect when moving a normal-sized (e.g., 64x64) sprite?

If you are seeing double, then it's probably a refresh rate problem. Turning on vsync may help.

What frame rate are you getting?

If you slow down the animation to around 10 FPS, do you have the same problem?

Seth
+1  A: 

I couldn't know what caused the problem you faced, but I guess it is related to double buffering.

Did you use at least two surfaces?

# preparing two surfaces in __init__()
screen = pygame.display.set_mode((800,600))
background = pygame.Surface(screen.get_size())
background.fill((250, 250, 250))

# called at every step in main loop
# draw images on the background surface
background.blit(image, position)
....

# blit background to screen
screen.blit(background, (0, 0))
pygame.display.flip()

If images are drawn on the screen surface directly, flicking occurs.

grayger