Autor Wątek: Problem z ekranem na urządzeniach mobilnych.  (Przeczytany 2197 razy)

Offline mateusy04

  • Użytkownik

# Marzec 06, 2015, 19:52:35
Witam. Otóż mam problem w obrazem w grze na urządzenia mobilne. Gdy testuję grę w unity to mam pewien obraz, jednak gdy wrzucę ją na tablet otrzymuję dużo okrojony obraz - przypuszczam, że na innych urządzeniach (telefon itp) będą jeszcze inne zmiany. I tu moje pytanie. Co zrobić aby po odpaleniu gry otrzymać zawsze taki sam obraz a nie różnych wielkości. Proszę o pomoc. Z góry dziękuję.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline rafal3920

  • Użytkownik

# Marzec 07, 2015, 00:13:28
Zapewne jest źle ustawiona rozdzielczość ekranu, trzeba ją zmniejszyć. W końcu monitor jest większy od ekranu tableta

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Marzec 07, 2015, 00:23:31
Cytuj
Co zrobić aby po odpaleniu gry otrzymać zawsze taki sam obraz a nie różnych wielkości.
Musisz się liczyć z faktem, że różne urządzenia mają różne proporcje ekranu i żaden framework/silnik nie załatwi Ci z automatu tej różnicy. Raczej ciężko żeby dana gra dobrze się prezentowała zarówno przy aspect ratio 16:9, jak i 1:1 bez świadomego dłubania przy tym temacie.

Offline Gimer

  • Użytkownik
    • Portfolio

# Marzec 07, 2015, 01:53:12
Nie da rady zrobić tego co chcesz bez umieszczania "czarnych pasów" po bokach.

Offline beermaster

  • Użytkownik

# Marzec 07, 2015, 11:03:27
Zapewne jest źle ustawiona rozdzielczość ekranu, trzeba ją zmniejszyć. W końcu monitor jest większy od ekranu tableta

Monitor może i większy , ale rozdzielczość może mieć mniejszą.

Offline mateusy04

  • Użytkownik

# Marzec 07, 2015, 11:09:26
No dobra. A jak np: aplikacje ze sklepów, chodźby z google play radzą sobie z tym problemem? Przecież są pobierane na różne urządzenia i jakoś dzialają bez obcinania ekranu na telefonach i na tabletach.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Marzec 07, 2015, 12:10:40
Nie da rady zrobić tego co chcesz bez umieszczania "czarnych pasów" po bokach.
Zwykle to się robi właśnie bez umieszczania czarnych pasów po bokach.

Cytuj
A jak np: aplikacje ze sklepów, chodźby z google play radzą sobie z tym problemem?
Ja sobie radzę tak: (zależnie od sytuacji)
- wybór osi, która decyduje o skalowaniu: wybierasz czy zależy Ci na tym, żeby zawsze tyle samo było widoczne w osi X albo Y i skalujesz tak, by pasowało; alternatywnie decydujesz się na rozwiązanie pośrednie (jakaś proporcja pomiędzy),
- określasz obszar (box), który chcesz wpasować w ekran; mam tutaj dwa sposoby:
  - Fit - box skaluje się tak, żeby cały zmieścił się na ekranie, najczęściej w luźnej osi się centruje,
  - Cover - box skaluje się tak, żeby pokrył cały ekran (kawałki będą wystawać poza ekran)
  (w przypadku menu np. przyciski pozycjonuję metodą Fit, a tło metodą Cover)
- dedykowany język do tworzenia layoutów: zaczynamy od pudełka wielkości ekranu i mamy możliwość zagnieżdżania, przesuwania, skalowania, fit/cover, itp, itd - ponieważ całość jest w odniesieniu do ekranu, to wszystko da się zakodować tak, by się elementy odpowiednio układały,
- osobne layouty dla różnych aspect ratio: w SpyWords dla menu mam dwa kompletnie różne (dla 16:10 i 1:1) i używam tego bardziej pasującego; oba są w powyższym języku, więc mniejsze różnice się dopasują, ale muszą być dwa bo układ przycisków jest kompletnie inny dla kwadratu i prostokąta
- ułożenie dodatkowych elementów podczas gry - mam jedną grę arcade z polem gry 4:3 (wpasowane metodą Fit w ekran) i zostają pasy góra/dół, lub po bokach; w pustym miejscu umieszczam przycisk pauzy, ale można je wypełnić również innymi elementami

