wtorek, 17 maja 2011

Bowlder - walka o fps

Dodanie płynnego ruchu ujawniło problem, który wcześniej nie występował - przy planszy o rozmiarze 43x25 wydajność znacznie spadała (w okolice 20fps). Nie spodziewałem się, że w dzisiejszych czasach trzeba myśleć o optymalizacji jakiegoś dwuwymiarowego shitu rodem z lat osiemdziesiątych. Dłubałem, dłubałem i chyba się dodłubałem - największy problem sprawia chyba iteracja przez listę klocków (miałem tam listę wszystkich elementów budujących labirynt i wędrowałem przez nią przy rysowaniu i liczeniu "fizyki"). Zamiana tego na słownik (gdzie kluczem jest tuple z pozycją) daje solidnego kopa.

W sumie to dziwne. Sądziłem, że najkosztowniejsze jest rysowanie (a i tak nie rysowałem niewidocznych elementów), a nie jakaś głupia iteracja przez 1000 elementów. Jak widać nie dla Pythona. A może to powtarzanie testów widoczności było zbyt kosztowne? Zobaczę, jak się to sprawdzi (chwilowo mam to wygrzebane poza główny program). Jak się nie sprawdzi, to przesiadam się na C++. Bua cha cha cha.

Domyślam się, że część winy leży w tym, że uruchamiałem to na VirtualBoksie pod Ubuntu, z wyłączoną akceleracją 2D, na karcie Intela i w trybie "wydajnym" lapka. Ale celuję w to, aby działało to nawet na ciut słabszym sprzęcie (przykładowo moim stacjonarnym staruszku).

Za to fizyka i przeciwnicy działają już jak należy (no a w każdym razie tak, aby nie dawać mi powodów do narzekań).

W ramach testów wklepałem parę plansz z Heartlight ((c) Janusz Pelc). Efekt nie jest taki jak w oryginale, a zatem nie mogę pochwalić się w pełni funkcjonalną podróbką, ale chyba nie będę dopasowywać się na siłę. Podoba mi się, jak to działa teraz. No, chyba że skończę już wszystko inne.

Brak komentarzy:

Prześlij komentarz