Skocz do zawartości

Dużo obiektów w roomie - gra sie tnie


Markar

Rekomendowane odpowiedzi

Kiedy mam masę biektów w roomie(myśliwce kosmiczne :D) które nawalają się na dodatek pociskami - strasznie gra mi się tnie :/ 

Chcę aby mi się nie cięło, ale nie mogę deaktywować żadnego obiektu poza viewem :/

I proszę was o pomoc - jak zrobić żeby się tak bardzo nie cięło???

 

Jedna rzecz która mi pomoże to rysowanie lini od długości 5 pikseli o direction równającym się direction obietu. Próbowałem to zrobić na lenghtdir'ach ale mi nie wychodziło - linie te miały długość około 200 px xD W większości to rysowanie lini zwiększy w dużym stopniu wydajność gry - kiedy są setki pocisków to zamiast rysować sprita strzału(kreski) rysował bym linię, co moim zdaniem zwiększyło by wydajność gry.

Odnośnik do komentarza
Udostępnij na innych stronach

Hmmm... Dalej to samo, tak samo kombinowałem, ale dalej linia jest od pocisku do 10-tego piksela roomu. Jak dałem tak:

GML
draw_line(x,y,lengthdir_x(x+10,direction),lengthdir_y(y+10,direction));

To było mniej więcej tak samo :/ co robić?

 

EDIT: Poradziłem sobie :D

Odnośnik do komentarza
Udostępnij na innych stronach

Tak, wydajność się o wiele zwiększyła, a jak prawie nic nie pracuje w tle to działa jeszcze lepiej:D

Ale i tak przydadzą się jakieś pomysły na zwiększenie wydajności(byle nie takie jak mój pomysł na zrobienie całej gry samym(własnym)systemem wieloktów, nawet dodałem skrypt rysowania skrzynki, bardzo ładnie mi wychodziła ;)) ;)

Odnośnik do komentarza
Udostępnij na innych stronach

A jak dużo jest tych pocisków? Paręset? Parę tysięcy?

Bo jeśli bardzo dużo to zamiast każdego reprezentować jako oddzielną instancję możesz je wszystkie stablicować w jednym obiekcie i tam rysować. Oczywiście to ci utrudni trochę pracę, bo zamiast prostego eventu do kolizji będziesz musiał używać np. collision_line(), albo collision_point

Odnośnik do komentarza
Udostępnij na innych stronach

Przy większej ilości myśliwców to kilkaset nawet(każdy niszczy się 100 steepów(czy czegoś tam w alarmie ustawionym na 100 poprostu) od stworzenia), jak będą różnego rodzaju niszzczyciele to pocisków będzie nawet po kilka tysięcy :/ Bo niszczyciel będzie miał kilka laserów, wyrzutnię plazmy, kilka zwykłych działek... Mógł bym to wsumie stablicować(jak to nazwałeś), ale potrzebował bym pomocy bo nigdy rablic nie używałem :/

Odnośnik do komentarza
Udostępnij na innych stronach

Właśnie sprawdziłem i przy ilości 350 myśliwców ilość pozisków dochodzi do 1000 :/

Fps'y spadają do ok. 11 :/

Powiedzcie jak mogę zwiększyć fps'y, może room speeda dostosowywać do ilości myśliwców?

I każdy pocisk zadaje inną liczbę obrażeń, np. od myśliwca V5 30 obrażeń myśliwcom V5, a myśliwcom V6 zadaje tylko 20 obrażeń. V6 zadaje 45 obrażeń myśliwcom V5.

 

Ps sory za double posta, ale pewnie nikt nie zauważył by tego posta.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Spróbuj nie rysować obiektów które są poza ekranem (dodać np. w draw jakąś funkcję która sprawdza, czy obiekt jest w viewie czy nie). Wiem, że to doda trochę kodu do przetworzenia, ale może okazać się, że nie rysowanie tego czego nie widać na ekranie przyspieszy ogólnie FPS (zazwyczaj draw spowalnia grę, przydługie skrypty prędzej powodują klatkowanie).

Odnośnik do komentarza
Udostępnij na innych stronach

Można też usuwać pociski, gdy są poza roomem.

A jeśli masz ustawiony room_speed na 60, to zmień na 40. Zmiana prawie niezauważalna, tylko trzeba trochę pozmieniać kod, np. zamiast speed = 2, to speed = 3 itp.

Można wyłączyć kursor i rysować w pozycji myszki sprite'a, np. celowniczek. (Chyba) będzie szybsze.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
Można też usuwać pociski, gdy są poza roomem.

A jeśli masz ustawiony room_speed na 60, to zmień na 40. Zmiana prawie niezauważalna, tylko trzeba trochę pozmieniać kod, np. zamiast speed = 2, to speed = 3 itp.

Można wyłączyć kursor i rysować w pozycji myszki sprite'a, np. celowniczek. (Chyba) będzie szybsze.

 

Bez sensu ta zmiana FPSów. Poza tym, jak zmniejszasz o 1/3, to speed 2 powinien zamienić się na 2,66 a nie 3.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli działasz na particlach pamiętaj aby co pewien czas czyścić je z pamięci.

part_system_clear() chyba to było. Usuwanie emiterów, zmniejszenie liczby wystrzeliwanych particli na step.

Poza tym, jeśli masz wstawione wraki statków to nie przetrzymuj ich w obiektach tylko rysuj na nieruchomym surface.

Odnośnik do komentarza
Udostępnij na innych stronach

Przydało by się troszku pomysłów jeszcze, kiedy mam około dziesięciu oddziałów myśliwców i kilka fregat z 3-ema działkami(2 takie jak myśliwce mają(tylko lepsze)i 1 laserowa ;)) to fpsów mam niby około 30, no ale już przy większych ilościach to 10 fps, 6 fps, 20 fps, 2 fps xD Więc zapodajta pomysła ludziska.

Odnośnik do komentarza
Udostępnij na innych stronach

musiałbyś wyłożyć cały kod na tace bo możemy sobie strzelać w ciemno. musisz po prostu kombinować kombinować i stale patrzeć na zmiany. cóż można więcej Ci powiedzieć... spróbuj cleanmem użyć albo powrzucaj do wątków jakimkolwiek ddlem do tego. widziałem już kilka. poszukaj popytaj na gmcomunity

Odnośnik do komentarza
Udostępnij na innych stronach

A moim skromnym zdaniem te spadające fps są przyczyną ciągłego wykonywania się jakiegoś "niepotrzebnego kodu" albo tworzenia się niepotrzebnych obiektów. Ja miałem tak w swojm projekcie. Gdy stawiałem murek (myślałem ze stawiam 1) pojawiało się ich w ciągu 1,2 sec (tylko ile trzymałem przycisk myszy) około 200-400 w jednym miejscu. A teraz można sobie wyobrazić jak po zrobieniu kawałka swojej mapy myśląc ze mam około 50 obiektów miałem ich pare tysięcy a gra mi muliła nie samowicie 2-6 fps.

 

Tak więc moja rada to odpal sobie debugera (czerwona strzałka "Run Game in Debug mode") i obadaj czy nie tworzy ci się zaduzo obiektów, czy jakiś obszerny kod nie wykonuje się ciągle itd.

Odnośnik do komentarza
Udostępnij na innych stronach

@up

Nie chciało mi się czytać całego tematu ale jeśli pociski robisz jeszcze na objectach to nie powinny mieć w ogóle kodu (wszystkie parametry jak szybkość, kierunek i image_angle ustalać przy tworzeniu) i wtedy można z ilością bardziej poszaleć.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...