Kewin Opublikowano 5 Maja 2021 Opublikowano 5 Maja 2021 Robię grę z dużą liczbą leveli. Mam problem z wydajnością. Wszystko jest dobrze dopóki nie zostawi sie włączonej gry na np minute, gra zaczyna strasznie zacinać a zrobienie czegokolwiek staje sie niemożliwe. Odczyty z debuggera zaczynają spadac i zagęszczają się występuje to tylko wtedy jeśli gre zostawi sie na jakis czas. Jeśli gra sie w nia caly czas wszystko chodzi płynnie. Nie mam pojęcia dlaczego sie tak dzieje proszę o pomoc bo męczę sie juz z tym czwarty dzień.
Kewin Opublikowano 5 Maja 2021 Autor Opublikowano 5 Maja 2021 if global.ulepszenie = 49 { draw_sprite_ext(spr_ulepszenie_9, 0, x, y, 0.2, 0.2, 0, 0, 0) instance_create_layer(x,y+400,"Instances", obj_ulepszenie_9); draw_text_color(x-250, y-100, "Upgrade level cost: 69", c_aqua, c_aqua, c_aqua, c_aqua, 1); instance_deactivate_object(obj_ulepszenie_8); } if global.ulepszenie = 50 { draw_sprite_ext(spr_ulepszenie_10, 0, x, y, 0.2, 0.2, 0, 0, 0) instance_create_layer(x,y+400,"Instances", obj_ulepszenie_10); draw_text_color(x-250, y-100, "Upgrade level cost: 70", c_aqua, c_aqua, c_aqua, c_aqua, 1); instance_deactivate_object(obj_ulepszenie_9); } tutaj jest kod przykładowy
Kewin Opublikowano 5 Maja 2021 Autor Opublikowano 5 Maja 2021 if global.ulepszenie = 49 { if global.punkty >= 69 { global.punkty -= 69; global.ulepszenie = 50; } } Cytat tutaj z innego obiektu
Konrad-GM Opublikowano 5 Maja 2021 Opublikowano 5 Maja 2021 Nie bardzo rozumiem kontekstu z jakiego obiektu wyciągasz ten "przykładowy kod", więc niewiele można z tego wywnioskować, ale mimo to jedna rzecz mnie niepokoi. Czy przypadkiem tego kodu: Godzinę temu, Kewin napisał: if global.ulepszenie = 49 { draw_sprite_ext(spr_ulepszenie_9, 0, x, y, 0.2, 0.2, 0, 0, 0) instance_create_layer(x,y+400,"Instances", obj_ulepszenie_9); draw_text_color(x-250, y-100, "Upgrade level cost: 69", c_aqua, c_aqua, c_aqua, c_aqua, 1); instance_deactivate_object(obj_ulepszenie_8); } // ... podobny kod nie używasz w zdarzeniu Draw? Jeżeli tak, to prawdopodobnie instancjonujesz obiekty obj_ulepszenie_9/10 itd. w pętli, przez co tworzysz kolejne instancje tego samego obiektu zapychając pamięć i main loopa obsługując inne zdarzenia z tych obiektów. Jeszcze dodam, że funkcja instance_deactivate_object dezaktywuje obiekt, ale go nie zwalnia z pamięci, a to problemu nie rozwiązuje. Kewin 1
Kewin Opublikowano 5 Maja 2021 Autor Opublikowano 5 Maja 2021 Czyli mam użyć innego eventu? Jak usunąć te elementy na stałe z pamięci?
Kewin Opublikowano 5 Maja 2021 Autor Opublikowano 5 Maja 2021 Ale to co napisałeś już mi dużo podpowiedziało dziękuję jutro będę dalej próbował
Rozwiązanie I am Lord Opublikowano 5 Maja 2021 Rozwiązanie Opublikowano 5 Maja 2021 Wstaw na końcu Draw show_debug_message( string(instance_number(obj_ulepszenie_9))+", "+string(instance_number(obj_ulepszenie_10)) ); I zobacz w konsoli Output czy liczby się będą zwiększać. Jeżeli tak to znaczy że nonstop tworzysz te obiekty, w nieskończoność. Instancje obiektu usuwa się za pomocą instance_destroy() Kewin 1
Kewin Opublikowano 5 Maja 2021 Autor Opublikowano 5 Maja 2021 Dlatego pewnie zacina gra po czasie, dziękuję za podpowiedź juz mam pomysł jak to zrobić
Administratorzy gnysek Opublikowano 5 Maja 2021 Administratorzy Opublikowano 5 Maja 2021 W sumie to dziwne, że debugger nie ma licznika instancji... jest tylko tab z ich listą, ale żeby zauważyć ich nadmiar trzeba by zwrócić uwagę na malejący scrollbar co w tym przypadku pewnie byłoby trudne, bo za szybko się tworzą i od razu scrollbar jest najmniejszy z możliwych Kewin 1
Kewin Opublikowano 6 Maja 2021 Autor Opublikowano 6 Maja 2021 Udało mi się naprawić ten błąd, dziękuję za szybką pomoc! gnysek i Uzjel 2
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się