Mucco Opublikowano 26 Września 2009 Udostępnij Opublikowano 26 Września 2009 Od dłuższego już czasu tworzę shootera 2D o dużej mapie (chciałem zmieścić miasto, wieś i las w jednym). Jest również wiele bajerków, obiektów - ludzi, samochodów, drzew... Gra dosyć często muli (a co dopiero jak dojdzie lepsza grafa...). Mam więc pytanie - jak to dobrze zoptymalizować? Chodzi mi o nie tylko optymalizację kodu, ale również już skompilowanej gry (wyciąganie niepotrzebnych pierdół). Bardzo mi zależy na szybkim działaniu gry i będę wdzięczny za pomoc ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
lenin Opublikowano 26 Września 2009 Udostępnij Opublikowano 26 Września 2009 hmm odpowiednie wszytywanie zasobów z zewnątrz, deaktywacja niepotrzebnych obiektów od groma już było takich tematów.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 26 Września 2009 Udostępnij Opublikowano 26 Września 2009 instance_deactivate_object(drzewko); instance_deactivate_object(samochodzik); instance_deactivate_object(ludzik); //te 3 obiekty sa dezaktywowane, jesli znajda sie poza room'em view'em instance_activate_region(view_xview,view_yview,view_wview,view_hview,true); Czarno na białym. ;d Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mucco Opublikowano 26 Września 2009 Autor Udostępnij Opublikowano 26 Września 2009 hmm odpowiednie wszytywanie zasobów z zewnątrz, deaktywacja niepotrzebnych obiektów od groma już było takich tematów.. Nie widze żadnych przeszkód, by powstał jeszcze jeden :sleep1: instance_deactivate_object(drzewko); instance_deactivate_object(samochodzik); instance_deactivate_object(ludzik); //te 3 obiekty sa dezaktywowane, jesli znajda sie poza room'em instance_activate_region(view_xview,view_yview,view_wview,view_hview,true); Czarno na białym. ;d Nie da się prościej? Załóżmy, by każdy obiekt był dezaktywowany automatycznie? Ps. jesli znajda sie poza room'em A nie poza viewem? :jezor: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 26 Września 2009 Udostępnij Opublikowano 26 Września 2009 instance_deactivate_object(drzewko); instance_deactivate_object(samochodzik); instance_deactivate_object(ludzik); //te 3 obiekty sa dezaktywowane, jesli znajda sie poza room'em view'em instance_activate_region(view_xview,view_yview,view_wview,view_hview,true); To ssie, jest niedopracowane. Bo object z dużym spritem deaktywuje się później niż objecty z małym. I dochodzi potem do takich anomali że obiekty po aktywacji nachodzą na siebie, oczywiście tylko te, które te się poruszają np. potworki. Nie raz jak tego używałem to się dziwiłem czemu potworki mi nachodzą na ściany i skały. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 26 Września 2009 Administratorzy Udostępnij Opublikowano 26 Września 2009 Wszystkim obiektom na mapie - drzewom, samochodom, blablabla dajesz jednego parenta objPARENT. Potem w stepie obiektu zarządzającego grą dajesz instance_deactivate_all(obj_parent) i instance_activate_region :) Tak mamy w Almorze i mapa 60000px jakoś działa :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 26 Września 2009 Udostępnij Opublikowano 26 Września 2009 Tego nie próbowałem, muszę sprawdzić. W waszej almorze też potworki na ściany nachodzą. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 26 Września 2009 Udostępnij Opublikowano 26 Września 2009 a ja właśnie sprawdzam metody dezaktywacji i muszę powiedzieć, że jeśli wyłączymy auto redraw to aktywacja regionu nie działa, nawet jeśli w kodzie użyjemy screen_redraw(). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 26 Września 2009 Administratorzy Udostępnij Opublikowano 26 Września 2009 Tego nie próbowałem, muszę sprawdzić. W waszej almorze też potworki na ściany nachodzą. Nie rozumiem. Obiekty po aktywacji są w tym samym miejscu co poprzednio i kontynuują ostatnio wykonywany kod :) Są tak jakby "zamrażane". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 26 Września 2009 Udostępnij Opublikowano 26 Września 2009 żółte plami to aktywne obiekty, czerwone nie aktywne. zielone to pozycja x i y objectów. Mamy bossa i większą od niego skałę, x/y skały jest poza viewem i jest niewidoczna. a bossa nie więc jest widoczny i może się ruszać. przesuwa się lekko w prawo. po przejściu viewa w prawo odsłaniają się oba objecty w efekcie są wklejone. Gdyby potworek był mały 32/32 też by do tego doszło ale tylko w zaznaczonym na czarno obszarze. Edit: Zedytowane Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 26 Września 2009 Udostępnij Opublikowano 26 Września 2009 a ja właśnie sprawdzam metody dezaktywacji i muszę powiedzieć, że jeśli wyłączymy auto redraw to aktywacja regionu nie działa, nawet jeśli w kodzie użyjemy screen_redraw(). Poprawka - obiekt musi mieć maskę, dopiero działa na nim dezaktywacja, lol xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 26 Września 2009 Udostępnij Opublikowano 26 Września 2009 Ok wprowadziłem poprawki, tak jest na 100% bo właśnie to sprawdziłem tylko że z mniejszym potworkiem. edit: podkreślone odnosi się do mojego wcześniejszego postu nie do tego Psicha Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 26 Września 2009 Administratorzy Udostępnij Opublikowano 26 Września 2009 Hmm, możliwe. Dla tego ja aktywuję o 150px większy obszar niż room. Ewentualnie, gdy przeciwników nie jest wielu, to każdy z nich mógłby sobie na przykład aktywować region 200px dookoła niego, żeby kolizje dobrze łapać :) Rozumiem, że dezaktywacja i aktywacja jest robiona względem pozycji X i Y bez względu na rozmiar maski ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 26 Września 2009 Udostępnij Opublikowano 26 Września 2009 tak sprawdziłem to Dla tego ja aktywuję o 150px większy obszar niż room. to by nic nie dało Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 27 Września 2009 Udostępnij Opublikowano 27 Września 2009 żółte plami to aktywne obiekty, czerwone nie aktywne. zielone to pozycja x i y objectów. Mamy bossa i większą od niego skałę, x/y skały jest poza viewem i jest niewidoczna. a bossa nie więc jest widoczny i może się ruszać. przesuwa się lekko w prawo. http://img182.imageshack.us/img182/6383/ruchbossa2.png po przejściu viewa w prawo odsłaniają się oba objecty http://img12.imageshack.us/img12/6383/ruchbossa2.png w efekcie są wklejone. Gdyby potworek był mały 32/32 też by do tego doszło ale tylko w zaznaczonym na czarno obszarze. Edit: Zedytowane Taka sytuacja nie może mieć miejsca, dlatego, ze potworki są sterowane przez serwer a tam nic nie jest raczej dezaktywowane. Potworki nie dostaną dzieki temu rozkazu by iść "w skałkę". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 27 Września 2009 Udostępnij Opublikowano 27 Września 2009 To ciekawe bo okno serwera almory mówi co innego. Wyraźnie widać że potworki pojawiają się tylko wtedy kiedy gracz do nich podchodzi. A znikają kiedy odchodzi. Gnysek jak jest naprawdę w almorze, gracze dezaktywują potworki czy nie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 27 Września 2009 Udostępnij Opublikowano 27 Września 2009 Huderlord, po prostu jeśli nie ma w pobliżu potworka żadnego gracza to on ZNIKA. Ale tak CAŁKIEM. Nie deaktywuje, tylko zostaje zniszczony, lol. 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ę