Platyna Opublikowano 13 Sierpnia 2008 Udostępnij Opublikowano 13 Sierpnia 2008 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 Więcej opcji udostępniania...
Phoenix Opublikowano 13 Sierpnia 2008 Udostępnij Opublikowano 13 Sierpnia 2008 Nie znam się dokładnie i nie wiem czy to coś da, ale może mógłbym przerobić to na skrypty ( no wież w zakładce Scripts). Może, to pomoże. PS: Proszę się nie śmiać jak źle doraczę gdyż nie znam się na tym. Daję tylko radę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 13 Sierpnia 2008 Udostępnij Opublikowano 13 Sierpnia 2008 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 Więcej opcji udostępniania...
Platyna Opublikowano 13 Sierpnia 2008 Autor Udostępnij Opublikowano 13 Sierpnia 2008 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 Więcej opcji udostępniania...
Luksor Opublikowano 13 Sierpnia 2008 Udostępnij Opublikowano 13 Sierpnia 2008 Może nie sprawdzaj cały czas place_meeting() tylko daj to do eventu kolizji. EDIT: @Up: Ładniejsze particle, ale szybsze efekty GMowe, ale to też w dużej mierze zależy od złożności efektu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
lenin Opublikowano 13 Sierpnia 2008 Udostępnij Opublikowano 13 Sierpnia 2008 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 Więcej opcji udostępniania...
Uzjel Opublikowano 13 Sierpnia 2008 Udostępnij Opublikowano 13 Sierpnia 2008 A czy efekty GMowe to przez przypadek nie są przykładami particli ? <_< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 13 Sierpnia 2008 Autor Udostępnij Opublikowano 13 Sierpnia 2008 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 Więcej opcji udostępniania...
Platyna Opublikowano 16 Sierpnia 2008 Autor Udostępnij Opublikowano 16 Sierpnia 2008 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 Więcej opcji udostępniania...
tomalas Opublikowano 16 Sierpnia 2008 Udostępnij Opublikowano 16 Sierpnia 2008 A ustaw preload w opcjach backgroundu na false czyli odznacz i napisz czy pomogło. A masz je nałożone w room editorze czy w drawie je rysujesz w jakimś obiekcie ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 16 Sierpnia 2008 Autor Udostępnij Opublikowano 16 Sierpnia 2008 W room editorze poustawiałem :P A preload jest domyślnie odznaczony :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TeoTN Opublikowano 16 Sierpnia 2008 Udostępnij Opublikowano 16 Sierpnia 2008 Mój trick na przyspieszenie: zamiast stepa użyj alarm[0] na 2 stepy i zwiększ roomspeed do 50. Powiedz ile FPS wyciągasz na takiej konfiguracji :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 16 Sierpnia 2008 Autor Udostępnij Opublikowano 16 Sierpnia 2008 No nie jestem jakoś przekonany do tego pomysłu ^.^ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomalas Opublikowano 16 Sierpnia 2008 Udostępnij Opublikowano 16 Sierpnia 2008 Ja ładuje przed grą titlesa jednego ale 2000x2000 i nawet jeden fps mi nie spada. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TeoTN Opublikowano 16 Sierpnia 2008 Udostępnij Opublikowano 16 Sierpnia 2008 z prostego przeliczenia wynika, że wydajność wzrośnie. Tylko nie wiem czy powinno być 50 czy 70 w room speedzie (ta pogoda mnie odmóżdża xD) - chyba 70, bo wtedy stepy będą krótsze... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 16 Sierpnia 2008 Autor Udostępnij Opublikowano 16 Sierpnia 2008 Tak tyle że ja tych 500x500 mam 34 w roomie :/ Konkretnie to są to drzewka :P TeoTN: i mi wychodzi że będzie dokładnie tak samo albo i gorzej i że to rozwiązanie jest kompletnie bezsensowne... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
tomalas Opublikowano 16 Sierpnia 2008 Udostępnij Opublikowano 16 Sierpnia 2008 No to jak masz tak dużego rooma to licz się ze spadkiem FPS ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 16 Sierpnia 2008 Autor Udostępnij Opublikowano 16 Sierpnia 2008 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 Więcej opcji udostępniania...
Harv Opublikowano 16 Sierpnia 2008 Udostępnij Opublikowano 16 Sierpnia 2008 Ja dodam od siebie. Zaznaczone Preload oznacza, ze backi beda ładowane wczesniej, a odznaczone - w czasie gry. Gra ładowac sie bedzie chwilke dłużej, ale sie opłaca. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
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ę