Неважно , что много, как часто вы что-то моргаете на поверхности экрана, так как дисплей обновляется только после того, как вы позвоните pygame.display.update
или pygame.display.flip
.
Если вы уверены, что перетаскивание всего фонового изображения на поверхность экрана является узким местом в вашей игре, вы можете попробовать следующие вещи:
a) Вместо того, чтобы стирать весь фон в каждом кадре, используйте функцию clear()
, чтобы «стереть» спрайты с экрана.
b) Вместо того, чтобы вызывать pygame.display.flip
или pygame.display.update
без аргумента, вызовите pygame.display.update
со списком областей на экране, которые были изменены, который возвращается draw()
функция (возможно в сочетании с clear()
).
в) Создайте поверхность дисплея с флагами FULLSCREEN
, DOUBLEBUF
и HWSURFACE
.
Но, как я уже сказал: убедитесь, что вы знаете, где находится ваша горлышко бутылки. Некоторые распространенные подводные камни производительности: многократная загрузка изображений с диска, рендеринг шрифтов, использование различных форматов пикселей (например, не вызывая convert
/ convert_alpha
на поверхностях, созданных из изображений) и, как правило, отсутствие кэширования.
(также обратите внимание, что python / pygame, как правило, не лучший выбор при создании графически требовательных игр)