Witajcie. Nie wiem czy jest to dobry dział na taki temat ale w dziale C++ raczej by to nie pasowało. Niestety strasznie mnie wku#@! ten crash, tym bardziej, że nie miałem pojęcia co go powoduje, a kod zdawał się być ok.
Chciałbym wam opisać moją historię z pewną sytuacją, która powodowała crash mojej gry. Od dawna w ramach hobby piszę sobie małą grę w C++, a co do programowania to cały czas uważam się za nooba. Dobra.
Całe zamieszanie robił jeden pliczek graficzny, był to sprite pewnej kratki podłogowej: floor1.jpg
W moim wbudowanym w grę edytorze map wygląda to tak:
https://imgur.com/PfDP1Ze
Klikając LPM wybieramy sprite i możemy budować naszą mapę. o to screen z edytora:
https://imgur.com/LxptQgf
Za każdym razem jak wybierałem w edytorze sprite tej kratki podłogowej o nazwie floor1.jpg to gra crashowała. Próbowałem chyba wszystkiego, zmieniałem nazwę pliku, zmieniałem format na inny niz jpg. Nawet wyszukiwałem w kodzie źródłowym czy nie stworzyłem jakiegoś obiektu bądź nie przypisałem jakiemuś stringowi nazwy "floor1". I nic.
Później nawet doszedłem do wniosku, że nie będę już używał tego sprita na mojej mapie... no ale co będzie jak ten crash zacznie się pojawiać przy innych plikach graficznych? Postanowiłem jeszcze przeszukać folder projektu czy może nie ma jakiś zduplikowanych plików o nazwie floor1 i... nie było ale nagle dostałem olśnienia.
Zobaczcie screena:
https://imgur.com/Ir9O0jj
Zdziwił mnie rozmiar, 49x50, kiedy to wszystkie moje sprity mają 50x50 albo 100x50. Być może musiałem niedawno modyfikować tą kratkę podłogową i nie chcący w GIMP'ie zmieniłem rozmiar o 1px... Przypomniałem sobie jak kiedyś robiłem mapy do HL1 i tam wszystkie tekstury musiały być podzielne przez 2, 4, 8, 16, 32, 16, 64, 128, 256 itp. Włączyłem gimpa i zmieniłem rozmiar na 50x50 i wszystko już działa. Mój głupi błąd przez, który chciałem porzucić mój mały projekt. Na początku posta napisalem, że zdawało mi się, że kod był OK ale nie był bo moja klasa sprite manager powinna wyłapać przy wczytywaniu zasobów czy plik graficzny ma odpowiednie rozmiary.
Koniec monologu. Miłego dnia.