Pracuję nad 2D SideCroller w PyGame. Dla każdej mapy używamy jednej tekstury (jest to faktyczny rozmiar tekstury):
Następnie ładujemy obraz za pomocą tego kodu:
sprite = pygame.image.load("Maps/MapTesting.png")
sprite.convert()
sprite = pygame.transform.scale(sprite,
(sprite.get_width()*6, sprite.get_height()*6))
Jak widać, tekstura zostaje wysadzona w powietrze 6 razy, aby utworzyć faktyczną teksturę mapy. Średnio ta tekstura ma około 4500 x 800. Ta tekstura musi być dopasowana do ekranu w każdej ramce , ponieważ cały ekran jest brudny (dzięki przewijaniu bocznemu). Robimy to za pomocą tego kodu:
screen.blit(sprite, (0, 0),
(cameraposx, cameraposy, windowheight, windowwidth))
I to działa. Problem polega na tym, że jest dość powolny: otrzymuję skromne 40 FPS na słabo przyzwoitym komputerze, i to bez żadnych faktycznych sztucznej inteligencji / obiektów, podczas gdy my dążymy do 60 FPS. Jak możemy to przyspieszyć?
Pamiętaj, że powyższy kod jest odkażony i wyjęty z kontekstu. Pełny kod można znaleźć tutaj: https://github.com/nightcracker/PyGG2
I na koniec, chociaż powyższy obraz może wyglądać jak 8-bitowy, w grze są elementy wymagające większej głębi bitowej.