Wpis z mikrobloga

#visherdev back to #gamedev - odcinek trzeci! Jeśli jeszcze nic nie słyszeliście, to zobaczcie najpierw poprzednie: tu i tu.

Nie pisałem jeszcze o grze którą robię, ponieważ chcę zaprezentować Wam kolejne funkcjonalności mojego małego silnika. Gdy uda mi się rozwiązać wszystkie problemy technologiczne, przyjdzie czas na trochę więcej informacji.

A tym razem będzie o kluczowym dla mnie aspekcie, czyli o dopasowaniu do różnych rozdzielczości ekranu. Dzieli się to na dwie rzeczy: sama rozdzielczość, oraz proporcje ekranu. Postawiłem sobie za cel, aby każda gra była pełnoekranowa, oraz zachowywała naturalne proporcje obiektów. Nie może być rozciągania grafik, czy pasków po bokach. Do tego: pixel-perfect. Wszystkie grafiki robię wektorowo, dlatego najlepiej dla mnie byłoby je wyrenderować podczas ładowania gry. Niestety, brakuje wystarczająco dobrych bibliotek do takiego zadania.

Czy to duży problem? Nie aż tak, grafiki pixel-perfect można wyrenderować za pomocą skryptu, dla określonego zestawu rozdzielczości. Wystarczy przejrzeć statystyki za ostatni rok i okazuje się, że znaczna większość smartfonów to około pięć-sześć różnych rozdzielczości. Można ograniczyć się do nich, a pozostałe (z bólem serca) skalować w dół. Wystarczająco dobre.

Temat proporcji ekranu został przeze mnie rozwiązany następująco: przy orientacji poziomej, o skali ekranu decyduje jego wysokość. Zobaczcie na filmiku, jak wygląda zachowanie sceny podczas zmiany rozdzielczości. Różnice w szerokości ekranu teoretycznie dają niewielką przewagę. W praktyce jednak, ponieważ proporcje ekranów bardzo nieznacznie się między sobą różnią, różnica ta jest nieznacząca. A jeśli okaże się że jednak, to można lekko zmieniać HUD w grze - u mnie sterowanie jest po bokach.

W temacie skalowania to tyle, dodam tylko, że w moim silniku dzieje się to dynamicznie - można zmienić rozdzielczość kiedy się chce. Nie ma twardych powiązań.

To był trzeci wpis z nowej serii, czwarty mniejszy będzie na weekendzie, jak tylko ogarnę parę rzeczy, zanim się ogłoszę :)

Dzięki!

#visherdev <- tu obserwujemy :)
Visher - #visherdev back to #gamedev - odcinek trzeci! Jeśli jeszcze nic nie słyszeli...

źródło: comment_uglyhyi6WbHcgt2YUeBK8abFe7qCpTy1.jpg

Pobierz
  • 2
@TymRazemNieBedeBordo: trochę tak, bo zrobienie tego dobrze wymagało obejścia paru istniejących już rozwiązań, lub dopasowania się do nich. Do tego sztuczki optymalizacyjne, o których tutaj nie pisałem. Wydaje mi się, że na samo skalowanie mogłem poświęcić blisko dziesięć dni roboczych. Oczywiście nie dzień po dniu, ten temat przejawiał się i dawał problemy przy niemal każdym widocznym aspekcie: mapie terenu, siatkach (mesh), grafikach (sprite), światłach (oops, zdradziłem co będzie za parę wpisów