Używanie trybów okienkowego i wideo w grach — ankieta

0

Większość poważnych gier dostepnych na PC domyślnie uruchamia się w ekskluzywnym trybie wideo, dzięki czemu efektywność ich działania jest wysoka (tutaj mam na myśli renderowanie, nie logikę gry). Wiele gier wspiera też tryb okienkowy, przy czym z reguły takie okienko posiada obramowanie i belkę, a także daje możliwość zmiany swojego rozmiaru za pomocą myszy (jak standardowe okno) i da się je rozciągnąć na cały ekran.

Czy jeśli gra oferuje ekskluzywny tryb wideo to zawsze z niego korzystacie, czy istnieją przypadki, w których wolicie grać w oknie? Tutaj mam na myśli wygodę przełączania się pomiędzy aplikacjami, np. podczas streamowania czy innych nietypowych praktyk. Ewentualnie macie tak kosmicznie wielki monitor, że wolicie, aby gra nie zajmowała całej powierzchni ekranu.

Pracuję sobie właśnie nad oknem swojej nowej gry i tak się zastanawiam, czy wsparcie trybu okienkowego oraz możliwości ustalenia dowolnego jego rozmiaru w ogóle ma sens. Jeśli o mnie chodzi to wystarczy aby gra pozwalała grać w trybie okienkowym, gdzie okno rozciągnięte na cały ekran i aby można było je przerzucić na dowolny ekran. Dodatkowo, musi być wsparcie ekskluzywnego trybu wideo oraz możliwość wybrania jego rozdzielczości, tak aby gracz mógł ją dostosować do wydajności swojego sprzętu. Tryb wideo zapewni wydajność, a okienkowy fullscreen możliwość wygodnego przełączania się pomiędzy aplikacjami. Małe okienko uważam raczej za bezużyteczne.

Zachęcam do wzięcia udziału w ankiecie oraz dodatkowo do uwargumentowania swojego wyboru i ew. skrytykowania mojego podejścia do tego tematu. Może być tak, że jakiegoś przypadku nie biorę pod uwagę i fajnie by było, gdyby ktoś to wytknął. :]

2

Full screen jak po prostu chcę zagrać. Okienkowe na pełen monitor - jak pracuje na stacji i mam nudne spotkanie gdzie i tak tylko słucham to na jeden monitor puszczam grę. Jeśli jestem w terenie i mam spotkanie takie jak ww. to odpalam małe okienko z gierką, i komunikator.

1

Zależy, tryb okienkowy bez ramki włączam w 2 przypadkach.

  1. Kiedy alt+tab działa bardzo opornie, nie chce działać lub powoduje, że gra jest zatrzymywana(czasem chcę, aby gra w tle sobie działała)
  2. Kiedy gra wypala mi oczy, gdy wyłącza tryb nocy w windowsie(który mam włączony cały czas) i wali mi niebieskim światłem matrycy.
0
Michalk001 napisał(a):

Zależy, tryb okienkowy bez ramki włączam w 2 przypadkach.

Bez ramki? Czyli chodzi Ci o okno bez obramowania, mniejsze od pulpitu? Czy tylko okienkowy fullscreen bez ramki?

Nie spotkałem się jeszcze z czymś takim — jeśli jakaś gra wspiera tryb okienkowy, to okno zawsze posiada systemowe obramowanie (czyli m.in. belkę tytułową), dzięki któremu można je przesuwać po pulpicie oraz wygodnie zmieniać rozmiar. No i można to robić z poziomu klawiatury, bo jeśli okno ma belkę, to system obsługuje menu pod ikonką na belce (dostępne skrótem Alt+Space) — tego menu nie ma w ogóle jeśli okno nie ma obramowania.

Choć okno bez obramowania zaimplementowałem w Fairtrisie, jako eksperyment — wyszło to całkiem nieźle. Jednak w tego typu przypadkach, gdy okno nie ma ramki, jest problem z obsługą myszy.

2

Zależy od gry.
W Hearthstone używam tryb okienkowy, bo podczas tury przeciwnika mogę coś porobić.
Ale w gry akcji (np. Mortal Kombat 11) gram tylko w trybie pełnoekranowym.

