O czym należy pamiętać, tworząc gry 2D dla wielu rozdzielczości?

27

Tworzę grę 2D (Android). Urządzenia z Androidem mają dość dużą rozdzielczość ekranu; o czym muszę pamiętać, tworząc swoją grę?

  • Czy muszę utrzymywać duże wersje wszystkich obrazów i zmniejszać je w zależności od rozdzielczości (czy to nie marnuje miejsca)?
  • Czy czcionki bitmapowe dobrze skalują się, czy też muszę użyć czegoś innego?
  • Coś jeszcze zapominam?
ashes999
źródło

Odpowiedzi:

26

Jestem twórcą niezwykle przenośnej gry mobilnej, która działa na każdym sprzęcie, od komputerów, przez telewizory, aż po Black & White Amazon Kindle (Smiles HD - http://smileshd.com - Więcej urządzeń i platform niż tam widzisz) .

Najlepszym sposobem, w jaki znalazłem obsługę dowolnego urządzenia, jest wybranie podstawowej rozdzielczości, a następnie przeskalowanie w górę (lub w dół) do bieżącego ekranu. Jeśli chcesz oszukiwać, możesz dopasować się do nowej rozdzielczości ekranu, ale najlepiej zachować ten sam współczynnik proporcji. Dopasowanie gry zaprojektowanej na ekran 4: 3 wygląda obrzydliwie na 16: 9, ale dopasowanie 16: 9 do 16:10, nikt tego nie zauważy. Zauważysz, że mam na myśli ekrany według proporcji, a nie wymiarów, co jest szczególnie pomocnym sposobem myślenia w erze całkowicie losowych rozmiarów LCD.

Aby stworzyć kompozycję pasującą do dowolnego ekranu przy zachowaniu proporcji, utwórz tła większe niż większość typowych ekranów kiedykolwiek zobaczy. Jest to podobne do koncepcji obszarów bezpiecznych z telewizją.

http://en.wikipedia.org/wiki/Safe_area

Wygenerowane tła działają naprawdę świetnie. Wzory kafelkowe, szachownice, fraktalne kształty itp. Wystarczy wygenerować nieco więcej, aby zmieścić się na nowym ekranie.

Ponadto tworzenie obrazów statycznych większych niż to, co zobaczy typowy użytkownik. Szerszy niż panoramiczny (16: 9) i kwadratowy niż standardowy def (4: 3). Ponownie wróć do bezpiecznych tytułów, umieść ważne informacje w bezpiecznym obszarze, przeskaluj nieco, aby bezpieczny obszar dotykał jednej krawędzi ekranu i pozostaw trochę spływu dla urządzeń, które są tylko trochę większe.

Odmianą, nad którą dziś pracuję, jest tworzenie obiektów 3D „bezpiecznych dla tytułu”. Ponieważ są trójwymiarowe, składają się wyłącznie z wierzchołków, dzięki czemu są większe niż ekran, zajmują praktycznie nie więcej pamięci, niż gdyby pasowały. Podobnie jak gęstość pikseli rośnie, możesz chcieć udostępnić tekstury o większej szczegółowości. Jeśli nie, no cóż, jest trochę rozmazany.

Interfejsy użytkownika, lubię dopasować główny interfejs użytkownika do idealnego kwadratu na środku ekranu. Rogi i środkowe krawędzie również stanowią naprawdę dobre miejsce do układania przedmiotów; Powinieneś obliczyć ich współrzędne jako takie (względem narożnika lub środkowych krawędzi).

http://www.smileshd.com/press/iPad/png/UI01.png

Jeśli naprawdę chcesz się zachwycić, możesz wesprzeć zarówno orientację wysoką, jak i szeroką. Niektóre urządzenia zgłaszają swoje rozdzielczości ekranu jako wyższe niż szerokie (na przykład iPhone), więc i tak możesz zrobić coś dla tych urządzeń, nawet jeśli po prostu obracasz wszystkie twoje współrzędne.

Interfejs użytkownika, który dostosowuje się zarówno do wysokich, jak i szerokich ekranów, może być dość imponującym widokiem.

Szeroki: http://www.smileshd.com/press/iPad/jpg/SmilesHD01.jpg

Wysoki: http://www.smileshd.com/press/iPad/jpg/SmilesHD02.jpg

Z drugiej strony, jeśli chodzi o design, naprawdę musisz wziąć pod uwagę tylko Wysoką i Szeroką, zamiast Portret + Odwróć Portret + Krajobraz + Odwróć Krajobraz. Kiedy wybierasz pozycje rzeczy na ekranie, zastanów się nad bardziej odpowiednią alternatywną pozycją dla drugiej orientacji.

Czy muszę utrzymywać duże wersje wszystkich obrazów i zmniejszać je w zależności od rozdzielczości (czy to nie marnuje miejsca)?

Możesz albo „marnować miejsce” i obsługiwać szerszą gamę urządzeń za pomocą jednej kompilacji, albo „marnować czas” i musieć tworzyć WIELE kompilacji i zmieniać rozmiar grafiki dla wielu urządzeń.

Najlepszy przypadek, powinieneś stworzyć swoje dzieło w wyższej rozdzielczości niż ostateczny rozmiar byłby na telewizorze 1080p (1920x1080). 2048 x 2048 powinien mieć wspólny rozmiar w kompozycji źródłowej. Albo albo rozważ użycie narzędzi do grafiki wektorowej, takich jak Flash i Adobe Illustrator.

Zdecydowanie polecam utworzenie automatycznego procesu zmiany rozmiaru grafiki. Obecnie większość urządzeń mobilnych, w tym tabletów, nie przekracza rozdzielczości większych niż 720p (1280 x 720) ... przynajmniej niewiele. Przyjdź w przyszłym roku, po prostu nie wiemy, czy to już będzie prawda (iPad 3?).

Tak czy inaczej, aby uzyskać najlepszą wydajność, należy przyzwyczaić się do grafiki źródłowej i zasobów źródłowych. Następnie możesz wykonać proces, który zoptymalizuje dane dla dowolnego urządzenia (urządzeń), na które celujesz.

Czy czcionki bitmapowe dobrze skalują się, czy też muszę użyć czegoś innego?

Dobrze skalują się, jeśli używasz dobrego filtrowania. Jeśli tworzysz grę 2D ze sprzętem 3D (OpenGL ES), to zdecydowanie zalecam użycie Filtrowania liniowego w połączeniu z MipMapping (tj. Zestawem skalowanych obrazów). Dzięki temu można uzyskać percepcyjnie doskonałe wyniki, a często mipmapy są szybsze niż nie.

http://en.wikipedia.org/wiki/Mipmapping

W każdym razie mam nadzieję, że to pomoże. Powodzenia w projekcie.

Mike Kasprzak
źródło
2

Ogólnie rzecz biorąc, każda tworzona tekstura powinna mieć rozmiar 256 x 256 lub 512 x 512. Jeśli celujesz również w pady (Galaxy Tab, Honecomb, iPad), wówczas 512x512 nie wypełni całego ekranu, więc możesz chcieć dołączyć większe wersje zasobów graficznych, które muszą wypełnić ekran. Apple obsługuje natywny przyrostek obrazu „@ 2x” do obsługi tego przypadku.

Prostym rozwiązaniem, z którego sam skorzystałem, jest po prostu stworzenie gry na ekran 320x480 (iPhone). Pozwól, że podwoi się to naturalnie w przypadku iPhone'a 2 (640 x 960), a jedynym jedynym przypadkiem, z którym naprawdę musisz sobie poradzić inaczej, jest fakt, że niektóre urządzenia z Androidem mają wyższy ekran - po prostu umieść bufor na górze i na dole (w pionie tryb).

W skrócie - zbuduj grę dla jednego neutralnego rozmiaru ekranu, a następnie uwzględnij wyjątki na podstawie

Mr. Strange
źródło
2
Myślę, że przegapiłeś mój Androidtag. W każdym razie bufor jest do bani; lepiej, jeśli twoja gra się skaluje i wygląda ładnie.
ashes999
1

Najlepiej przechowywać kopie robocze wszystkich posiadanych zasobów. Jeśli na przykład tworzysz obraz w Photoshopie, zapisz oryginalny plik psd. Za każdym razem, gdy potrzebujesz innego obrazu w rozdzielczości, możesz go otworzyć i wyeksportować nowy obraz przy minimalnej utracie jakości.

Zamiast budować dla jednego lub drugiego rozmiaru ekranu, zdecydowanie sugeruję, byś budował dla różnych odmian od samego początku. Mówisz nie tylko o różnych gęstościach pikseli, ale także o różnych proporcjach. 16x9 i 16x10 mogą dać zupełnie inne wrażenia wizualne. Upewnij się więc, że testujesz nowe zmiany na różnych kształtach i rozmiarach ekranu.

Z mojego doświadczenia wynika, że ​​czcionki bitmapowe wcale nie są dobrze skalowane. Może to zależeć w dużej mierze od stylu używanej czcionki, ale generalnie ponowne próbkowanie mapy bitowej czcionek daje bardzo słabe wyniki. Czcionki bitmapowe działają najlepiej, gdy próbkowanie tekstury nie jest ustawione na multisampling (GL_NEAREST i bez mipmap) i jest renderowane w taki sposób, że mapuje piksel po pikselu na ekranie. Możesz rozważyć użycie serii renderowania tej samej czcionki w różnych rozmiarach i upewnij się, że czcionka zawsze pojawia się w skali == 1 w twojej grze; pozwoli to na pewne ograniczone opcje przy wyborze rozmiaru czcionki do zastosowania w konkretnym scenariuszu.

notlesh
źródło
1

Android zapewnia pomoc w tym ...

Możesz określić „alternatywne zasoby” dla elementów takich jak grafika.
Spójrz na sekcję „Udostępnianie alternatywnych zasobów” pod tym linkiem: http://developer.android.com/guide/topics/resources/providing-resources.html. Powinieneś być w stanie znaleźć przykłady w przykładach SDK lub za pośrednictwem Google.

Ponadto Google zapewnia emulator Androida, który otrzymujesz z SDK. Możesz zdefiniować kilka urządzeń wirtualnych o różnych konfiguracjach, aby przetestować swój kod. Oto link do dodatkowych informacji: http://developer.android.com/guide/developing/devices/emulator.html

Powodzenia amb

amb
źródło
0

Oprócz aspektów technicznych (poruszonych przez pana Strange) należy zachować ostrożność przy projektowaniu gry o zmiennym rozmiarze ekranu. Jako przykład wyobraź sobie grę ulic wściekłości na ekranie przypominającym krajobraz, a następnie na ekranie portretowym.

Diego
źródło