|
autor:
pikor
Omówię tu jak najbardziej skrótowo problem dotyczący minimalizowania wielkości gry w kilobajtach oraz podam triki pozwalające przyspieszyć grę.
Jeśli robisz grę, którą zamierzasz rozpowszechniać w Internecie musisz liczyć się z każdym megabajtem. Nikt nie lubi zasysać kolosów. Podam metody na lekką i szybką grę:
- Ustaw grafikę na 256 kolorów. Gra będzie o wiele szybsza i mniej ważyła.
- Ustaw jak najmniejszy ekran, kiedy gra ma scrolling. Ale bez przesady. Optymalny są 520x340 lub 640x480. Od 800x600 i większych lepiej nie dawać. Nie każdy ma pentiuma 4 :D ... A ekran 320x200 jest stanowczo za malutki. Gra sporo traci w oczach gracza.
- Nie rób za wielkich obiektów tła. Lepsze szybkie tło 50x50 niż jeden wielgachny obrazek 800x600.
- Jak najmniej obiektów aktywnych! Niby każdy wie, ale mało kto stosuje tę zasadę.
- Zamiast 3 counterów daj jakiś 1 obiekt malutki (nawet 1x1 pikseli) obiekt aktywny, a jeszcze lepiej wykorzystaj wartości globalne.
- Ustaw Maximized on boot-up oraz Full screen at start. Gra szybciej chadza na pełnym oknie.
- Nie ma sensu używać Machine independent-speed. Gra głupio skacze.
- Pod żadnym pozorem nie używać Resize display to current window size. Gra zwalnia niemiłosiernie.
- Duże obiekty przezroczyste zastąp zwykłymi, stosując metodę dziurkowania. Kładziesz obiekt tła o wyglądzie obiektu aktywnego, a na nim szybkie tło o pikselach pustych i czarnych RGB 0,0,0. Następnie Print Screen, potem w edytorze obrazka Wklej. Czarne kropki podziurkowały nasz obiekt aktywny. Proste nie?
- Im więcej ramek (nawet gdy masz wszędzie obiekty globalne) tym gra więcej zajmuje, ale gdyby w każdej ramce z odsobna były obiekty nieglobalne, to gra będzie duuuużo cięższa.
- Jeżeli w grze aktualnie znajduje się obiekt aktywny mający dużo animacji (np: heros) to gra zwalnia. Można spróbować podzielić herosa na kilka typków, każdy z pewnym zestawem animacji i w czasie gry używać jednego typka, a pozostałe zniszczyć. W razie potrzeby wymieniać typy. To wszystko ma sens, gdy heros jest naprawdę bogaty w animacje i dużo MB zajmuje.
- Wszystkie obiekty które aktualnie nie biorą udziału najlepiej niszczyć i tworzyć w razie potrzeby. Dotyczy to np: dużych ramek z komunikatami, zasłony przyciemniającej itp. Używanie niewidzialności nie jest w tym przypadku dobrą metodą. Można zmieniać pozycję. Raz w ekranie, raz hen daleko...
- Obiekt tła ma tyle samo MB co aktywny bez animacji. Jeżeli masz powiedzmy 10 klatek animacji, ale takich samych, obiekt nie zwiększy się ani o kilobajt. Natomiast jak dodasz choćby 1 piksel do jednej z klatek i stanie się ona inna to obiekt aktywny podwaja rozmiary MB !!! Na wielkość obrazka wpływ ma także powierzchnia przezroczysta. Więc warto redukować niewidzialne (niepotrzebne) obszary.
- Wielkość pola planszy nie ma wpływu na rozmiar gry! Ogromna liczba takich samych obiektów tła, bądź obiektów aktywnych ma znikomy wpływ na rozmiar gry, za to kolosalny na szybkość gry. Uwaga! Obiekty tła nie zwalniają gry ani na jotę. Natomiast aktywne bardzo zwalniają.
- Na szybkość gry ma wpływ wszystko co widzimy na ekranie. Po za ekranem niech będzie ze 300 wielgachnych obiektów aktywnych i tak gra nie zwolni. Więc bardzo ważne jest unikanie wszelkiego tłoku w ekranie. Nie zawsze się to udaje, ale warto czynić starania, by był jak najmniejszy. Zamiast hordy słabych wrogów, lepiej dać mniej, ale za to potężnych. No cóż, jak ktoś lubi cieszyć oko armią wrogów, niech robi swoje.
- TGF ogranicza maksymalną liczbę obiektów do 266. Głupota, ale zauważyłem, przenosząc grę do MMF, że liczba obiektów w czasie gry w ogóle ma przemożny wpływ na szybkość. Tego nie czuć w TGF, ale gdy w MMF liczba obiektów aktywnych rosła do 10000 to gra stawała się coraz wolniejsza.
- Animacje intra najlepiej robić jako etapy. Animację całego intra lepiej rozłożyć na pojedyncze ruchome elementy. Rozmiary gry i szybkość animacji wydatnie się poprawią. Na lepsze oczywiście :) ...
- Gra szybciej chadza w MMF niż w TGF. Z tego powodu warto ukończone produkcje, przerzucić do MMF, zapisać jako .exe i gotowe! W MMF obiekty transparentne o wiele mniej zwalniają grę. Uwaga! Jeżeli planujesz przerzucić gotowy engine (np. strategii) do MMF po to by mieć więcej niż 266 max obiektów aktywnych, może się okazać, że gra jest dużo wolniejsza. To mnie spotkało, więc tak dla ostrzeżenia :) ...
- Jak robisz menu to najlepiej, aby każdy pasek (START, PASSWORD, EXIT, itp) był tłem, a wybieranie polegałoby na przesuwaniu się ramki aktywnej w górę i w dół. Oszczędzisz kopiowania ramki do każdego paska.
- Staraj się, aby w czasie grania było aktualnie jak najmniej obiektów aktywnych. Zamiast układać wrogów i przedmioty, spróbuj stosować metodę tworzenia i znikania obiektów w zależności od pozycji bohatera. Redukuj liczbę akurat niepotrzebnych rzeczy i zapisuj ich dane w INI lub licznikach. Ma to sens gdy mapa jest rozłegła. Ideałem byłoby utrzymać liczbę obiektów aktywnych na poziomie 60 - 80.
- Muzyka i dźwięki spowalniają grę. A użycie Multi-samples mocno spowalnia grę.
- W układaniu terenu stosuj zasadę: dużo takich samych teł, mało różnorodnych teł. Powiedzmy robisz ścieżkę, lepiej by składała się z wielu jednakowych teł, niż była jednym wielgachnym tłem. Jeżeli robisz np: aktywne drzewa (w platformówce) to całe drzewo zrób jako tło a ten fragment, który ma zasłaniać zrób jako aktywny obiekt, wycinek całego drzewa.
Podsumowując, jeżeli masz słaby komputer staraj się robić grę tak, aby ani trochę nie zwalniała. Jeśli tak, popraw to, co twoim zdaniem najbardziej się do tego przyczyniło. Nawet te niewinne przezroczyste obiekty lub jakiś wielki obiekt czyhający tuż za rogiem mogą być tego przyczyną. Co za przyjemność nie móc grać w swoją grę na własnym kompie? Jeżeli zamierzasz grę wysłać do jak największego grona odbiorców, to pomyśl czy twoja gra nie jest przypadkiem zbyt przeładowana.
Główną przyczyną słabej szybkości jest kiczowaty engine TGF (MMF też :D ). Gry zrobione pod TGF nie wykorzystują często potencjału superkomputerów.
W każdym co bądź razie szaleństwem byłoby dogodzić każdemu... Więc przed rozpoczęciem gry pomyśl dla kogo ona ma być, jeśli liczysz się tylko ty, zapomnij o całym świecie i rób grę tak wspaniałą jak tylko zapragniesz. Oby tylko twój blaszak to wytrzymał!
|