Jak działa nowoczesna gra?

1

Cześć!
Znacie może jakieś filmy, albo artykuły, które opisują jak działają nowoczesne gry typu Wiedźmin czy GTA ?
Programuję w javie i robię w kółko jakieś durne CRUDy i widzę, że one mnie nie posuwają z wiedzą do przodu. Tzn. uczę się implementować coraz to nowe algorytmy, struktury danych i narzędzia, ale w głowie mi się nie mieści jak można zaprogramować tak gigantyczne światy i tak dynamicznie zmieniającą się grafikę.

1

Poszukaj prezentacji z firmy Naughty Dog odnośnie gier z serii Uncharted, podobną prezentację widziałem na temat gry Killzone Shadow Fall. Nie ma tam może kodu, ale jest za to sporo informacji o tym jak wykorzystywane jest cpu, gpu i ram.

A niech będzie - oto link https://www.slideshare.net/naughty_dog/presentations myślę, że to wyjaśni Ci co nieco, albo chociaż naświetli troszkę temat.

5

Moze nie do konca odpowiedz na pytanie, ale tez ciekawe: jak jest generowana klatka obrazu w GTA5:

0

@WhiteLightning: dokładnie o coś takiego mi chodziło.
Aż się zastanawiam jak sprzęt daje radę coś takiego udźwignąć i w tak szybkim czasie renderować te klatki. Magia.

0

w sumie GTA V to chyba daje rade renderowac juz zintegrowana grafika

0

Ciekawy jestem jak w takiej wytwórni gry wygląda zatrudniony personel. Jaki procent to stricte programiści, a jaki to graficy, artyści itd.
Bo z tego co widzę to chyba coraz więcej pracy artystycznej zabiera taka gra,

0

mozna to z CREDITsow wywnioskowac

2

Po prostu czesc ludzi robi silnik + wlasnie rzeczy odpowiadajace za grafike, wyswietlanie, shadery itp. Ew. firmy po prostu to kupuja Czesto to magia low levelowa.
A reszta po prostu sklada swiat z klockow. (cos jak zabawa w Unity, ew w Unreal Engine). Jedno i drugie wymaga zupelnie innych umiejetnosci. Dochodza tez stanowiska typu level designer, testerzy, graficy, dzwiekowcy i mnostwo innych.

Silnik z GTA: https://en.wikipedia.org/wiki/Rockstar_Advanced_Game_Engine

Mysle ze mozesz tez przejrzec ten kanal:

Co do wymagan na moim q6600 + GTX 280 juz GTA 4 sie scina, i to do tego stopnia ze stwierdzilem ze nie bede gral az nie zmienie komputera by sobie nie psuc :)

5

Każdy piksel składa się z trzech podpikseli, a więc można go opisać trzema liczbami (kolory R, G, B). W FullHD mamy ok 2 megapiksele, czyli ok 6 mln podpikseli. Generowanie 60 klatek na sekundę to generowanie 360 mln podpikseli na sekundę. Wydajność GPU to dajmy na to 3.6 TFLOPS, czyli 3.6 bln operacji na sekundę. To daje budżet 10 tysięcy operacji (przy założeniu wykorzystania ALU w 100% co jest nierealistyczne) na podpiksel w każdej klatce obrazu. Sporo. Nawet jeśli wykorzystanie ALU to np 10% to dalej mamy budżet tysiąca operacji na podpiksel. Ponadto podczas generowania obrazu piksele mogą być renderowane wielokrotnie (np najpierw renderujemy drogę pod samochodem, potem cień pod samochodem, potem samochód, itd) i to dalej zmniejsza budżet. Jednocześnie unikanie przerysowywania pikseli wielokrotnie to jedno z większych wyzwań przy renderowaniu - jeśli zrobisz to dobrze to rysujesz mniej pikseli, które i tak zostaną zamalowane, więc możesz spędzić więcej czasu na pikselach, które zobaczy użytkownik komputera.

TFLOPSy podawane jako moc GPU dotyczą tylko shaderów. Specjalizowane układy do interpolowania tekstur to kolejne teraflopsy, ale tego już się nie wlicza do mocy GPU bo jednostki teksturujące są nieprogramowalne (tzn są na stałe wbitymi funkcjami, nie da się ich przeprogramować).

3

jak działają nowoczesne gry typu Wiedźmin czy GTA

Zaryzykuję stwierdzenie, że większość nowoczesnych gier (i większość przegranych graczogodzin) to wcale nie Wiedźminy ani GTA, tylko proste platformówki czy jakieś klocki i kulki na smartfony…

0

@Azarien Masz rację a młodszym polecam sobie "odpalenie" emulatorów pierwszych konsol czy komputerów i zobaczenie jakie "cuda" można było wyczyniać w assemblerze :-) Od 2002 roku mamy całkowitą zapaść innowacyjną w branży gier komputerowych za którą można obwiniać politykę globalnych korporacji,które poprzez wykupowanie licencji,patentów itd. całkowicie zniszczyły samo sedno tej "rozrywkowej" branży.
Nie chodzi mi o inżynierię programowania,ale o sposób w jaki jest kreowany produkt czyli tak naprawdę to usługa a 99% gier to pay-to-win :(
Techniki programistyczne z lat 40-tych XX wieku są innowacyjne ? Przecież każdy kto zna podstawy fizyki czy matematyki zdaje sprawę,że są to "napompowane" tzw."hajpem ang. hype" dziecinnie proste triki programistyczne oczywiście dla zawodowców :) "Jaranie się" tymże jest infantylne oraz sztubackie xDD Innowacyjne są 256-bitowe systemy operacyjne,które istnieją od 2007 roku,ale wiadomo komu i gdzie one służą :)