Tak na marginesie. Niektóre stare gry źle działają w trybie pełnoekranowym i tylko tryb okienkowy je ratuje ;)
Bo np. są rozciągnięte do wide screena (co psuje wygląd), albo brakuje części ekranu w menu i nie da się włączyć gry.

1

Dzięki @Spine za feedback. Czyli u Ciebie jest to potrzebne tylko w przypadku gier, które dają dużo wolnego czasu.

U mnie tego typu problemów nie będzie, bo mam zaimplementowane utrzymywanie zadanych proporcji obrazu (to kilka linijek kodu, tak na marginesie). Będzie wsparcie dla dowolnej rozdzielczości i dowolnych proporcji ekranu — czarne pasy mogą być renderowane po bokach lub u góry i na dole ekranu, zależy czy landscape czy portrait.

Czyli jednak tryb okienkowy i możliwość ustawienia dowolnego rozmiaru okna wydaje się potrzebny. :D

2

No ja się spotkałem z trzema trybami. Albo fullscreen albo okienko z ramką, tak jak mówisz, ale w niektórych grach jest jeszcze Borderless, czyli gra okienkowa, ale bez ramki.

Funkcje pełni dokładnie taką samą jak Fullscreen, jest mniej wydajna, bo nie jest exclusive, ale za to Alt+Tab do minimalizowania i maksymalizowania okna działa błyskawicznie. Fullscreen ma większy performance, ale zamykanie i pokazywanie go trwa 1-3s, zależy od gry i kompa.

Zazwyczaj korzystam z Borderless jak jednocześnie gram i klikam coś na YouTube, lub fullscreen jak tylko gram.

Z okienkowego z ramką nigdy nie korzystam bo wygląda okropnie i nie mam nigdy potrzeby zmieniać rozmiaru okienka.

Także mógłbyś dodać do ankiety pole z okienkiem Borderless.

1

@furious programming:

furious programming napisał(a):

Bez ramki? Czyli chodzi Ci o okno bez obramowania, mniejsze od pulpitu? Czy tylko okienkowy fullscreen bez ramki?

Tak właśnie o taki tryb. Gra jest jak w trybie okienkowym, ale wyświetla się na całym ekranie. Wiele gier ma 3 opcje: fullscreen, okienka i okienka bez ramek, który robi się fullscreenem(Borderless).
Taki Gothic ma problemu z alt+tab przy trybie fullscreen, więc w niego gram w borderless.

BTW: w ankiecie 2 opcja to myślałem, że właśnie to jest to Borderless

1

Zazwyczaj bezramkowe okienko na pełny ekran. W większości przypadków użycie ekskluzywnego trybu pełnoekranowego skutkuje całkowitym rozpieprzeniem istniejących okien - wszystko migruje na główny ekran i zmienia położenie.

0
TomRiddle napisał(a):

Także mógłbyś dodać do ankiety pole z okienkiem Borderless.

Druga opcja w ankiecie tego dotyczy, czyli fullscreen okienkowy. ;)


Michalk001 napisał(a):

Tak właśnie o taki tryb. Gra jest jak w trybie okienkowym, ale wyświetla się na całym ekranie. Wiele gier ma 3 opcje: fullscreen, okienka i okienka bez ramek, który robi się fullscreenem(Borderless).

To właśnie staram się wybadać — kto z czego korzysta. Trzy konfiguracje to podstawa, ale jest ich więcej:

  • fullscreen w ekskluzywnym trybie wideo, bez żadnego obramowania,
  • fullscreen okienkowy bez obramowania,
  • fullscreen okienkowy z obramowaniem,
  • małe okno z obramowaniem,
  • małe okno bez obramowania.

Dodatkowo, we wszystkich tych przypadkach gra może utrzymywać zadane proporcje obrazu i renderować wypełnienie w pozostałym obszarze (zwykle jest to wypełnienie kolorem czarnym, ale niektóre gry oferują wypełnienie jakimiś wzorami, jak np. Nuclear Throne). Do tego, jeśli gra znajduje się w małym okienku to może wymuszać utrzymywanie proporcji podczas jego rozciągania.

