Lucaser Opublikowano 26 Stycznia 2011 Udostępnij Opublikowano 26 Stycznia 2011 Witam Chciałbym dokładniej poruszyć temat optymalizacji gier w GM, głownie chodzi mi o przyspieszenie gry, szybsze uruchamianie, co wpływa na spadek fps itp. Co ma jaki wpływ na działanie gry i jakie są sprawdzone sposoby na zoptymalizowanie, czy jakieś rozszerzenia czy coś. Wiem że ten temat był wiele razy wałkowany na forum ale mi zależy na dokładniejszym opisie, szkoda też że ktoś z odpowiednią wiedzą nie pokusił się napisać artykułu na ten temat. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
waxx Opublikowano 26 Stycznia 2011 Udostępnij Opublikowano 26 Stycznia 2011 - dezaktywuj obj poza viewem ktorych n potrzebujesz - ograniczaj liczbe tworzonych obj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MAK Opublikowano 26 Stycznia 2011 Udostępnij Opublikowano 26 Stycznia 2011 Unikaj dużych spritesów. Jeśli już muszą być duże albo duża ich ilość korzystaj ze skryptu, który ładuje je(tylko te potrzebne w danym momencie) z zewnątrz. To samo z dźwiękiem. Jak masz jakieś wyliczanki typu: if image_index > 5 and image_index < 7{bla =5} To Ci napiszę jak to zoptymalizować. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
waxx Opublikowano 26 Stycznia 2011 Udostępnij Opublikowano 26 Stycznia 2011 faktycznie na te dwa porownania to trzeba tyle optymalizacji walic Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 26 Stycznia 2011 Filar Społeczności Udostępnij Opublikowano 26 Stycznia 2011 Jak masz jakieś wyliczanki typu: To Ci napiszę jak to zoptymalizować. Akurat na tym za dużo wydajności nie zyskasz, to zwykłe porównanie dwóch zmiennych, prawie nic. Co innego rysowanie, particlesy, tworzenie obiektów i inne cuda niewidy. Jakiś gnysek, czy borek, którzy robią duże projekty mogliby art napisać o optymalizacji w gmie. Chociaż przed nową wersję, która ma dużo zmienić w tym zakresie nie wiem czy jest sens. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 27 Stycznia 2011 Udostępnij Opublikowano 27 Stycznia 2011 Można też używać funkcji point_distance|point_direction tylko raz na Step dla danego obiektu, przypisując ich wartości do zmiennych. Używanie tych funkcji kilka/dziesiąt razy na Step nie jest potrzebne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MAK Opublikowano 27 Stycznia 2011 Udostępnij Opublikowano 27 Stycznia 2011 Chodziło mi o to że jak byłem początkujący to robiłem dużo if'ów a można tak: w create: pre_bla[1]=45 pre_bla[2]=46 i tak dalej w step: r_image_index = round[image_index] bla=pre_bla[r_image_index] Nie wiem czy dobrze to tłumaczę, ale chyba autor i tak się zwinął. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
waxx Opublikowano 27 Stycznia 2011 Udostępnij Opublikowano 27 Stycznia 2011 Chodziło mi o to że jak byłem początkujący to robiłem dużo if'ów a można tak: Nie wiem czy dobrze to tłumaczę, ale chyba autor i tak się zwinął. Say what? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 27 Stycznia 2011 Filar Społeczności Udostępnij Opublikowano 27 Stycznia 2011 Chodziło mi o to że jak byłem początkujący to robiłem dużo if'ów a można tak: Nie wiem czy dobrze to tłumaczę, ale chyba autor i tak się zwinął. I jak to się ma do dużej ilości ifów? Nie wiem do czego ty je wykorzystywałeś. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MAK Opublikowano 27 Stycznia 2011 Udostępnij Opublikowano 27 Stycznia 2011 Właśnie chodzi mi o to że korzystając z kwadratowych nawiasów można sporą część tych ifów uniknąć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lucaser Opublikowano 27 Stycznia 2011 Autor Udostępnij Opublikowano 27 Stycznia 2011 Nic nowego się nie dowiedziałem, mniejsze grafiki czy dezaktywacja obiektów to już wiem, chodzi mi o jakieś inne sposoby, konkrety przykłady, porównania jakieś sposoby przyspiesznia, chce by moja gra była zoptymalizowana na 100 % Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 27 Stycznia 2011 Udostępnij Opublikowano 27 Stycznia 2011 Tak się całkiem nie da, chyba, że pisałbyś ją w Asmie, co jest trudne, by nie powiedzieć, prawie niewykonalne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 27 Stycznia 2011 Filar Społeczności Udostępnij Opublikowano 27 Stycznia 2011 Nic nowego się nie dowiedziałem, mniejsze grafiki czy dezaktywacja obiektów to już wiem, chodzi mi o jakieś inne sposoby, konkrety przykłady, porównania jakieś sposoby przyspiesznia, chce by moja gra była zoptymalizowana na 100 % Musisz cały swój kod przejrzeć, każdą linijkę przeanalizować i pomyśleć, czy się na czymś nie da zaoszczędzić. Na koniec i tak stwierdzisz, że prawie nic to nie zmieniło, ale tu niestety wina stoi po stronie twórców gma. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 27 Stycznia 2011 Udostępnij Opublikowano 27 Stycznia 2011 Nic nowego się nie dowiedziałem, mniejsze grafiki czy dezaktywacja obiektów to już wiem, chodzi mi o jakieś inne sposoby, konkrety przykłady, porównania jakieś sposoby przyspiesznia, chce by moja gra była zoptymalizowana na 100 % Algorytmika, powiadam! Algorytmika, towarzyszu! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lucaser Opublikowano 27 Stycznia 2011 Autor Udostępnij Opublikowano 27 Stycznia 2011 Będę kombinował i walczył z tym, jeszcze jedn pytanko, czy istnieje jakieś rozszerzenie do Gm-a ala Grabber w allegro?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 30 Stycznia 2011 Udostępnij Opublikowano 30 Stycznia 2011 W pewnych przypadkach stosowanie surfaces przyspiesza działanie. Wyświetlanie tekstów też potrafi spowolnić, ja swego czasu podczas przerabiania moich starych wypocin z gm4 do gm7 i 8 w pewnym momencie stanąłem przed problemem takim że gry wcześniej działające na 30fps osiągały nagle 3-5fpsów na słabych komputerach (netbook z marną grafiką). Po odpowiedniej optymalizacji spadki są tylko w momencie gdy dużo się dzieje na ekranie a wystarczyło tylko pomyśleć aby wyświetlać teksty nie co krok a tylko w momencie gdy te teksty się zmieniały (np. zmiana punktacji). Także niepotrzebne tworzenie obiektw, które służyły tylko do wyświetlania grafiki a wystarczyło użyć draw_sprite w jednym obiekcie który odpowiada tylko za rysowanie. Pomijam drobiazgi o których też warto pamiętać np. i=i+1; zastąpić przez i+=1; choć różnicy pewnie nie zauważysz ale jak to mówią ziarnko do ziarnka itd. A z gotowych artykułów znalazłem kiedyś taki Także ładowanie dużych grafik tła w jednym kawałku wymaga odpowiedniej ilości pamięci graficznej i na komputerach ze słabą grafiką gra się albo nie uruchamia albo część tła się nie wyświetla więc warto np. podzielić tło przy dużym roomie na kawałki i ładować je w momencie kiedy są widoczne. Jedynie nie jestem pewny czy trzymane grafiki w exe są na dzień dobry ładowane do pamięci graficznej czy dopiero w momencie użycia więc najlepiej wczytywać je z plików wg aktualnych potrzeb. EDIT: Przykładowo ostatnie moje testy przeprowadziłem na 3 komputerach: A. C2D E8600 3,33GHz, 4GB RAM, GF 8800GTS 512MB B. Netbook Intel Atom 1.6, 1GB RAM, Intel GMA 500 (na sterownikach alternatywnych do grafiki dynamiczny przydział do 128MB RAMu, na oryginalnych do 8MB ale testy robiłem na alternatywnych) C. Cel 2GHZ, 2GB RAM, GF2 MX 400 (64MB RAM) Dodatkowo włączony vsync (global game settings >> resolution >> drugi haczyk) co może mieć duży wpływ (niekorzystny) na FPS ale nie miało wpływu na samo ładowanie gry i wyświetlanie tła Dla gry z roomem 2500x3000, view 1024x768, grafika tła w jednym dużym kawałku (jpg) zapisana w exe, na ekranie aktywnych raptem 5 obiektów: A. Wszystko działa bez problemów z FPS 60, B. Gra odpala ale zamiast tła jest biały ekran (rysowanie koloru tła wyłączone), fps ok 45-50 C. Gra wcale nie odpala Dla tego samego rooma, tło podzielone na kawałki o wymiarach 2500x800 ładowane po jednym z pliku (dynamicznie nakładana na room w odpowiednich miejscach) A.Bez problemów, B. Odpala ale wciąż brak tła (tym razem jest czarny kolor tła), fps podobnie (45-50) C. Gra odpala, pokazuje się tło ale jakieś 250-300px pod koniec tła (przy prawej krawędzi ekranu) pojawia się "rozmycie" coś jak efekt gdy czasem zawiesi się okno windowsa którym można "malować po ekranie", prędkość 57-60fps. Ten sam room, tło podzielone na kawałki o wymiarach 1250x800, ładowane jako DWA osobne kawałki ładowane z pliku i układane na roomie obok siebie za pomocą 2 różnych backgroundów (na razie oba visible niezależnie czy są już wyświetlane w view czy nie. A. Bez problemów B. Odpala, jest tło wyświetlane prawidłowo, gra działa ale nieco wolniej niż bez tła (35-45 fps) C. Gra działa z prędkością 57-60fps, tło wyświetla się wszędzie prawidłowo. Pozostaje mi jeszcze tylko sprawdzić czy będzie jakaś różnica na niekorzyść jak najpierw zdefiniuje te kawałki tła na stałe i zapisze w exe. Czyli prosty zabieg podzielenia tła na mniejsze kawałki i wyświetlanie tylko tych które są widoczne, powoduje duże oszczędności i wręcz umożliwia samo uruchomienie. Oczywiście jeszcze pytanie kto dziś używa sprzętu typu C ale już sprzęt typu B to popularny netbook (nie mylić z notebookiem) z zeszłego roku. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 30 Stycznia 2011 Udostępnij Opublikowano 30 Stycznia 2011 na dzień dobry ładowane do pamięci graficznej czy dopiero w momencie użycia To zależy czy dany sprit ma zaznaczone 'preload textures' czy nie. Z tym że w GM8 tej opcji już nie ma. Może z poziomu gml da się jeszcze to ustawiać ale nie jestem pewny. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Markar Opublikowano 30 Stycznia 2011 Udostępnij Opublikowano 30 Stycznia 2011 Postaraj się nie tworzyć dużej ilości obiektów, rób ich jak najmniej. 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ę