Paqoo Opublikowano 26 Kwietnia 2008 Opublikowano 26 Kwietnia 2008 Tworzę grę Rpg. Mam tam ekwipunek oparty na draw, pozycjach, tablicach itp. Bardzo to żre pamięć. Co mam zrobić żeby nie było tylu lagów? Bo czasami muszę klikać z 40 razy na przedmiot zanim go wezmę do ekwipunku. Ogólnie to gra będzie spora, więc wszelkie rady dotyczące optymalizacji się przydadzą. Co dużo zajmuje pamięci, a co mało? Piszcie o dodatkowych rzeczach nie tylko ten plecak z itemami. Mam nadzieję, że dowiem się od was wielu ważnych rzeczy :P
Konrad-GM Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 1. Tylko w grach multiplayer są lagi :P 2. Kwestia aktywowanych obiektów i postaraj się jak najmniej ich używać ;) 3. Używaj for/while gdy jest to bardzo konieczne
Paqoo Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 Jeśli niszczę wcześniej wywołany obiekt to zwalniam pamięć?
fervi (Skovv) Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 tak, ale aby zszybszyć grę, weź dawaj - w sprite i sound jest load when game start czy coś takiego, to to odznaczaj - możesz dać za pomocą CTRL+ALT+DEL w procesach priorytet wysoki, co przyspieszy działanie (w procesach kliknij na proces swojej gry i prawym i tam będzie wybierz piorytet) Fervi
Harv Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 - możesz dać za pomocą CTRL+ALT+DEL w procesach priorytet wysoki, co przyspieszy działanie (w procesach kliknij na proces swojej gry i prawym i tam będzie wybierz piorytet) Głupek! MS ostrzega przed tym, to może wywołać niepożądane skutki itp. Poza tym, każdy będzie musiał to włączać? Do tematu: - zmniejsz ilość obiektów, zmiennych. -zasoby ładuj podczas startu gry, nie w czasie -optymalizuj kod
dziadekkleofas Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 - możesz dać za pomocą CTRL+ALT+DEL w procesach priorytet wysoki, co przyspieszy działanie (w procesach kliknij na proces swojej gry i prawym i tam będzie wybierz piorytet) Można to zrobić z poziomu Game Makera, ustawiając odpowiednią opcję. Wtedy gra automatycznie wystartuje z takim i siakim priorytetem. Zresztą wbrew pozorom daje to dobre efekty, no chyba że mamy włączone już coś obciążającego.
Driger Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Głupek! MS ostrzega przed tym, to może wywołać niepożądane skutki itp. Poza tym, każdy będzie musiał to włączać? Do tematu: - zmniejsz ilość obiektów, zmiennych. -zasoby ładuj podczas startu gry, nie w czasie -optymalizuj kod I tu sie nie zgadzam , i gra takim sposobem moze ladowac sie nawet 30 min . To nie tak. Laduj tylko potrzebne rzeczy przy starcie , a potem przed plansza laduj te ktore beda potrzebne na planszy. A potem wywalaj kodem z pamieci. Staraj sie dezaktywowac wszystkie obiekty poza viewem. Nie wlaczaj ignorowania bledu , bo moze to przez blad jakis co sie wykonuje co step masz przycinki. Nie wal zbednie duzo obiektow . Staraj sie nie ladowac takze bardzo dobrej jakosci mp3 czy cos , bo tez moze byc tego wina.
fervi (Skovv) Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Głupek! MS ostrzega przed tym, to może wywołać niepożądane skutki itp. Poza tym, każdy będzie musiał to włączać? Do tematu: - zmniejsz ilość obiektów, zmiennych. -zasoby ładuj podczas startu gry, nie w czasie -optymalizuj kod Sam jesteś głupkiem, jeśli dajesz na czas rzeczywisty to się nie dziw, że ci się komputer zaciął, jeśli dasz na wysoki, błędów nie powinno być, jeszcze przed tym wyłącz programy (najlepiej wszystkie możliwe)
Paqoo Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 Dzięki za te wszystkie rady. Dodam, że tablice i pętle to połączenie wybuchowe - zżera pamięć i to bardzo :(
Harv Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Jeśli używasz pętli for, to ustaw limit, może to coś da.
Paqoo Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 Ale jak to zrobić? Mam pozwalać działać tylko np. 1 pętli? :o
Harv Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Nie, chodzi o to, że pętla for tworzy tablice w nieskończoność a ty np. potrzebujesz do 30 itemów: GML if zmienna >= 30 { //petla for }
Yoda Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Nieumiejętne użycie zżera pamięć panowie.
Paqoo Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 A ten jak zawsze. No to daj rady. 90% twoich postów to narzekanie na innych ludzi.
Yoda Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Czy ja na kogoś narzekam? Przewrażliwieni jesteście. Do rzeczy: Owszem, w GM tablice nie są zbyt wydajne, dlatego nie należy robić ich zbyt wielkich. Mimo wszystko tablice = dobra rzecz, sam bardzo często ich używam. Jednak nie sądzę by plecak na tablicach zwalniał grę. Problemem są obiekty - duuuża ich ilość -> w środku syf w kodzie -> który na dodatek jest niewydajny. Poza tym duża ilość różnych obiektów w projekcie też IMO robi straszny syf. Przykładowo: Chcę zrobić żołnierzy: miecznika, łucznika, pikiniera. 90% z was zrobiłaby osobne obiekty i np. dała parent. A nie lepiej zrobić jeden obiekt 'Jednostka' i przy pomocy zmiennych/tablic zmieniać wartości i dostosować ją w zależności od typu? Zresztą wrzucę dziś jeden przykład tam będzie takie rozwiązanie. Wierzcie mi, w ChaosLandzie nie mam jeszcze deaktywacji obiektów, a całość razem z 'ekosystemem' i innymi bzdetami w ogóle nie spowalnia/przycina/nie ma spadku FPS w grze. A jeszcze co do innych 'ciężkich' rzeczy: Pętle - jak najmniej i nie używane cały czas. Inna sprawa - większość kodu wewalacie w step chociaż można by go użyć zupełnie gdzie indziej, np. Chcę sprawdzić czy mam już 100 punktów. Można dać warunek w step i ciągle sprawdzać, a można równie dobrze dać ten warunek jedynie w akcję po zebraniu punktu (np. kolizja). Poza tym Pamiętajcie cały czas o tym, że GM jest strasznie jakby to nazwać, no niewydajny i w ogóle trzeba się strasznie pilnować, zwłaszcza przy dużych projektach. No.
Paqoo Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 Moja gra zaczyna być dużym projektem xD Nazbierałem materiałów przy pracy z Cursed Kingdom ONLINE i teraz zrobię z tego single player! :P Czekam na ten przykład.. Na pewno się przyda. Da się to samo z itemami zrobić?:P Chyba nie?
Yoda Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Da się to samo z itemami zrobić?tongue2.gif Chyba nie? Jak to nie? Przecież tak mam w ChL. Tylko jeden obiekt.
Kaara Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Jeśli mi sie dobrze zdaje w Island też wszytstko było w 1 obiekcie, ściągnij i zobacz
Yoda Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 Tak. Ale w Islandzie był kijowy system Inventory. A ta metoda '1 obiekt' w połączeniu z moim nowym systemem inventory (jest przykład) działa bardzo dobrze, automatycznie jest prawie wszystko :cool2:
Paqoo Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 To super. Będę musiał popatrzeć i skomentować.
Konrad-GM Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 @Yoda: Czyli rozwiązanie na for plecaka jest proste... przy pomocy surface! :P
Paqoo Opublikowano 27 Kwietnia 2008 Autor Opublikowano 27 Kwietnia 2008 Hahahaha! Bardzo zabawne :) David Dark zalożył jakiś temat z pętlą.
Konrad-GM Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 To nie był żart, naprawdę można to zrobić na surface :P
pablo1517 Opublikowano 27 Kwietnia 2008 Opublikowano 27 Kwietnia 2008 ładowanie zasobów nie ma nic do działania gry, chyba że ładujemy dynamicznie, czyli w momencie jak w roomie pokaże się nowy obiekt czy coś. Ładować zasoby najlepiej jest przed startem pokoju. Zakładamy, że wiemy co się w danym pokoju ma znaleźć, i ładujemy to, co nam w nim potrzebne - wsio.
Paqoo Opublikowano 28 Kwietnia 2008 Autor Opublikowano 28 Kwietnia 2008 Ma ktoś coś jeszcze do poradzenia? xD
Yoda Opublikowano 28 Kwietnia 2008 Opublikowano 28 Kwietnia 2008 To nie był żart, naprawdę można to zrobić na surface tongue2.gif Tak samo czat - najlepiej na surface wyrysować raz i już! :)
Paqoo Opublikowano 30 Kwietnia 2008 Autor Opublikowano 30 Kwietnia 2008 Dobra dostałem już dużo rad - wystarczy. Zamykam :)
Rekomendowane odpowiedzi