Trochę tego jest i trzeba się zastanowić które funkcje wspierać, a które sobie darować. No ale z tego co widzę to z każdej opcji ktoś korzysta, więc raczej wszystkie trzeba będzie zaprogramować… :D

Taki Gothic ma problemu z alt+tab przy trybie fullscreen, więc w niego gram w borderless.

Zdarza się, że Alt+Tab z ekskluzywnego trybu wideo powoduje nieskończone zapętlenie minimalizacji i przywracania okna — jedyną opcją pozostaje Alt+F4 i nadzieja, że okno się zamknie. Jeśli to nie pomoże to trzeba kombinować, a w ostateczności ubić system przyciskiem zasilania.

Nie wiem czy to kwestia sterownika czy menedżera okien w używanej w grze bibliotece, czy może jeszcze czegoś innego. W każdym razie taki problem miałem z początku w Fairtrisie, natomiast coś podobnego

BTW: w ankiecie 2 opcja to myślałem, że właśnie to jest to Borderless

Druga opcja dotyczy dowolnego trybu okienkowego, w którym okno jest rozciągnięte na pełen ekran — nieważne czy ma obramowanie czy nie, bo tutaj chodzi tylko o rozmiar okna i fakt bycia zwykłym oknem. :P

1

Zobacz sobie tryb okienkowy w Battle for Wesnoth. Gra turowa, więc z podobnego powodu jak w Hearthstone, grałem w okienku ;)
Nie robi czarnych pasków, tylko renderuje większą porcję mapy.

0
Spine napisał(a):

Nie robi czarnych pasków, tylko renderuje większą porcję mapy.

Rozumiem — renderuje większy obszar mapy, bo może. ;)

W moim przypadku, rozmiar widocznego obszaru mapy zawsze będzie stały, więc mam ciut łatwiej.

2

Zazwyczaj gram w jakieś angażujące gierki więc preferuję fullscreen. Tym nie mniej wkurzam się jeśli Alt-Tab nie działa poprawnie jak potrzebuję go użyć.

0

Chciałem oddać głos, bo wprawdzie gracz ze mnie żaden, ale czasem coś odpalam sobie czy dzieciakom. W każdym razie - czym się różnią dwie pierwsze opcje - czyli tryb ekskluzywny oraz pełnoekranowy? Możesz wyjaśnić?

2
cerrato napisał(a):

Chciałem oddać głos, bo wprawdzie gracz ze mnie żaden, ale czasem coś odpalam sobie czy dzieciakom. W każdym razie - czym się różnią dwie pierwsze opcje - czyli tryb ekskluzywny oraz pełnoekranowy? Możesz wyjaśnić?

Pełnoekranowy to taki gdzie OS wyświetla tylko tą jedną jedyną aplikacje, która jest ekskluzywna; okienka podspodem ani sama powołka nie jest renderowana.

Pełnoekranowe okienko, to po prostu jest okienko na cały ekran które zasłania wszystkie inne, tak jakbyś włączyć YouTube/Netflix na fullscree. Inne aplikacje i powłoka nadal są wyświetla pod spodem, tylko że to okienko je zasłania.

Pierwsza opcja jest wydajniejsza, jak się ma słabego kompa to można wskoknąć z 25FPS do 40 czasem, ale za to włączanie i wyłączanie go trwa dłużej. Jak się ma okienko, to Alt+Tab, jest błyskawiczne, ale jest mniej wydajne. Noi też jak grasz w grę i masz więcej niże jeden ekran, to jak program nie przechwyca kursora, to może Ci uciec na inny ekran mycha.

3

Dodatkowo - jeżeli odpalasz grę w mniejszej rozdzielczości, to w trybie ekskluzywnym aplikacja prosi OS o zmianę video mode, więc monitor wtedy faktycznie działa w trybie, dajmy na to, 1280x1024. Przy oknie pełnoekranowym monitor działa, jak działał, gra renderuje się w 1280x1024 i potem jest to skalowane na rozmiar okna (czyli pełny ekran).

2

Jako ciekawostkę dodam, że ekskluzywny tryb wideo renderuje zawartość danego okna na cały obszar ekranu (z małymi wyjątkami), ale nie uniemożliwia jego jednoczesnego wyświetlania na innym monitorze. Odkryłem to przez przypadek kiedy implementowałem obsługę SDL w Fairtrisie.

