타일 기반의 게임을 만들고 맵을 모든 프레임으로 렌더링해야합니다. 현재 각 타일은 32X32이고, 보이는 맵은 28X28 타일입니다. 성능이 무섭다. 나는 최근에 보이는 타일 만 렌더링하도록 만들었지 만 여전히 FPS를 많이 향상시키지 못했습니다. 지금은 렌더링 속도를 높이는 방법을 찾고 있습니다. 나는 느린 것을 내가 표현하고있는 방식으로 본다. 모든 타일은 개별적으로 화면에 블리치됩니다. 이 일을하는 것이 더 효과적이었을 것입니다.파이 게임에서 타일 렌더링을 최적화하는 방법은 무엇입니까?
답변
파이 게임 (afaik)에서 화면 업데이트는 항상 병목 하나입니다. 코드를 볼 수 없으므로 화면을 어떻게 업데이트하는지 모릅니다. 변경된 스프라이트 만 블리 팅하는 것이 시작이지만 변경된 부분은 화면에서 업데이트해야합니다. display.flip()
을 사용하거나 update_rects()
을 사용하는 것의 차이점은 변경된 rect 만 사용하는 것입니다. 나는 그것이지도를 스크롤 할 때 전혀 도움이되지 않는다는 것을 알고 있습니다. 이 질문을보십시오 : Why is this small (155 lines-long) Pacman game on Python running so slow?, 그것은 비슷한 주제를 가지고 있습니다.
지도에 타일과 스프라이트가 컴파일되었을 때 한 가지 시도한 점은 항상 현재 표시된 부분과 그 주변에 약 200 픽셀 정도의 영역에 대한지도의 미리 컴파일 된 이미지가있는 것입니다. 나는 그 안에 들어있는 모든 타일을 블리 칭할 필요없이 준비된 "땅"을 (여전히 업데이트 된 부분에서만) 블리트 할 수 있습니다. 물론, 액티브 스프라이트보다 위에있을 수있는 여러 레이어와 맵 부분이 있다면, 그것에 집중해야한다는 생각이 꽤 있습니다. 그것을 통해 생각하고 일하는 것은 흥미 롭습니다 만, 나는 당신이 그것을 얼마나 많이 얻을 수 있는지 말할 수 없습니다.
하나의 완전히 다른 가능한 해결책 : 저는 파이 게임을 한 번 시작했습니다 (그 전에는 C++에서 SDL을 작성한 이후로). 최근 다른 파이썬 게임 라이브러리 pyglet으로 이동했습니다. 이것은 파이 게임만큼 화면 전체를 업데이트하는 문제로 고통받지 않습니다 (OpenGL 가속화 사용으로 인한 것 같아요. 아직 가속화되지 않은 eee-Netbook에서 작동합니다). pygame에 어떤 식 으로든 구속되지 않는다면, pyglet을 살펴 보는 것이 흥미로울 것입니다.
- 1. 파이 게임에서 투명도가있는 마스크를 얻는 방법은 무엇입니까?
- 2. 어떻게 파이썬/파이 게임에서 타일 (이미지) 영역을 커버합니까?
- 3. 파이 게임에서 타원 이동
- 4. 파이 게임에서 sys.exit() 문제
- 5. 파이 게임에서 이미지 회전
- 6. 파이 게임에서 이미지 변형
- 7. 파이 게임에서 깜박임
- 8. 파이 게임에서 MOUSEBUTTONDOWN 사용
- 9. Match3 게임에서 타일 바꾸기
- 10. 파이 게임에서 파이 게임을 사용하는 파이썬으로 게임하기
- 11. 파이 게임에서 빠른 선 그리기
- 12. 파이썬/파이 게임에서 탄성 충돌
- 13. 파이 게임에서 사각형 격자 만들기
- 14. 파이 게임에서 스프라이트의 표면으로 그리기
- 15. 파이 게임에서 코딩 오류가 있습니다.
- 16. 파이 게임에서 소리가 들리지 않습니다
- 17. 파이 게임에서 플레이어가 부드럽게 움직입니다.
- 18. 파이 게임에서 팝업 창 만들기
- 19. 파이 게임에서 움직이는 이미지 바꾸기
- 20. 파이 게임에서 그라데이션 배경에 텍스트를 다시 그리는 방법은 무엇입니까?
- 21. 자바 타일 게임에서 캐릭터 이동하기?
- 22. OpenGL, 타일 기반 게임에서 축소
- 23. 파이 게임에서 반투명 스프라이트를 만드는 법
- 24. 어떻게 파이 게임에서 움직임과 같은 카메라를 만들까요?
- 25. 파이 게임에서 TKinter를 사용하여 팝업 메뉴를 만드시겠습니까?
- 26. 파이 게임에서 키 이벤트가있는 스프라이트 이동하기
- 27. 파이 게임에서 다른 유형의 투명도 스태킹
- 28. 파이썬 : 파이 게임에서 어떻게 타이틀 화면을 만드나요?
- 29. 파이 게임에서 적을 어떻게 따라 가게 만드시겠습니까?
- 30. 파이썬/파이 게임에서 버튼을 만드는 방법?
렌더링이 병목 현상이라고 프로파일 링하고 결정 했습니까? – delnan
지금은 프로그램이 하나의 스프라이트의 렌더링과 이동 만하고 있으며 스프라이트 만 렌더링하면 FPS가 크게 증가합니다. –
프로그램의 속도가 렌더링과 관련이있을 수 있습니다. 프로그램이 렌더링되지 않고 대신 초당 프레임을 인쇄 해보십시오. 여전히 느린 경우 코드를 게시하여 정확하게 수행 한 방법과 더 빨리 수행 할 수 있는지 확인할 수 있습니다. – PygameNerd