Opracowuję silnik gry, odkrywam i czytam technologie gier, takie jak filtrowanie anizotropowe, okluzja otoczenia, wygładzanie krawędzi itp.
Zwykle w grach możesz włączać i wyłączać te ustawienia. Jeśli jednak te ustawienia nie dodają nic oprócz dodatnich, to czy istnieje powód, aby dodawać przełączające wartości dla nich w silniku gry dla programisty?
Rozumiem, że wydajność jest głównym czynnikiem, ale czy jest jakiś inny powód, dla którego te ustawienia są zawsze dostępne do zmiany?
graphics-programming
scalability
Java Man Tea Man
źródło
źródło
Odpowiedzi:
Wydajność jest zasadniczo głównym powodem, dla którego użytkownik może włączać i wyłączać te funkcje. Zasadniczo są one drogie, a pozwalając użytkownikom na ich wyłączanie, programista poszerza zestaw maszyn, które skutecznie uruchamiają grę, o więcej niższych komputerów. Przekłada się to na potencjalnie większą liczbę graczy, a tym samym potencjalnie większą sprzedaż (zakładając, że ci gracze mogą żyć ze zmniejszoną wiernością wizualną).
Te zaawansowane funkcje mogą również znacznie zwiększyć żywotność baterii lub wydajność wentylatora, jak zauważył @Artelius, dlatego użytkownicy mogą chcieć je wyłączyć z tych powodów.
Wreszcie, po prostu, aby dać użytkownikom wybór, co preferują. Niektóre osoby mogą nie lubić wyglądu wygładzania lub tego, jak wyłączenie synchronizacji pionowej może powodować zrywanie ekranu. Lub bardziej praktyczny przykład, rozważ Pillars of Eternity, który ma opcję włączania lub wyłączania ligatur czcionek. Są prawdopodobnie nie kosztują tyle pod względem wydajności wykonawczego, ale niektórzy użytkownicy mogą znaleźć tekst trudniejszy do zapoznania się z nimi. Lub (jak wskazuje @SeanMiddleditch), ktoś może chcieć wyłączyć funkcję, ponieważ jest wadliwa na pojedynczym komputerze. Lub ktoś może chcieć wyłączyć funkcję, aby uzyskać przewagę konkurencyjną (na przykład poprzez wyłączenie głośnych efektów wizualnych, które odwracają uwagę od mechaniki).
źródło
Jak już zauważył Josh Petrie, najważniejszym problemem jest wydajność. Nie tylko nie wiesz, jak potężny jest sprzęt użytkowników końcowych, ale kiedy budujesz silnik, nie wiesz nawet, jak ludzie będą go używać. Może twórcy gry chcą stworzyć grę, która wyświetla tak wiele wielokątów na ekranie, że nawet najlepszy sprzęt nie jest w stanie renderować jej w czasie rzeczywistym bez wyłączania efektów? Ale automatyczna obsługa może również nie być dobrym pomysłem: być może programiści chcą zdecydować, które efekty wyłączyć, dla których obiektów.
Ale oprócz wydajności może mieć również znaczenie estetyczne.
Na przykład przejście z filtrowania anizotropowego na interpolację najbliższego sąsiada i użycie tekstur o niskiej rozdzielczości lub przeskalowanych duszków prowadzi do nostalgicznego wyglądu pikseli. Popularnym przykładem gry, która to robi, jest Minecraft. I oczywiście wiele gier, które kopiują jego estetykę. Nie dlatego, że nie wiedzą, jak zrobić lepiej, ale dlatego, że nie chcą.
źródło
Oczywiście wydajność. Niektóre efekty, takie jak Crepuscular Rays, Depth of Field i Bloom, bardzo obciążają fps, szczególnie w starszych GPU. Dobrym sposobem na uzyskanie dodatkowego fps jest zmniejszenie lub wyłączenie odbić i cieni. Ponadto - aby powtórzyć punkt Arteliusa - efekty wizualne również wpłyną na żywotność baterii.
Poza tym:
Modded Minecraft to naprawdę dobry plac zabaw. Minecraft renderuje całe fragmenty, więc jego liczba wielokątów jest większa, niż się wydaje. Dodaj do tego komplikacje związane z usuwaniem kawałków na śmieciach zebranych i pozbawionych języka wskaźnikowego, takiego jak Java [1], i możesz spodziewać się pewnych problemów z wydajnością - w szczególności na starym sprzęcie, jak zawsze. Niektóre osoby wymagały lepszej grafiki, podczas gdy inne chciały lepszej wydajności. I tak powstały mody, takie jak GLSL Shaders Mod i Optifine , które dodają dodatkowe opcje graficzne - chociaż na różnych końcach - są kompatybilne [2], jeśli masz szansę ich użyć, możesz eksperymentować z efektami wydajnościowymi efekty wizualne.
[1]: Microsoft stworzył port C ++ Minecraft dla Windows 10 - w oparciu o wydanie kieszonkowe - działa znacznie lepiej niż starsze wersje Java. To nie znaczy, że Java nie może działać, to nie tylko symptom bycia C ++, ale także bycia Microsoftem.
[2]: W rzeczywistości te mody połączyły się w Minecraft 1.8.9 - Optifine absorbuje GLSL Shaders Mod .
Mówisz, że opracowujesz silnik gry , więc spodziewasz się, że Twój kod będzie miał szansę na ponowne użycie w wielu różnych grach. Dobrym pomysłem jest umożliwienie twórcy gry decydowania, czy chcą korzystać z tych efektów i czy chcą zapewnić opcje ich wyłączenia, czy nie. Nie wszystkie efekty mogą mieć sens we wszystkich grach, a niektóre gry mogą zależeć od niektórych efektów.
Weź pod uwagę, że niektóre gry używają tych efektów do ustawiania nastroju, przekazywania graczowi informacji lub po prostu do uzyskania licencji artystycznej.
W szczególności istnieje tendencja do używania efektów wizualnych, aby wyglądać tak, jakby był widziany przez kamerę zamiast ludzkiego oka. Próbuje się tego za pomocą takich efektów, jak aberracje chromatyczne, flary obiektywu, ziarnistość filmu i inne efekty „kinowe”. Nie są one odpowiednie dla każdej gry, dlatego nie powinny być narzucane przez silnik gry.
Prawdopodobnie większość tego - jeśli nie wszystko - odbywa się w shaderach, pozwól silnikowi gry pozwolić programistom na przesłanie ich shaderów.
Uwaga na temat opcji ułatwień dostępu: Wiele gier wideo nie uwzględnia osób niesłyszących. Przekazywanie informacji wyłącznie w formie dźwiękowej może być niewystarczające. Dobrym pomysłem jest dodanie efektów wizualnych odzwierciedlających takie rzeczy, jak kierunek nadchodzącego ognia lub obecność pobliskich wrogów (które „słyszysz”) [3]. No i oczywiście podpis. Pamiętaj też, że istnieją osoby niewidome dla koloru ... te przedmioty, które wyróżniają się tylko kolorem ... tak, uważane za przeprojektowanie.
[3]: Po prostu nie wiesz, jak bolesne są te pnącza w Minecraft, kiedy nie słychać nawet syku. Stają się przypadkowymi przypadkami.
Im więcej wiesz ★
źródło
Coś jeszcze nie wspomniane przez innych:
Wyłączenie funkcji graficznych może być dobrym obejściem problemów z pewną konfiguracją , niezwiązanych z wydajnością.
Tylko jeden przykład, niektóre opcje graficzne po prostu nie działają poprawnie z danym silnikiem renderującym podczas uruchamiania gry Windows na Wine (warstwa kompatybilności z Windows dla Linuksa).
W przypadku niektórych (celowo nienazwanych) gier muszę zmniejszyć filtrowanie do trójliniowych i wyłączyć odbicia. Nie dlatego, że mój sprzęt nie jest do tego zdolny (z pewnością tak jest), ale z powodu renderowania błędów i awarii, jeśli tego nie zrobię.
W innej grze trzeba było wyłączyć efekty „mgły” dla każdego zestawu z kartami nVidia (nawet w natywnym systemie Windows), ponieważ zawsze powodowały, że mgła była w 100% nieprzezroczysta.
Coś, co jest wymienione w innych odpowiedzi / komentarze, ale w rzeczywistości jest powodem nie dokonać pewnych ustawień (takich jak gęstość liści, GRAS) opcjonalnie:
Widoczność przeciwników w konkurencyjnych grach.
Jeśli gracze mogą uzyskać przewagę konkurencyjną, ustawiając „wygląd” gry na „naprawdę zły”, szkodzisz rozgrywce na dwa sposoby:
Unikaj tego, jeśli to w ogóle możliwe. Spraw, by gras i liście wyglądały na niezgrabne dla zestawów o niskiej wydajności, ale upewnij się, że niższe ustawienia nie dają przewagi w grze.
źródło
Przejrzystość widoku w konkurencyjnych grach
Gracze w konkurencyjnych grach online mogą preferować prostszy lub bardziej przejrzysty widok niż piękniejszy widok, nawet jeśli wydajność nie jest problemem - wiele opcji wizualnych dodaje realizmu wizualnego, ale przesłania rzeczy, które gracze naprawdę chcą zobaczyć.
Łatwo może się zdarzyć, że w twojej grze łatwiej będzie zauważyć wroga lub zaatakować go, jeśli skonfigurujesz klienta gry tak, aby wyłączał wszelkiego rodzaju dodatkową trawę lub liście, efekty specjalne, dym / mgłę / ogień itp. To umieszcza graczy, którzy włączają takie skutki w niekorzystnej sytuacji.
źródło
Inne odpowiedzi są dobre, ale myślę, że brakuje im dobrych przykładów faktycznych efektów, które możesz chcieć wyłączyć.
Dla mnie naprawdę tani i okropny „motion blur”, który miał na przykład GTA3, pogorszył grę. Na szczęście mogłem to wyłączyć.
Nie grałem w to, ale to, co widziałem w GTA5, to kolejne dość hackerskie rozwiązanie, które mógłbym wyłączyć, jeśli kiedykolwiek spróbuję GTA5. (patrz https://www.youtube.com/watch?v=VjIhl8hbO18 )
źródło