W tym projekcie okno nie posiada obramowania (flaga SDL_WINDOW_BORDERLESS), a żeby dało się je przesuwać myszą, zarejestrowałem w SDL własną funkcję HitTest dla okna, za pomocą SDL_SetWindowHitTest. Działało, więc skupiłem się na implementacji ekskluzywnego trybu wideo. Hardkodowałem rozdzielczość 640×480 na potrzeby testów i zacząłem zabawę. Wszystko działało dobrze, ale jeśli złapałem okno będące w trybie wideo, to mogłem je przesunąć na ekran dodatkowego monitora — i miałem dwie kopie gry, jedną w trybie wideo na laptopie, a drugą w oknie na monitorze. :D

Okazało się, że jeśli zarejestruje się własny HitTest, to on działa również w trybie wideo, dzięki czemu przeciąganie okna jest nadal możliwe. Później sobie to poprawiłem i podczas aktywacji trybu wideo, HitTest jest wyrejestrowywany, a w jego kodzie dodałem też zabezpieczenie, aby nie dało się przeciągać okna również w pełnoekranowym trybie okienkowym.

Lubię SDL-a, bo nie zabrania mi robić głupich rzeczy. ;)

1

No i z tego co widzę po aktualnych wynikach ankiety — 14-7-3 — zdecydowana większość graczy używa ekskluzywnego trybu wideo, a tylko nieliczni używają małego okienka, mniejszego niż ekran. Częste używanie desktopowego trybu pełnoekranowego nie dziwi mnie, bo od dawna standardem są stacje wieloekranowe, co daje mnóśtwo możliwości, dzięki czemu wygodne przełączanie się pomiędzy grą a innymi aplikacjami ()bez zmiany rozdzielczości) jest kluczowe.

Dla zainteresowanych, załączam swój prototyp obsługi okna oraz myszy (ze źródłami i exe). Obsługa trybu okienkowego oraz trybu wideo, z zachowaniem proporcji obrazu. Tryb wideo włącza się lub wyłącza za pomocą klawisza F11.

1

Z tego co mi wiadomo streamerzy często grają w oknie z kilku powodów (np. mają jakiegoś super wide'a 8K a stream jest w FullHD 16:9, potrzeba śledzenia czatu, softu do streamowania...)

Co do ekskluzywnego pełnego ekranu a okna pełnoekranowego – w różnych grach różnie to działa, czasami lepiej jedno a czasami lepiej drugie.

furious programming napisał(a):

Dla zainteresowanych, załączam swój prototyp obsługi okna oraz myszy (ze źródłami i exe). Obsługa trybu okienkowego oraz trybu wideo, z zachowaniem proporcji obrazu. Tryb wideo włącza się lub wyłącza za pomocą klawisza F11.

Dziwne te proporcje gra ustawia, zbliżone do 4:3 ale nie do końca – u mnie na monitorze 1600x1200 gra zostawia małe paski u góry i na dole, na oko (mierzone Paintem) wychodzą proporcje 4,17:3 które chyba u nikogo nie będą prawdziwie pełnoekranowe…

Jak już jesteś tak blisko 4:3 to zrób 4:3 :)

1
Azarien napisał(a):

Dziwne te proporcje gra ustawia, zbliżone do 4:3 ale nie do końca – u mnie na monitorze 1600x1200 gra zostawia małe paski u góry i na dole, na oko (mierzone Paintem) wychodzą proporcje 4,17:3 które chyba u nikogo nie będą prawdziwie pełnoekranowe…

Dokładnie ten sam problem zauważyłem w Fairtrisie, w którym u jednych graczy proporcje klienta jakie widzimy na monitorze są prawidłowe, a piksele kwadratowe, ale u niektórych to co widać na ekranie jest nieco rozciągnięte w poziomie (tak jakby GPU wymuszał piksele prostokątne). Wszystko pomimo zastosowania dokładnie tych samych obliczeń.

Funkcja do obliczania obszaru klienta w załączonej aplikacji testowej wygląda tak:

