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

  Cytat
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);
}

 

  Cytat
(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

  spyro napisał(a):
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.

 

 

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