Optymalizacja gry napisanej w allegro.

Odpowiedz Nowy wątek
2015-01-18 20:55
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

Pozostało 580 znaków

2015-01-18 21:08
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.

Pozostało 580 znaków

2015-01-18 23:11
0

wtf definicje w nagłówkach? O.o

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


Pozostało 580 znaków

2015-01-19 14:26
1

Ogranicz ilość klatek na sekundę do 30.


GG: 10101100010110000100011101 (BIN)
"Nie wszystko napisane w internecie jest prawdą" - Józef Piłsudski.
Po co ma jechać na "ile wlezie"? - Trebuh 2015-01-19 14:45
a w czym to przeszkadza? - fasadin 2015-01-19 16:34
Chyba mniej sprzętu potrzebuje gra która osiąga maksymalnie 30 klatek niż ta która ma 120, nie? - Trebuh 2015-01-19 17:05
zgadzam sie, ale przy wielordzeniowych procesorach przy prostej grze ktora nigdy nie osiagnie nawet 50% mocy obliczeniowej procesora naprawde warto ograniczac? Jezeli system bedzie chcial uruchomi nastepny rdzen - fasadin 2015-01-19 18:54

Pozostało 580 znaków

2015-01-20 13: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ć.

Pozostało 580 znaków

2015-01-20 13:51
Odpowiedz
Liczba odpowiedzi na stronę

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