Skocz do zawartości

Optymalizacja


Platyna

Rekomendowane odpowiedzi

Witam.

Mam taki problem. Jest taki obiekt którego egzemplarzy w kilka roomach jest bardzo dużo.

Powoduje on że czasem FPS spada nawet do 19! (Normalnie jest 30)

 

Kod stepa tego obiektu jest taki

 

GML
if(grav=1&&vspeed>0)

{

if(place_meeting(x,y+vspeed+3,sk_wood_up))

{

move_contact_solid(270,5)

vspeed=-20

if((instance_nearest(x,y+20,sk_wood_up)).xscale=1)

(instance_nearest(x,y+20,sk_wood_up)).bonuce=1

}

else if(place_meeting(x,y+vspeed+3,sk_metal_up))

{

move_contact_solid(270,5)

vspeed=-20

if((instance_nearest(x,y+20,sk_metal_up)).xscale=1)

(instance_nearest(x,y+20,sk_metal_up)).bonuce=1

}

}

 

if(grav=1&&(place_free(x,y+1)||vspeed>0))

{

if(place_free(x,y+vspeed+3))

{vspeed+=1}

else

{

vspeed=0

move_contact_solid(270,vspeed+3)

}

}

 

if(bonuce>0&&bonuce<3)

{

xscale+=0.15

yscale-=0.15

bonuce+=1

}

else if(bonuce>0&&bonuce<5)

{

xscale-=0.15

yscale+=0.15

bonuce+=1

}

else if(bonuce=5)

{

bonuce=0

}

 

if(place_meeting(x,y-1,crash)&&vspeed!=0)

{

crash.y+=vspeed

crash.plask=0

crash.po_plask=0

}

 

if(zmiana_depth=1&&abs(y-ystart)>40)

{

if(collision_line(x,y,x,y+70,sk_metal,1,1))

{

zmiana_depth=2

nowy_depth=collision_line(x,y,x,y+70,sk_metal,1,1)

depth=(nowy_depth).depth-0.001

}

}

 

I tu się pojawia moje pytanie jak by można ten kod zoptymalizować i które instrukcje są najbardziej zamulające? :P

Odnośnik do komentarza
Udostępnij na innych stronach

a np po co dwa razy sprawdzasz "instance_nearst()"?

if((instance_nearest(x,y+20,sk_metal_up)).xscale=1)

(instance_nearest(x,y+20,sk_metal_up)).bonuce=1

 

GML
n = instance_nearest(x,y+20,sk_metal_up )

if ( n. xscale ==1 ) n.bounce = 1

już trochę zoptymalizowane =p
Odnośnik do komentarza
Udostępnij na innych stronach

No wymyśliłem dość złożony sposób zoptymalizowania tego. Wiązało się to ze zmianami w kilku zupełnie innych miejscach kodu i dodaniem dwóch nowych obiektów ale FPS teraz spadają maksymalnie do 25. Głównie wachają się 26-27 no ale to lepsze niż 21-22 :D Różnica widać znaczną.

Mam nadzieje że się nie narobiło bugów przez te zmiany.

 

A teraz inne pytanie też dotyczące optymalizacji:

Czy lepsze pod tym względem są particlesy czy efekty GMa i czy dużo lepsze w szybszym działaniu :P

Odnośnik do komentarza
Udostępnij na innych stronach

A teraz inne pytanie też dotyczące optymalizacji:

Czy lepsze pod tym względem są particlesy czy efekty GMa i czy dużo lepsze w szybszym działaniu tongue2.gif

to zależy jakie particle chcesz stworzyć. Ale jeżeli dokładnie taki sam efekt, jak ten gm-owy, to wydaje mi się, że particle będzie mniej wydajne

Odnośnik do komentarza
Udostępnij na innych stronach

Może nie sprawdzaj cały czas place_meeting() tylko daj to do eventu kolizji.

 

Nie da rady. Bo obiekt jest solidny więc gdy dam zdarzenie kolizji będzie nie fajnie :P

Ach te problemy z solidami... od następnego projektu przestaje ich używać...

Odnośnik do komentarza
Udostępnij na innych stronach

Hmm... Chyba w taki przypadku nie dostanę warna za double post bo chyba lepsze to niż zakładanie nowego tematu.

 

Kolejne pytanie co do optymalizacji.

Mam sobie room w którym jest dużo tilesów dość sporych bo aż 500x500px. No i przez nie poziom strasznie laguje. Co mogę zrobić żeby to trochę zoptymalizować? Może jakiś sposób by rysowały się tylko te co są aktualnie we viewie?

Odnośnik do komentarza
Udostępnij na innych stronach

No to jak masz tak dużego rooma to licz się ze spadkiem FPS ;]

 

No się liczę i właśnie się pytam o metody zoptymalizowania tego...

Na przykład żeby jakoś zrobić by deaktywowało titlesy poza viewem niczym obiekty czy coś w tym rodzaju :P

 

A ustaw preload w opcjach backgroundu na false czyli odznacz i napisz czy pomogło.

 

Zrobiłem odwrotnie czyli zaznaczyłem "preload texture" i trochę pomogło. ;)

 

Edit: Haha ustawiłem to we wszystkich backgroundach i teraz fps bardzo rzadko spada poniżej 29, prawie non stop jest na 30 :D

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ę...