procedure UpdateWindowClient();
var
  WindowWidth, WindowHeight: Integer;
begin
  // pobieramy aktualne wymiary okna (tryb okienkowy) lub wymiary ekranu (tryb wideo)
  WindowWidth  := IfThen(VideoEnabled, VideoBounds.W, GlobalBounds.W);
  WindowHeight := IfThen(VideoEnabled, VideoBounds.H, GlobalBounds.H);

  // ustalamy wysokość klienta na równą wysokości okna
  GlobalClient.H := WindowHeight;
  // oblicz szerokość na podstawie wysokości oraz mnożnika proporcji
  // tutaj zakładamy, że okno ma proporcje "landscape", czyli pasy otrzymamy po bokach
  GlobalClient.W := Round(GlobalClient.H * WINDOW_RATIO_LANDSCAPE);

  // jeśli obszar klienta wyszedł szerszy niż okno, to robimy na odwrót
  if GlobalClient.W > WindowWidth then
  begin
    // ustalamy szerokość klienta na równą szerokości okna
    GlobalClient.W := WindowWidth;
    // obliczamy wysokość okna na podstawie szerokości oraz mnożnika proporcji
    // tutaj zakładamy, że okno ma proporcje "portrait", czyli pasy otrzymamy u góry i na dole
    // obliczona wysokość nigdy nie może być większa niż wysokość okna
    GlobalClient.H := Round(GlobalClient.W * WINDOW_RATIO_PORTRAIT);
  end;

  // centrujemy obszar w obu osiach
  GlobalClient.X := (WindowWidth - GlobalClient.W) div 2;
  GlobalClient.Y := (WindowHeight - GlobalClient.H) div 2;
end;

Natomiast mnożniki proporcji są wyliczone na podstawie wymiarów tylnego bufora:

const
  BUFFER_WIDTH  = 320;
  BUFFER_HEIGHT = 240;

const
  WINDOW_WIDTH  = BUFFER_WIDTH  * 2;
  WINDOW_HEIGHT = BUFFER_HEIGHT * 2;

  WINDOW_RATIO_LANDSCAPE = WINDOW_WIDTH / WINDOW_HEIGHT; // tutaj
  WINDOW_RATIO_PORTRAIT  = WINDOW_HEIGHT / WINDOW_WIDTH; // i tutaj

Myślisz, że ten kod w którymś miejscu czegoś nie uwzględnia lub coś liczy źle?

Jak już jesteś tak blisko 4:3 to zrób 4:3 :)

Docelowo tylny bufor będzie miał wymiary 400×240 pikseli, czyli będzie panoramiczny, tak jak współczesne matryce. ;)

0

W kodzie który wyżej udostępniłeś masz tam 224 zamiast 240.

const
  BUFFER_WIDTH  = 320;
  BUFFER_HEIGHT = 224;

Docelowo tylny bufor będzie miał wymiary 400×240 pikseli, czyli będzie panoramiczny, tak jak współczesne matryce. ;)

Ale to też są jakieś dziwne proporcje?

0
Azarien napisał(a):

W kodzie który wyżej udostępniłeś masz tam 224 zamiast 240.

const
  BUFFER_WIDTH  = 320;
  BUFFER_HEIGHT = 224;

Wybacz, eksperymentowałem z różnymi rozmiarami na potrzeby testów ograniczania ruchu myszy w trybie wideo i już mi się wszystko miesza. Nadal dłubię nad tą testową aplikacją, tyle że jej kod jest już inny niż ten z tamtego załącznika.

Ale to też są jakieś dziwne proporcje?

Po prostu takie są dla mnie odpowiednie — panoramiczne, ale nie jak 16:9, bo nie wszystkie ekrany są w 16:9. Taki mały kompromis, aby wykorzystać jak najwięcej miejsca na wszystkich ekranach, zarówno panoramicznych, jak i tych bardziej kwadratowych. No i takie wymiary bufora — czyli 400×240 — odpowiadają wymaganiom mojej gry.

W tym temacie będę jeszcze eksperymentował i szukał ”złotych proporcji”.

1 użytkowników online, w tym zalogowanych: 0, gości: 1