Generalnie należy kombinować jak się da. Developerkę prowadzę pod Windows (z przekładką OpenGL ES -> OpenGL), więc okno mogę sobie skalować dowolnie i patrzeć jak gra się dostosowuje. Do tego przytrzymując przy starcie jeden z klawiszy 1..5 mogę wybrać startową rozdziałkę okna, która jest albo jedną z fizycznych rozdzielczości docelowych urządzeń, albo dokładnym wymiarem fizycznego ekranu urządzenia na moim ekranie laptopa. To drugie jest o tyle ważne, że bez zachowania skali bardzo łatwo wkopać się i zrobić np. przyciski w menu 2-3x mniejsze od palucha, czyli po prostu nieużywalne.


[EDIT: Normalnie tak się rozpisałem, że muszę z tego zrobić artykuł na swoją stronkę :P]

Offline Gimer

  • Użytkownik
    • Portfolio

# Marzec 07, 2015, 12:53:43
No dobra. A jak np: aplikacje ze sklepów, chodźby z google play radzą sobie z tym problemem? Przecież są pobierane na różne urządzenia i jakoś dzialają bez obcinania ekranu na telefonach i na tabletach.

I na każdym ekranie gra wygląda trochę inaczej :)

Offline mateusy04

  • Użytkownik

# Marzec 07, 2015, 13:01:36
I na każdym ekranie gra wygląda trochę inaczej :)

Może masz rację, ale  zazwyczaj nie wpływa to na rozgrywkę, a u mnie niestety muszę jakoś zaplanować scenę i nigdy nie bede wiedzial czy na którymś z urządzeń nie wpłynie to na rozgrywkę. Najlepiej byloby aby na wszędzie gra uruchamiala sie na takim obrazie jaki widzę w unity, odpowiednio skalując wszystko do rozmiaru ekranu urządzenia.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Marzec 07, 2015, 13:08:01
Cytuj
a u mnie niestety muszę jakoś zaplanować scenę i nigdy nie bede wiedzial czy na którymś z urządzeń nie wpłynie to na rozgrywkę.
To przetestuj z aspect ratio 1:1, 5:4, 4:3, 16:10, 16:9. Zakładając że w ramach aspect ratio (ale różnych rozdzielczości) gra i się skaluje, oraz niczego z gameplayu nie dopasowujesz do pikseli urządzenia, to będziesz wiedział.

Cytuj
Najlepiej byloby aby na wszędzie gra uruchamiala sie na takim obrazie jaki widzę w unity, odpowiednio skalując wszystko do rozmiaru ekranu urządzenia.
To masz z miejsca. Musisz tylko sprawdzić czy proporcje nie psują rozgrywki, chociażby zmieniając sobie w Unity rozmiar podglądu.

No i tylko jeszcze raz przypomnę o tym, żeby się upewnić że wszystkie przyciski dotykowe są odpowiednio duże na małych urządzeniach, by je paluchem dotknąć.

Offline deadeye

  • Użytkownik

  • +1
# Marzec 08, 2015, 01:08:55
Może masz rację, ale  zazwyczaj nie wpływa to na rozgrywkę, a u mnie niestety muszę jakoś zaplanować scenę i nigdy nie bede wiedzial czy na którymś z urządzeń nie wpłynie to na rozgrywkę. Najlepiej byloby aby na wszędzie gra uruchamiala sie na takim obrazie jaki widzę w unity, odpowiednio skalując wszystko do rozmiaru ekranu urządzenia.
Najpierw zdecyduj, czy twoja gra działa tylko w horyzontalnym trybie, tylko portetowym albo obu. Prawdopoboeni tylko horyzontalnym, wiec upewnij sie ze jest to ustawione w settingsach playera.
W zakładce "game" kliknij na "Free aspect" i zmień to na 1:1, wtedy obszar zostanie obcięty do kwadratu. Na każdym ekranie masz gwarancje ze co najmniej te same informacje sie zmieszcza, wiec musisz sie upewnic zeby wszystkie wazne elementy byly widoczne uzywajac tego ratio. Zakladajac ze uzywasz tylko orientacji horyzontalnej, to co widzisz w 1:1 zawsze bedzie na srodku ekranu i wypelnialo od gornej do dolnej krawedzi ekranu, a ew. po bokach moze byc mniej lub wiecej informacji - to dobre miejsce na tlo czy cokolwiek innego. Ale elementy aktywne ukladaj tylko w 1:1 i bedziesz mial spokoj.