Skocz do zawartości

Zablokowane Optymalizacja gry


Rekomendowane odpowiedzi

witam

mam problem zapewne częsty przy tworzeniu w gm sorrka jeżeli uznacie to za zbyt mało zaawansowane pytanie to serdecznie przepraszam i moderatora proszę o przeniesienie

 

a więc mam rooma 10400 na 12000 wypełnionego obiektami o rozmiarze 64 na 64 i co tu dużo mówić tnie się że grać się nie da

Macie jakieś wypróbowane pomysły na zoptymalizowanie gry ??

Odnośnik do komentarza
Udostępnij na innych stronach

a próbowałeś deaktywować obiekty?

 

instance_deactivate_all(notme);
instance_deactivate_object(obj);
instance_deactivate_region(left,top,width,height,inside,notme);

instance_activate_all();
instance_activate_object(obj);
instance_activate_region(left,top,width,height,inside);

 

Więcej w helpie pod hasłem: "Deactivating instances".

 

Możesz te instancje które są poza ekranem deaktywować. Wtedy one "tak jakby" nie istnieją - tzn. nie są wykonywane żadne zdarzenia, i nie można się do nich odwoływać. Osobiście jeszcze tego nie próbowałem, ale może to nieco odciążyć grę.

Odnośnik do komentarza
Udostępnij na innych stronach

hej a mam takie small pytanie :P jak np chce by mi sie aktywowały tylko obiekty ktore są na widoku to jak? (bez uzycia tej z region). No przeciez skąd gra ma wiedziec czy dany obiekt jest w moim widoku skoro po dezaktywacji nie zna jego x i y? Mam wszystko do zmiennych zapisywac xD? xD

Odnośnik do komentarza
Udostępnij na innych stronach

Chyba nie rozumiesz jak działa ten system w GM. Obiekty dalej istnieją, ale dostęp do ich zmiennych jest niemożliwy oraz wykonywanie eventów wstrzymane - co pozwala odzyskać część fpsów. Obiekt dalej "znajduje" się w pamięci i dostęp do niego jest możliwy z innego poziomu niż sam GML. :P

Odnośnik do komentarza
Udostępnij na innych stronach

jak np chce by mi sie aktywowały tylko obiekty ktore są na widoku to jak?

Ja bym podczas uruchomienia room'a, deaktywował wszystkie instancje, a linijkę kodu niżej aktywował region, o rozmiarach i pozycji widoku.

 

Albo odwrotnie, jak proponuje pan Marek:

 

{
  instance_activate_all();
  instance_deactivate_region(view_xview[0],view_yview[0],
                        view_wview[0],view_hview[0],false,true);
}

 

(bez uzycia tej z region)

Bez tej funkcji to się chyba nie da.

Odnośnik do komentarza
Udostępnij na innych stronach

No to instance_deactivate_object(obj) jeśli o to chodzi... Albo może jakaś inna funkcja jest na to, teraz niestety nie pamiętam ;/

 

@Modnar<numerki, ale taki Smart Newbie xD>: Jak Marek oO...? Jak już to Mark xD

Odnośnik do komentarza
Udostępnij na innych stronach

To proste: if x > view_wview or x < view_xview or y > view_hview or y < view_yview { instance_deactivate_object(obj) }; Proste xD

ten sposób nie działa

 

a pro po dzięki funkcji instance_deactivate mogę lepiej sprecyzować pytanie

po naciśnięciu f1 w gm znalazłem przykład i wszystko było by cacy gdyby mi jednak wszystkiego nie wyłączał

 

a więc moje sprecyzowane pytanko to

 

mam sobie obiekt nazwijmy go land

do tego landu mam inne obiekty przypisane jako parent i chciałbym żeby tylko na te które mają parent do obiektu land były z dezaktywowane mniej więcej coś takiego jak na górze byle by działało sam prubuje coś wykombinować ale mi coś nie wychodzi ^^

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chodzi o deaktywację instancji dziedziczących z obiektu land, to wystarczy coś takiego:

 

var p;

with(all)
{ 
  p = object_get_parent(object_index);
  
  if(p == land)
    instance_deactivate_object(object_index);     
}

Żeby to jeszcze uzależnić od tego, czy instancja jest w widoku, to trzeba rozbudować nieco warunek. Mnie się to narazie nie udało.

 

 

To proste: if x > view_wview or x < view_xview or y > view_hview or y < view_yview { instance_deactivate_object(obj) }; Proste xD

Jeżeli już, to tak:

 

if((x > view_xview && x < (view_xview + view_wview)) and (y > view_yview && y < (view_yview + view_hview)))

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Witam wiem że odświeżam stary temat ale sam go założyłem więc wiecie XP

 

wreszcie udało mi się uzyskać to co chciałem czyli dezaktywowanie tylko tych obiektów które chcemy i chciałem się tym z wami podzielić bo mam nadzieje że nie jednemu on się przyda zwłaszcza twórcom gier 3d którzy potrzebują robić jak najwydajniejsze gry by się nie cięły a jeśli można to moderatora prosił bym o umieszczenie tego przykładu w dziale z przykładami na gmclanie no chyba że tam już taki jest a się opisałem a wy tu pewnie czekacie na link oto on ^^

 

>>Download<<//Link 2 posty niżej XP

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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