1

Programowanie gier to nieustanne kombinowanie i eksperymentowanie. Na dzień dzisiejszy, rozwój kart graficznych pod względem wydajnościowym trochę przystopował (w segmencie konsumenckim). Konsole też wcale nie pomagają temu stanu rzeczy. Gry jednak chcą być coraz lepsze, a jak wiadomo ograniczenia wzbudzają kreatywność.

Wspomniałeś o GTA V. Tam na przykład składanie klatki odbywa się odwrotnie do algorytmu malarza (najpierw rysowane są obiekty bliżej kamery, dopiero potem te dalsze). Niesie to za sobą jakieś konsekwencje, ale akurat w tej grze sobie z tym poradzono. Pewnie mieli ku temu jakiś powód, być może nie renderują już obiektów bezpośrednio zasłanianych - no ale to nie jest takie powszechne i proste, dochodzi spam promieniami i trudniejsza matematyka.
Ciekawym trendem jest przenoszenie większości zadań typowo dla CPU na shadery karty graficznej. Np. taka roślinność w grach, dajmy na to krzak - renderowanie lasu czy łąki z dziesiątkami takich obiektów to pełno draw calli nawet z instancingiem. Zamiast "stawiać obiekt", lepiej zapisać informacje że on tam jest w tablicy, następnie taką tablicę wrzucić do shadera jako teksturę i za pomocą takiej tekstury i "odrobiny" magii tworzyć roślinność bezpośrednio w shaderze. Ostatnio oglądałem jak shaderami generowano oddalony tłum ludzi wraz z animacjami (właśnie chyba w Uncharted, czy w tych nowszych Assasins Creedach).

No i tak jak wspomniał wcześniej @WhiteLightning, studia gier kupują gotowe technologie od innych firm. Wiem, że np. Rockstar Games wybuliło kupę pieniędzy na system animacji do swoich gier. Nie mogę znaleźć gdzie o tym czytałem :P

0

Pustota koderów gier "z wysokiej półki" po prostu poraża :) Zamiast programować w assemblerze i "wyciskać siódme poty" z tego co jest cały czas jest gonitwa za "uciekającym króliczkiem",którym jest oczywiście bogini Mamona :-)

1
kobuz80 napisał(a):

Pustota koderów gier "z wysokiej półki" po prostu poraża :) Zamiast programować w assemblerze i "wyciskać siódme poty" z tego co jest cały czas jest gonitwa za "uciekającym króliczkiem",którym jest oczywiście bogini Mamona :-)

Wielokrotnie więcej zyskałbyś z liniowego skalowania na 10 rdzeni niż z optymalizowania w asemblerze, które trzeba powtarzać dla każdej nowej architektury CPU.

0

Po co w ogóle babrać się w architekturach jak można stworzyć system operacyjny na potrzeby gry,który "obejdzie" wszelkie "ustrojstwa" ?! Od czego są RAM-dyski oraz wirtualizacja ? To są "sztuczki" z 1990 roku :)

0

Nie taniej kupić PS4Pro za 900 zł ? Oczywiście chodzi mi o granie w GTA V :)

0

@kobuz80: Jak masz pomysł to zaimplementuj. Pokaż że ten pomysł ma sens.

0

Tylko po co jak to sztuka dla sztuki ponieważ 90% użytkowników komputerów/konsol/smartfonów wykorzystuje może 30% ich możliwości ?

0

A mają jakiś obowiązek by wykorzystywać inny % ich możliwości? Fiata 126p też wykorzystałbyś na 100% jego możliwości?

0

@kobuz80 SteamOS po części miał być takim systemem dla gier. Ostatnio jednak wszystko sprowadzało się do tego, że walczyli z opóźnieniami np. dźwięku - których, np. na Windowsie aż takich nie doświadczysz, a na czystym Debianie o dziwo tak. Dla renderingu rewolucją miał być przenośny Vulcan. Można już w nim pisać, ale czy widziałeś, żeby jakieś AAA na niego postawiło? Jest tak dużo zmiennych, których nie wziąłeś pod uwagę, że to się w głowie nie mieści :P

0

Przecież GTA V na PC działa całkiem dobrze w porównaniu z GTA IV. Nie trzeba konsoli do płynnej rozgrywki.

0

@Garen_eye Żadnych cyfrowych dystrybucji,zero gro-usług a taki świat istnieje,ale po co tłumaczyć oczywistości ludziom,którzy myślą,że istnieje tylko Windows :)

0

Odnośnie programistycznych niausnów programowania gier to polecam poczytać Factorio Friday Facts tam jest mnóstwo ciekawych informacji, od optymalizacji (rzędu kilku procent, grzebanie w wątkach, itp) poprzez rendering do rozkmin nad UI.

0

Dzięki za fajne odpowiedzi.

Tak sobie myślę, że game devów sporo ostatnio się narobiło.
Jednak większość nie może zdać sobie sprawy, że Unity się samo nie zrobiło. Bekę mam z takich ludzi, co myślą, że Unity stworzył Bóg siódmego dnia.

2

a ktos tak mysli? czy rzucasz slowa na wiatr zeby sie wywyzszyc i miec beke z blizej nieokreslonej grupy ludzi

0

Pewnie już wielu widziało, ale polecam ten film:
https://www.youtube.com/watch?v=g18GgD-SNzM&t=1s

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