Optymalizacja gry napisanej w allegro.

0

Witam. Niedawno napisałem grę w c++ używając biblioteki graficznej allegro. Mam podobny problem do tego: Temat na forum. Otóż od czasu do czasu gra lubi się zawiesić. Po prostu podczas chodzenia albo klikania na obiekt gra staje w miejscu. Dodatkowo, po wejściu w menedżer zadań dowiadujemy się że gra "zjada" sobie 70%-98% zasobów procesora(mój laptop do pracy i5, 2,6 GHz, 12GB RAM, u kolegi z PCtem do gier podobny efekt). Moim zdaniem gra jest zwyczajnie niezoptymalizowana, bowiem się na tym nie znam. Na początku myślałem, że to wina wielowątkowości, ale napisałem już kilka mniejszych gier działających na tej samej zasadzie i wszystko było w porządku. Wobec tego zostawiam tylko kod do przeglądu(main.cpp tylko trzyma grę, wszystko siedzi w Variables.h i Map.h).

main.cpp:
http://www.wklejto.pl/220569

Variables.h:
http://www.wklejto.pl/220571

Map.h:
http://www.wklejto.pl/220572

3

Niepotrzebnie obciążasz procka pustymi przebiegami w nieskończonych pętlach. Usypiaj wątki na jakiś czas (zleć im inne zadania).
Poza tym dla tak prostej gry nie potrzebujesz więcej niż 1 wątku. Zdefiniuj klasyczną pętlę gry:

while ( game.is_running() )
{
  game.handle_events();
  game.update();
  game.draw();
}

Reszty nie analizowałem, bo tak zapisanego kodu nie da się czytać. Staraj się dzielić kod na małe funkcjonalności, poczytaj o DRY, KISS.

0

wtf definicje w nagłówkach? O.o

Poddaje się. Tego faktycznie nie da się czytać.

1

Ogranicz ilość klatek na sekundę do 30.

0

Dodałem licznik FPS, przy normalnym chodzeniu jest średnio 140. Podejrzewam, że kluczem do ograniczenia FPS jest tu założenie odpowiedniego ogranicznika na funkcję RefreshScreen(), ale pewności nie mam, więc wolę zapytać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1