Transkrypcja
Wprowadzenie do dyskusji i Starfield
Cześć Wojtek.
Cześć Michał. To co? Zaczynamy, ale o czym? Zacznijmy od tego „Starfielda”, co to miało być i miał być ograny, nie? Się wygadaliśmy, że ten, że będziemy go ogrywać.
Nie no, chyba nikt nie obiecał. No, mówiliśmy, że premiera będzie.
No i była.
Tak jak nagrywamy, to akurat dzisiaj była premiera w nocy, więc jeszcze nie zdążyłem ograć. Przepraszam bardzo, a nie chciało mi się dopłacać za wersję Premium Edition 150 zł.
No bo wiadomo, sprawdzony wzorzec.
Tak, pattern z gry (grzech nie zastosować). Tylko tutaj chyba to nie było użyte, żeby rozładować ruch, tylko żeby naładować kieszenie.
Też dobry powód.
Też dobry powód.
No ale ten, ja też nie grałem w to i tylko właściwie obejrzałem recenzję, może z półtorej, także można pohejtować coś tam trochę, leciutko, nie?
No można.
Mam wrażenie, że nie posłuchali naszego podcastu ostatniego.
Gdzie moje tysiąc planet?
No właśnie. Siedemset maksymalnie.
I to w dodatku pustych.
Nie, no tam są jakieś tam takie, znaczy są takie bazy, co się lubią powtarzać tu i ówdzie. No to to jest w ogóle właśnie ten gość, co recenzował, to powiedział, że tylko kilka miast jest takich dużych, nie? A ja to tak, sądząc po opisywanym rozmachu i twoim entuzjazmie, to myślałem, że tam będzie się roić.
Nie wiem. To jeśli tutaj trochę zmyliłem, to to przepraszam, ale rzeczywiście, tutaj jakbym to chyba nikt się nie spodziewał, że to będzie, będzie sto planet, które będą gdzieś tam wręcz niezrobione i będzie sto miast, w każdym trzydzieści questów. No to na takie coś to nie ma co liczyć, bo to jest jednak…
Słyszałem, że są takie algorytmy generowania tych tam, na podstawie seed’a. Mogli wziąć odpowiedniego seed’a, cyk, wrzucić w generator pseudo-losowy i mają miasto.
Generowanie zawartości w grach
Ja myślę, że oni znają te algorytmy, że to chyba to chyba nie są ludzie, którzy by nie wiedzieli o takich rzeczach, ale jednak chyba to jednak nie jest takie proste, tak coś czuję w kościach, że jednak wygenerowanie świata, postaci, spójnych questów, nagrania dialogów, bo to wiadomo też…
Albo wygenerowania.
Albo wygenerowania. No, na razie jednak się częściej w sumie nagrywa. To też jest dużym problemem generalnie w open world’ach i tego typu grach, że jednak nagrywanie dialogów jest mocnym ograniczeniem w ogóle do takich dynamicznych właśnie sekcji dialogowych. Czasami stosujesz na przykład też trik, że nie nagrywa się głosu głównego bohatera, na przykład w „Baldur’s Gate 3” główny bohater jest niemy i nie mówi nic. Tylko swój tekst jakby klikamy, że chcemy powiedzieć to, ale główny bohater nic nie mówi. To podej…
No bo jeśli weźmiemy pod uwagę, że tych, tych dialogów z postaciami, których jest masa, jest, jest naprawdę ogromna liczba. Każdy jeszcze może się wiadomo, rozgałęziać w jakieś pod-logiki. Część z nich nawet może większość graczy nie zobaczyć, bo wiadomo one są zależne od parametrów, od rzutów kośćmi w „Baldur’s Gate 3”, pewnie mniej. Więc wiadomo, no to są koszty, które no gdzieś tam pewnie czasami trzeba przyciąć. Generowanie, no podobnie. No tutaj tak naprawdę w latach 90. był taki moment też, że niektórzy twórcy mocno zachłysnęli się właśnie generowaniem poziomów i ogólnie map. Wiadomo, że wtedy też ta grafika była prostsza znacznie, więc jakby tam ówczesne wygenerowane poziomy były w ogóle bardzo proste i bardzo powtarzalne, ale też wszyscy już wtedy sobie zdali sprawę, że to nie jest tak prosto człowieka oszukać takim wygenerowaniem, bo jednak ludzie są znakomicie przystosowani do wykrywania wzorców, pattern’ów, wykrywania powtarzających się rzeczy. No to jest jakby wpisane w naszą naturę, więc od razu widać, od razu widać dosłownie.
No, no najprostszy przykład. Na przykład, po prostu przykład na przykład bardzo często właśnie generowanie wody też często robią z powtarzalnych fragmentów i jak w wielu grach widzieliśmy, że ta woda składa się z jakichś takich szachownicy powtarzalnych elementów, no już tak klasyka, poczynając od Age’a…
To było wszystko. Jak widać, obecnie już ta woda wygląda znacznie lepiej. To już nie jest…
W drugim już wyglądała tak, że już, już było mniej tak kreskówkowo, powiedzmy. Dobra.
Tak, no tak, chamsko generatywnie, nie? Ale w trójeczce to już całkiem przyzwoita była.
Tak, ale, ale czasami się odbicia, oświetlenie jeszcze takie średnie.
Tak, to już jest w ogóle refleksy na wodzie, to w ogóle inna sprawa, ale też właśnie jeśli mamy jakiś szeroki otwarty teren właśnie w grach takich z otwartym światem, też czasami jak spojrzymy na horyzont, jakieś wysokie góry, no to widać, że czasami te klocki powtarzające się, jakieś układy elementów, no jednak to nie jest taki naturalny krajobraz, który widzimy.
Wiedźmaku był naturalny. Mogłeś popatrzeć daleko i było widać, co tam, co tam jest. No był bardziej na pewno urozmaicony, rzeczywiście. Może te elementy były mniej zauważalne. Wiadomo, to się różni z gry na grę, to nie jest tak, że że zawsze to da się łatwo wykryć. No ale jednak to, to, bo losowanie takich, takich obszarów też nie jest, map nie jest jednak takie proste chyba, jak się mogą by wydawać. Więc tutaj w „Starfieldzie” no, ja jeszcze nie hejtuję.
Ja tam też nie. Ja jeszcze nie hejtuję też. Też jeszcze też tylko oglądałem recenzje i czytałem pierwsze wrażenia i Let’s Play’er, więc pewnie, pewnie sobie jeszcze pogadamy, jak sobie pogramy.
Losowość i statystyka w algorytmach gry
Pewnie tak. W każdym bądź razie, no ale to jest dobry przykład na pewno na temat rzeczy, o których rozmawialiśmy, czy się generowanie losowych jakichś rzeczy, światów. Więc to też, też wpisuje się jakby te tematy, które poruszaliśmy i jeszcze porozmawiamy, bo właśnie tutaj mamy tematy na dzisiaj, dokładnie, które, no, bardzo, że tak powiem, dużą część tych takich fajnych rzeczy wizualnych i nie tylko w jakiś sposób pokrywają. Dokładnie tak.
No więc tak, skończyliśmy ostatnio na, nie licząc „Starfielda”, na omówieniu tych algorytmów, które tam mieliśmy na liście. To były takie algorytmy wybrane z tych ciekawszych i chyba najciekawsze tak właściwie. Tak z programistycznego czy wręcz z punktu widzenia, to jest ich połączenie, na przykład w takim agencie, gdzie faktycznie można było sporo rzeczy upchnąć i ten agent coś tam musiał robić. I skończyliśmy na losowości, która fajnie jak jest i fajnie jak jest fajna, bo to nam może, w sensie nam, w rozumieniu twórców gry, to może zaoszczędzić jakieś tam części pracy, a dla odbiorców gry może wygenerować bardzo fajne efekty, które są…
Urozmaicić, tak. Raz, że to urozmaica, a dwa, że czyni takie wiarygodne nawiązania do rzeczywistości, bo, bo chociażby te kursy walut czy czy co tam mamy, co? Dla surowców ceny surowców, czy też jakieś co tam jeszcze były rozkłady, na przykład tego strzelania czy ogólnie jakieś tam rozkłady cech, chociażby. A właśnie, przytoczyliśmy generowanie mapy, de facto, nie? Także to fajnie działa. No i tutaj nawiązując do tego bezpośrednio, w sensie do tej klasy zagadnień, można by jeszcze dopowiedzieć, że statystyka czasem nam przychodzi na pomoc jako taka w rozwiązywaniu problemów, bo te nasze algorytmy wiadomo, że oszukują i ważne, żeby dobrze oszukiwały.
Określenia powraca, tak. No, sorry, ale no jeszcze mi nie przeszło. Pamiętam jeszcze Age of Empires 25, nie? Jak babcię kocham. No, poszedłem na tą bazę, a oni tam już mieli rydwany. No to nie miałbyś urazu.
No tak. Ale więc taki algorytm, który ma oszukiwać, wystarczy, żeby oszukiwał wystarczająco dobrze. Po prostu, żeby osiągnąć ten efekt, czyli na przykład żeby jakiś procent przypadków, odpowiednio duży, pokrywał. Żeby daleko nie szukać, z reguły 20–80, być może, nie? Więc, no, nie musimy dbać o to, żeby ultra-wyczesany algorytm, czego tam, no nie wiem, wymyślania tych goli dla, golów dla agentów, żeby on faktycznie super poprawnie za każdym razem to nam strategię wyrysował. Bo ona może być wyrysowana wystarczająco dobrze na ten moment, na przykład, nie? Tak żeby powiedzmy, ileś tam zagadnień pokryła z tych bieżących jakiś tam… doradca sobie sprawdzi, że, że ten, że właśnie ten, ta propozycja ścieżki radzi sobie wystarczająco dobrze z pewnym tam procentem dla jakiś tam przypadków testowych, na przykład. I to już jest ten nasz algorytm, który stosujemy. A jak się coś zmieni, to po prostu przeliczamy.
No dokładnie. Dalej, przybliżenie obliczone wystarczająco szybko jest lepsze niż już jakieś długie wyliczenie niby dokładnej wartości, która za ułamek sekundy już tak nieprawidłowa. No właśnie.
Logika rozmyta i testowanie
Jeszcze jest taka jedna klasa algorytmów, ale to jest tak mętnie opisane w literaturze, że tam wszystko jest rozmyte, no nic, nic nie jest tam na pewno stwierdzone, nawet w nazwie jest mętnie, bo to jest logika rozmyta. Więc, co to można powiedzieć konkretnego o tym? Samo zagadnienie jest bardzo ciekawe, bo tak, jesteśmy przyzwyczajeni, żeby w jakichś warunkach podawać, że coś ma być równe siedem, na przykład, nie? Albo że mamy mniej niż trzy czegoś w ręce albo coś, coś w ten deseń, czyli takie precyzja, precyzja, tak. Taka precyzja numeryczna, co zresztą i pewnie w algorytmach generowania grafiki jest na porządku dziennym i jakiś tam innych upiększaczach.
Tak, więc logika rozmyta to jest coś, co stoi w opozycji do tego, czyli na przykład mamy tam, tam operujemy na cechach, które z definicji są rozmyte, w jakimś tam zakresie się znajdują i wartość, która wpada w ten zakres, możemy powiedzieć, że jest w tym zakresie z pewnym prawdopodobieństwem. Czyli na przykład, jeżeli mamy wykres tego zakresu w formie takiego trójkącika, ząbka, to nie dość, że możemy mieć na tej samej osi tych cech ileś tam takich ząbków dla różnych wartości tej cechy, to jeszcze dana wartość konkretna, ta, która nam wychodzi z jakiegoś tam parametru, z czegoś, nie wiem, zmierzyliśmy coś, wyciągnęliśmy ze środowiska jakąś tam wartość, to możemy stwierdzić z jakim prawdopodobieństwem, w której, w którym z tych przedziałów ona leży. Więc jak bardzo mocno ona spełnia tą daną cechę? Czyli na przykład, że jeżeli byśmy rozpatrywali odległość od czegoś, to można powiedzieć, że coś jest na przykład dość blisko i jednocześnie, że jest dość blisko na potrzeby jakiegoś tam celu, który jest, ono akurat potrzebne, nie? Czyli sprawdzamy sobie, czy już się mieścimy w tym „dość blisko” tego naszego celu. Jak jesteśmy w „dość blisko”, to wiemy, że przynajmniej w dobrą stronę idziemy, nie? To jest mniej więcej coś takiego, ale nie chciałbym się tu się zagłębiać, bo to jest bardzo niejasne, nieprecyzyjne, takie rozmyte, jak widać, jak widać, nie?
Tak, już tak, chichy na bok, to jest bardzo fajna rzecz, bo naprawdę ciekawe z tego rzeczy wyniki, rezultaty z tego wychodzą, bo to narzędzie pozwala klasyfikować dość niewielkim nakładem kosztów jakieś cechy, które wymagałyby no innych, nie najprostszych rozwiązań, żeby, żeby podobną klasyfikację zrobić. Więc tu to chyba ogólnie tak właśnie do klasyfikacji, czyli do problemów z jakimś należności, do jakiegoś przynależności, tak. Dokładnie. Przy czym można tutaj przynależeć do wielu zbiorów, bo na przykład jak mamy sieć neuronową… Sieć, jak neuronowych nie mówiliśmy chyba zbytnio, bo jakoś tak niespecjalnie się tutaj game dev’owi rozpisują o jakichś sieciach, ale sieci neuronowe, które były tam oryginalnie używane bardzo mocno do klasyfikowania przestrzeni rozwiązań, to na przykład one, te algorytmy lubią sobie bardzo ściśle sklasyfikować coś w swojej klasie, nie? Czyli przestrzeń rozwiązania jest podzielona na sektory, no i ten nasz wektor wejściowy dla sieci znajduje się w którymś z tych sektorów i chyba nie… Wydaje mi się, musiałbym do literatury sięgnąć znowuż, czy akurat jest łatwo przy tych zagadnieniach przypisać daną cechę do więcej niż jednego zbioru jednocześnie, czyli… No pewnie tak, jeżeli tam sobie tak skonstruujemy tą przestrzeń, żeby, żeby jakoś zależności między cechami uwydatnić, to może by tak było, nie? Natomiast tutaj w zagadnieniach logiki rozmytej to wychodzi takie jakby naturalnie, bo my tylko przystawiamy te przedziały, w których, w których dana cecha jest z jakimś prawdopodobieństwem spełniona.
No. No i co? I już tyle. I to tyle. Teraz napchajmy w tego agenta tej logiki rozmytej, wsadźmy go na mapę z mapami wpływu, siatką nawigacyjną tematyczną, dynamicznie modyfikowaną, żeby można było portale robić i w ogóle, żeby można było lepszym tam. I dziwmy się, że nie działa.
Nie, no, to będzie działać, bo my to oczywiście zrobimy w ewentologii, a to się perfekcyjnie debuguje, tylko asynchronicznie. No właśnie. Ale to pewnie też trzeba przetestować, sprawdzić, jak to…
To nam gracze przetestują. Co nie?
No właśnie. Testujmy na produkcji.
Jest rzeczywiście. Zrobimy relaksację. To testowali. To byśmy nie wpadli na połowę tego, co oni.
No, to wiadomo, no, jednak ciężko odwzorować zachowanie iluś tam set tysięcy graczy, jak, jak już gra wychodzi. Więc wiadomo, że to jest najlepsza baza testowa, ale no tak, to może być. Właśnie w poprzednim odcinku zrobiliśmy takie spostrzeżenie, że, że ten agent, którego upchaliśmy już te algorytmy umówione, już był wystarczająco sprytny, no i trudny do testowania. Więc jak mu dołożymy jeszcze więcej, to on będzie jeszcze sprytniejszy. Wiadomo, że tam, że trzeba będzie się do tego przełożyć, nie? Ale zastosujmy do tego może techniki znane i lubiane gdzieś tam z naszych trudów, czyli po prostu popiszmy do tego testy, już nie zważając na to, co mówią koledzy na forach, nie?
No tak, ja tam nie zważałem. Już wtedy to mówili. No to już nawet poruszaliśmy zdaje się troszkę testowania, nawet takiej unit testowanie, tak?
Też taki sztuczny, tej właśnie. Dlatego to wrzucam teraz jako takie przypomnienie, że jednak da się to ogarnąć. Nie taka ewentologia, bo tutaj w wielu tych przypadkach zahaczaliśmy o jakieś eventy. Czy to była maszyna stanu sterowana jakimiś eventami do przełączania w ogóle stanów. Czemuż by nie? Może tak być. Tak naprawdę, to każdy w ogóle odczyt wejścia z naszego kontrolera, na przykład w grze, to też jest rodzaj eventu, zresztą to, to jest implementowane przeważnie jako event, ale jakbyśmy mieli aktywne odpytywanie urządzeń peryferyjnych, no to, to byśmy generowali właśnie z tych odczytów takie eventy, nawet jeżeli by to się eventem nie nazywało. Po prostu coś się zdarzyło, sygnał, tak, który nam coś zmienia. Więc, no, jak mamy taką ewentologię, to z continuous integration też znamy sposoby testowania tego w bardzo, że tak to ujmę, w bardzo deterministyczny sposób. Czyli nie będzie tutaj niczego, że możemy sobie zażądać, żeby taki, a nie inny, taka, a nie inna sekwencja tych naszych zdarzeń odegrała się w czasie. Jeżeli się nie odegrała, to znaczy, że coś mamy nie halo, no bo to nie może być tak jak z Dawką, że raz ci się wykrzaczy na garbage collectorze, innym razem przejdzie.
No tak, tak, tak. Może stabilność jest ciut większa. Jak mamy dobrego seed’a, to zawsze jest tak samo. No, ale mamy też jeszcze tutaj całą masę dodatkowych zagadnień.
Boty, cheaty i machine learning w grach
Które, które niekoniecznie, dobra, one, one wzbogacają content, ale właśnie jeszcze, jeszcze o tych botach może byśmy coś tutaj podywagowali, nie? Bo ten taki bot właściwie, dobra, to już zrobiliśmy wstęp do takiego bota, który, to wstęp, którym to wstępem był sprytny nasz agent. Przy czym taki bot to wcale nie musi być aż tak skomplikowany, nie? Wystarczy, żeby robił jakąś jedną rzecz tak, jak trzeba. No bo ty ogólnie z jednej strony mamy właśnie boty jako naszych tutaj przeciwników czy jakieś tam byty, bytem w grach, ale też z drugiej strony boty możemy właśnie użyć do takiego bardzo głębokiego i w różnych przypadkach testowania. Czy to poziomów, czy ogólnie jakiś sekwencji gameplay’owych, no bo też często właśnie podaje się przykładowo właśnie testowania odpalenia na iluś tam, na ilość godzin na jakieś tam mapy, zapuszczamy na niej boty, które sobie między sobą walczą, no i sobie sprawdzamy, kto przeżył, tak. Sprawdzamy balans rozgrywki i sprawdzamy, czy, czy mapa poprawnie zawsze się, że nie mamy jakichś dziur, że ktoś tam gdzieś nie utyka, no, wszystkie te rzeczy możemy sobie sprawdzić, odpalając odpowiednią ilość tych testów, ilość powtórzeń, ilość botów i sobie tylko obserwując, jak to tam się wszystko zachowuje.
To jest dość popularne podejście w takim testowaniu już można powiedzieć integracyjnym. No to jest taki nasz odpowiednik klikania po interfejsie, bo jak już faktycznie te boty sobie chodzą po tej naszej grze, no…
Wyglądać tak, tak.
To, to już, to tak jak Selenium chodzi po naszej aplikacji, de facto, tak. No to już jest ta ostateczna warstwa, którą widzi użytkownik, no, ten bot, no, użytkownik też często tego bota widział, jak sobie gramy z tym botem, ale jednocześnie powinien zachowywać tak samo się, jak ten gracz, więc zasady powinien testować te same mechaniki i te same ograniczenia, po to właśnie jest chyba skryptowany, mniej więcej jakoś tam…
Skryptowanie to jest jedna rzecz, ale żeby realizował to, co gracz, druga właśnie rzecz, to jest, no właśnie, to chodzenie po tych rzeczy i testowanie tych wszystkich przypadków kontra zwykły tester, który po prostu gra w grę i próbuje to samo robić. Bo to jest analogicznie do manualnego testera aplikacji webowej, który wiadomo klika sobie, chodzi kontra Selenium, które odpala się co każdego commita, sprawdza niezmiennie te same rzeczy. No, jest taką pierwszą jakby warstwą jakieś tam weryfikacji, czyli to by była taka warstwa, która steruje nam tak naprawdę rozgrywką, trochę nam zastępuje gracza na ten etap testowania takich rzeczy, które możemy takimi, takimi rzeczami jak właśnie boty i ogólnie takie sprawdzanie właśnie podstawowych mechanik. Więc tak i to tutaj wypada przypomnieć, że ziomale od Age’a właśnie coś takiego zrobili w pierwszym, bo to jest wzmiankowane w tym artykule motorem, którym wspominaliśmy, że i to akurat mają w postmortem swoim jako taki swój sukces.
To nie dziwię się, bo też bym napisał. No w tamtych latach to na pewno było dość nowatorskie w ogóle, czapki z głów, nie, za taki pomysł. Dzisiaj to się wydaje naturalne, że w ogóle dziwne by było, jakby tego nie zrobić. Natomiast w tamtych czasach faktycznie to na pewno było nowatorskie, najbardziej, że już jakiś czas po nich jeszcze ludzie się wzbraniali przed tym w ogóle, przez jakimś testowaniu, już nie mówiąc o tym, żeby zasadapować sobie taki scenariusz i de facto zapuścić symulację, niech tam się kręci, nie? A oni to zrobili i tak jak opisują w artykule, zrobili to na grze multiplayer dla ośmiu graczy, gdzie osiem komputerów właśnie miało zapuszczone te boty od graczy i rozgrywkę monitorowały dwa jeszcze dodatkowe, dwie dodatkowe maszyny czuwały nad tym, żeby tam wszystko dobrze śmigało. Także jak na rok 97 albo 90…
Nie, w 97 wyszedł pierwszy. No to czapki z głów. Faktycznie to chyba też masz odpowiedź, czemu to nie zawsze się działo. Bo jeśli to trzeba też mieć infrastrukturę do tego, plus wiadomo, jednak pewnie w pewne wsparcie w samej grze, w implementacji tego, więc to pewnie nie jest takie…
No tak, tak, ale to już wspominaliśmy, już o tym, tak. To nie było jakoś tam tak wyszczególnione bardzo silnie, ale pojawiały się wzmianki z tego, co pamiętam, o tym, że dobrze jest sobie, przepraszam, przygotować wsparcie, czy to w silniku, czy, czy w narzędziach gry, żeby można było właśnie takim scenariuszem gdzieś tam się wstrzelić i zapuścić ten scenariusz od tego momentu, co jest, no, nieodłączną częścią takich testów, tak, automatycznych.
No tak, no ale mamy takie boty. Te boty coś tam sobie robią. I jakby taki na przykład sprytny gracz, evil gracz, taki chciał sobie swojego bota napisać, nie? To co wtedy by się stało?
Jeszcze z większym oszukaństwem. Niż od kiedy są gry, no to są też cheaty, kody, czy to przewidziane przez autorów. Teraz to już może rzadziej. Już nie spotyka się chyba w tym, w „Starfieldzie” działają kody ze „Skyrima”.
A nie wiem, nie wiem. Chyba ten, ten ziomek, co, co go oglądałem…
No, możliwe, możliwe, ale generalnie, czy to przewidziane przez autorów, czy nie, no to jednak te kody czy oszukaństwa różne istnieją. No i też, jak to, jak to twórcy gier też musieli jakieś zabezpieczenia przeciwko takim graczom wprowadzić. Już oni tam na wprowadzali. Wiadomo, że to też głównie w grach jakieś tam online’owych, no bo może najbardziej sporządzane, tak. Bo kto, to, że osoby ktoś zhakuje swoją lokalną partyjkę, kogo to interesuje, nie ma to żadnego znaczenia.
Kolegów tylko, tak. Kolegów ewentualnie, ale rzeczywiście, jeśli mówimy o grach, no, już e-sportowych, to w ogólności wiadomo, no tak, ale tam są inne stawki. Ale nawet takie zwykłe online’owe, czy to strzelanki, czy, czy strategie, no, jednak jakieś tam wykrywanie właśnie cheaterów, no, jakiś mechanizmy muszą do tego istnieć. No i tutaj też sztuczna inteligencja z czasem też weszła na to pole. Wykrywanie jakiś wzorców zachowań, jakichś nieoczekiwanych, nieoczekiwanych właśnie, no, wzorców mówię. Na tym też takie wykrywanie oszustw polega w innych sektorach, na przykład wzorce jakieś transakcji w systemach finansowych. To są dość podobne, podobne mechanizmy, gdzie możemy sobie, na co widać w filmach sensacyjnych. No to widać, śledzą transakcje przez siedemnaście banków w osiemnastu krajach, tak.
Tak. No, to się dzieje troszkę bardziej zautomatyzowany sposób, oczywiście, nie? Bo to musi na ekranie tak leci taka kreska: „Ding! I tak widzę, że stąd przelot”. Tak samo jak zawsze szukamy podejrzanego w bazie danych, to muszą się zdjęcia wyświetlać, mimo że tych podejrzanych jest milion. To zawsze mamy zdjęcia, żeby wam szybciej było, bo się zatrzymuje na tym znalezionym.
No, bo inaczej co? Bardzo optymalne są te systemy ładując milion zdjęć podejrzanych, ale robią to jeszcze w takim fajnym tym okienkowym zawsze czymś, co nijak się ma do czegokolwiek, ale jest fajne, no, bo to tylko nakładka w React napisana, więc w React wiadomo.
A więc tak, no to jest jeden, jeden z wykrywania właśnie cheatów i generalnie, no, machine learning w nich ogólnie niespecjalnie można powiedzieć jest aż tak popularny, czy jakoś bardzo się przyjął w grach. Głównie właśnie przez to, że w początkowych swoich, może powiedzieć, jakby okresach nie było prosto zasadapować sobie jakiegoś takiego środowiska, gdzie łatwo można było sobie jakiś wzorzec wytrenować. Też musi być rozmiar tego musi być też odpowiedni rozmiar. Więc jakby ogólnie takie machine learningowe koncepty w grach nie były aż tak super używane właśnie też przez to, że te prostsze algorytmy dawały również skuteczną szansę na zrobienie czegoś ciekawego i tutaj jakby też nie było potrzeby zaprzęganie jakiś takiej skomplikowanych rzeczy, ale generalnie gdzieś to jest używane i czasami twórcy też mocno się chwalą takimi rozwiązaniami. Tutaj chyba jednym z bardziej znanych przykładów są Drivatary z „Forza Horizon”. To chociaż raz zagrał w „Forzę”? No to tam nawet w menu jest sekcja odpowiednia.
Teraz no i generalnie twórcy też się mocno chwalą, że twój styl jazdy podobno jest wykorzystywany do nauki właśnie tych wirtualnych kierowców, którzy później właśnie ścigają się razem z tobą w wyścigach. Do diaska! Więc no już od kilku części to rozwijają, więc gdzieś może te słowa nawet nie są wielkimi przechwałkami, gdzieś to może jest, ale faktycznie to czuć. Ciężko powiedzieć. Obecnie mam wrażenie, że wyścigi komputerowe cierpią troszkę na taki syndrom właśnie takiego troszkę udawanej sztucznej inteligencji. Często jestem tak zwany rubber banding, czyli niezależnie od tego jak daleko jest przeciwnik, to jeśli już zbliżamy się prawie do końca naszego wyścigu, on zawsze bardzo szybko nas dogoni, żebyś dał złudzenie i wygrzać presję na tobie.
Ciśniesz na plecy, że ciśniesz na plecy, mimo że ma gorszy samochód i tak naprawdę już nie powinien zdogonić, ale siedział w krzakach albo w ogóle jestem spadł nie wiadomo gdzie, ale już widzimy na mapie, że jakaś kropeczka się zbliża i w jaki sposób.
No to prosto, po prostu zwiększasz XR na kropeczce i ona się tam zlicza, nie?
No tak, tak, więc to jest takie troszkę lekki scripting tutaj występuje, żeby, żeby spowodować właśnie, no, to taka jak na gumce, jak to, jak to się może powiedzieć po polsku też określa, że ci gracze, nasz, i ścigający się komputerowi, no, tak nie do końca chyba się ścigają na tych samych warunkach, co my, czyli to jest tak raczej dopasowane do pewnego procenta, statystycznie powiedzmy, tak, coś, coś w ten deseń, o czym mówiliśmy na początku. To nie jest takie ewidentne, to nie jest tak, że w każdym wyścigu to widać. Widać, że tu są, tutaj są troszkę bardziej skomplikowane algorytmy, niż w każdym wyścigu gracza dościgni zawsze nas 30 sekund przed meczem, przed metą. To jest troszkę bardziej subtelne. Nie zapominajmy, że tutaj też nie wiadomo ile logiki nie idzie wcisnąć. No, bo to jest już upchane logiką wszelkiej maści, nie? Więc no, dociążać jeszcze takie algorytmy, w sensie dociążać pętlę gry jeszcze takimi wynalazkami srogimi, to już by było nie zawsze wskazane.
No tak. No, tutaj pewnie, pewnie ten, tu akurat ten Drivatary, ale pewnie w innych grach też coś jest podobnego gdzieś tam tu i ówdzie używane. No, tutaj akurat w „Forza Horizon” już kilka części tego było i naprawdę sporo widać, że starałem się w to wrzucać, więc podejrzewam, że ten model tutaj jest może, może być troszkę bardziej rozbudowany. Mi się wydaje, że właśnie takie automatyczne uczenie, jakieś maszynowe, albo przynajmniej jakieś klasy algorytmów, lepiej klasyfikujących przestrzenie, to bardziej by się do tego wykrywania oszustw nadawały jednak, nie? Czyli w sensie widzę większe pole zastosowań do tego, bo, no, bo to faktycznie, jeszcze wracając do tego tematu, tak jak wspomniałeś, jeżeli ktoś tam sobie Age’a zepsuje lokalnie, to się może świat nie zawali, ale jak, jak taki przypadek zaistnieje na jakimś serwerze MMO, wyobraźmy sobie w WoW-a, który został, no, po prostu zhakowany, nie? I pozwolił na to i się świat rozsypał. No to to już jest klapa. Setki, jeśli nie tysiące użytkowników w tym momencie sobie ciupią i nagle im się cała gra posypała, nie? To i jeszcze za to płacą w ogóle właśnie, zwłaszcza jeśli mówimy o płatnych grach, to jest, to jest ten problem. I może tutaj do akurat zaczęliśmy właśnie tak z grubej rury, że, że algorytmy sztucznej inteligencji do wykrywania takich cheatów oszust, ale może coś prostszego by pozwoliło. Coś trochę w sensie o prostszej klasy algorytmy, niekoniecznie, które byśmy podciągnęli pod sztęp pod sztuczną inteligencję, tylko właśnie takie jakieś prostsze klasyfikatory czy wręcz wykrywanie po prostu jakiś pojedynczych warunków, nie?
No, nawet na początku tutaj powinno się znaleźć coś takiego jak walidowanie tego stanu gry, z którym przychodzi ktoś do takiego serwera, gdzie właściwie inaczej rzecz ujmując, w ogóle serwer powinien dbać o to, żeby tylko on powinien być źródłem prawdy, nie? To stan gry wychodzi od niego i to jest właśnie w takich zagadnieniach cheat detection czy ogólnie radzenia sobie też z oszustwem w takich aplikacjach klient–serwer, to jest jako taki, no, niezbędny element wręcz, żeby było to jedno źródło prawdy, żeby ono było zaufane. Bo nie możemy polegać na tym, co jak jest zreplikowany świat u poszczególnych klientów. Oni mogą sobie zreplikować go, jak chcą i mogą sobie na przykład tak jak w tych tam legendarnych cheatach, gdzie sobie można było zhakować swoje exe i zrobić sobie nieskończoną ilość zasobów.
No tak, tak, no, to takie coś nie ma szansy przejść, bo co z tego, że gracz sobie, że dany klient oznajmi, że ma tyle zasobów, jak serwer wie lepiej. No to jest dokładnie ta sama zasada, co w naszych biznesowych aplikacjach, czyli nigdy nie ufaj klientowi. I nie mamy na myśli klienta biznesowego, oczywiście, bo to należy, chociaż czasem pewnie też, ale klientowi w rozumieniu tego użytkownika. Bo to co sobie użytkownik, albo po prostu jego maszyny… Użytkownik może być tam, że tak powiem, Bogu ducha winny, a maszyna może być, w sensie wersja tego jego może być po środku, czyli zwykły atak man-in-the-middle. Czyli nigdy nie możemy, zawsze musimy to walidować, dlatego my też walidujemy jakieś tam rzeczy, które przychodzą w naszych rest’owych API i tak samo w grach.
Oczywiście. I tak samo w grach musimy, musimy też walidować ten stan gry, który przychodzi od klienta, bo to, że coś tam przychodzi w danym stanie, to nie znaczy, że to jest prawdziwa wartość, bo on gry, bądź jakieś jego komendy, na przykład, które on by chciał na tym stanie wykonać, a których nie może. Na przykład oczywiście on sobie założył, że ma o trzy rzędy wielkości więcej zasobu, a serwer jednak mówi, że nie bardzo. No to nie można tego wykonać. Nie? I na przykład można uprzejmie, tak sobie po cichu ignorować te jego rzeczy, ale można go też w którymś momencie wyciąć, żeby już więcej nie brudził, bo jeżeli jest jakoś za bardzo zbugowany z punktu widzenia serwera, to do widzenia, wypada i koniec. Nie ma dla niego ratunku. Nie ma rollbacku do ostatniego tego, ostatni znany i dobrej konfiguracji.
Sztuczna inteligencja generatywna
No, dobra. Przez już prawie trzy odcinki pogadaliśmy sobie o takich algorytmach sztucznej inteligencji, które pewnie mamy na myśli myśląc w ogóle o sztucznej inteligencji gdzieś tam w grach, albo które nam wydawało się, że są, lub powinny być, lub powinny być. Natomiast sztuczna inteligencja w grach jest też w różnych innych obszarach używana. Zwłaszcza ostatnio tak zwana sztuczka inteligencja generatywna, czyli generative AI. Coś, co też w naszym tutaj biznesowym świadku jakoś mocno zaczęło wybrzmiewać. Chyba wszyscy pamiętamy początek roku i eksplozję, czy to generowanych grafik, czy, czy GPT.
To nie jeden sobie w skrócie tekstury podrasował, tak, tak.
Więc tutaj jakby ta eksplozja tego narzędzi, tych, tego typu narzędzi i w ogóle tak zwanych large language model, jeżeli właśnie tych takich modeli językowych, które są wyuczone na bardzo dużych ilościach danych, które później mogą generować, wydawać by się mogło, inteligentne rzeczy, ale chyba jak już wszyscy po tych, powiedzmy, ośmiu–dziewięciu miesiącach od początku roku zobaczyliśmy, wyszło, że to jest nie do końca, nie do końca… może nie tyle prawda, tylko wydaje mi się, że chyba nie wszyscy, albo ogólnie mało kto zrozumiał, do czego tak naprawdę to służy i że to nie jest, to nie jest żadna wyrocznia, to nie jest prawda objawiona i że są jakieś tam podstawowe problemy w tych modelach, które powodują, że to nie może służyć do może encyklopedia GPT…
Dokładnie, o parametry słońca na przykład.
Dokładnie, no to jest ogólny problem też związany z tym, że te modele one jakby troszkę w swoich podstawach i w założeniach nie do końca mają koncept poprawności odpowiedzi, które generują, to raz. Ale na przykład takie modele językowe właśnie, nawiązując do czatu jako takiego, one są do innych celów stworzone, właśnie innych celów są nauczone.
Modele językowe i ich ograniczenia
Dokładnie, właśnie o to chodzi, że ten koncept poprawności jest ograniczony. Do tego mamy wszelkie problemy związane z tak zwanymi halucynacjami.
Czy to, co często napotkałeś i za co czat cię często przepraszał? „Przepraszam, przepraszam”. Na pewno uprzejmości to nie można mu odmówić.
Dokładnie. To jest chociaż jego zaleta, że jest uprzejmy. Jak się pomyli, to przeprosi. Za każdym razem. Za każdym razem. Ale to jest po prostu jakby pewna cecha tych narzędzi i jakby już chyba wszyscy zobaczyli, że, że to nie jest, nie można im do końca ufać. Jeśli mówimy o takich stricte zastosowaniach: „prawda–fałsz, powiedz mi tutaj na pewno, jak jest”. No bo wiemy, że to się nie do końca może wydarzyć. Natomiast gdyby je zaprząc pewnych, no właśnie, ograniczonych jakiś domenowych zagadnień, bo jak sama nazwa wskazuje, „generative”, czyli generatywne, generujące, właśnie AI ono znakomicie nadaje się do generowania rzeczy. I możemy generować nim rzeczy, które może nie do końca w ogóle mają koncept poprawności, może nie potrzebujemy mieć czegoś poprawnego. No na przykład te obrazki, czyli modele „DALL-E” czy, czy do generowania obrazków i ogólnie grafik, jakiś koncepcyjnych, jakiś właśnie, no, ogólnie wizualnej warstwy nadają się świetnie. No bo tutaj jakby nie ma konieczności, znaczy weryfikacja poprawności odbywa się wzrokowo. Po prostu widzimy, że ten człowiek ma sześć palców, czy ma pięć palców, czy ma dwie ręce, ale ogólną poprawność takiego obrazka oceniamy, nie?
Czyli wyszedł totalny Picasso, czy…
Dokładnie, da się patrzeć na to. Dokładnie. Więc tutaj jakby to jest jedna rzecz, gdzie możemy sobie coś z tego osiągnąć, no i wiadomo też generowanie innych artefaktów, czy to generowanie głosu. Tu już w ogóle się to bardzo fajnie sprawdza. Czy generowanie jakiś takich właśnie, no właśnie, do tych dialogów było tak?
Dialogów, czy jakiś właśnie szkicy scenariuszy, no i ogólnie właśnie obecnie w grach sztuczna inteligencja jest w takich kilku obszarach właśnie w kontekście generowania używana.
Remastery, remake’i i upscaling tekstur
Jak pewnie wiele osób zobaczyło, mamy ostatnimi laty bardzo mocny wysyp różnych maści remake’ów, remasterów, wersji ostatecznych, reżyserskich. Daleko nie szukać, tyle że już, że już nawet nie będą robić definitive edition do definitive edition.
Tak, tak. To oczywiście ma wiele powodów, dlaczego te wersje powstają. Powrót nostalgii to jest jedna rzecz, skok na kasę, to to jest druga. Ale trzecia…
Oj tam, dobry jest ten ostatni. Kasa nie zawsze musi być zła. No bo czasami warto sobie zobaczyć te gry w wersji podrasowanej i wtedy one wyglądają tak, jak my mamy je w pamięci, jak powinny. Jak byśmy zobaczyli w oryginale, to byśmy tak skrzywieni, że ja…
I po definitive edition potrafię zwykłego odpalić, starego i się nim cieszyć.
Są chlubne wyjątki, ale większość graczy jednak, jakby zobaczyła swoje wspomnienia, to pewnie, pewnie by nie ścierpiała. Pewnie tak.
Natomiast, jakby wracając jeszcze, dlaczego tak się dzieje, musiał też nastąpić pewien postęp i pewne pojawienie się narzędzi, które umożliwiają tego typu rzeczy. Bo jeśli sobie pomyślimy o jakimś remasterze czy czy innym remake’u, no to w większości przypadków poprawa następuje w warstwie wizualnej. No bo jakby mechanizmy jakieś tam sztucznej inteligencji czy rozwój scenariusza, fabuły… Sztuczna inteligencja to jeszcze gdzieś to możemy sobie poprawić jakieś wyszukiwanie ścieżek, to w wyżryku to zresztą miało miejsce. Poprawili trochę, tak.
Jakieś drobne rzeczy, oczywiście. Tak. Fabuły raczej się już nie tyka za bardzo, no chyba że mamy na myśli taką już gotową, jakieś pojedyncze mapy, scenariusze. No to, ale raczej nikt tutaj nie będzie za bardzo zmieniał nam fabuły i remasterował. Natomiast warstwa graficzna jak najbardziej i to stało się możliwe właśnie też dzięki narzędziom do upscalowania tekstur.
Czy to są narzędzia, które mają w górę, że w górę właśnie, upscaling, czyli tutaj mamy odwrotność kompresji. Robimy te tekstury jeszcze większe, czyli unzipujemy, zipujemy, tak.
No i dzięki temu, dzięki tym mechanizmom, możemy w relatywnie łatwy sposób rzeczywiście tą warstwę wizualną sobie wzbogacić. Oczywiście to się też wiąże z, najczęściej wsparciem jakiś tam rzeczy, bo mam pomysły nie tylko teksturowych, ale wiadomo, jakieś oświetlenie, jakieś nowe efekty cząsteczkowe, tego typu rzeczy, no bo to samo podniesienie rozdzielczości tekstur to może być za mało. Ale mając już automatyczne narzędzia do tego typu rzeczy, nie musimy wtedy aż tak bardzo siedzieć nad każdą teksturą. Chociaż i tak w większości przypadków warto rzucić okiem, to wymaga pewnej weryfikacji. No tutaj na przykład twórcy Mass Effecta, robiąc remaster klasycznej trylogii, czyli to były trzy części, musieli wpierw automatycznie poprawić jakość trzydziestu tysięcy tekstur, bo tyle ich tam mniej więcej było, a później tak, musimy ręcznie przejrzeć większość z nich, żeby pewne detale jeszcze poprawić, bądź wyeliminować artefakty, które się w tym procesie pojawiają, bo trzeba sobie też jasno powiedzieć, że tym pewnie chwilę zeszło.
No, chwilę zeszło, ale pewnie i tak to jest szybsze niż zrobienie tych trzydziestu tysięcy tekstur zupełnie od nowa.
Jakby nie może tak być. Podejrzewam, że większość z nich pewnie od razu po pierwszym przejściu algorytmu była w miarę akceptowalna, pewnie kilka procent nadawało się do poprawki, może jeszcze mniejsza ilość do zupełnie wymiany. Tylko sobie też często powiedzieć, że nie da się tego oczywiście zrobić zadowoloną teksturą, bo tutaj taki patent, nie, że mamy „Diunę 2” i tam są takie ludziki na pięciu pikselach.
Taki wojak jak z Hali.
O, nie, w 8K.
No właśnie. To osoby trzeba jasno razy powiedzieć, że jednak materiał wejściowy musi być w odpowiedniej jakości. Tutaj podobnie jak z tym odbiciem tego oka w bankomacie, czy tam w innej kamerze, nie da się stworzyć i odtworzyć tego na podstawie ograniczonej ilości informacji. Po prostu za mało danych jest.
Za mało danych. Więc, no, upscaling tekstur i generalnie poprawianie jakby grafiki, no, musi mieć jakąś odpowiednią ilość informacji. W przypadku „Mass Effecta”, czy ogólnie nowszych gier, których remaster powstają, bardzo często jest tak, że oryginalne tekstury, które, na których podstawie gra była stworzona, już były wysokiej rozdzielczości, na przykład 1080p, a dopiero na potrzeby PS3, czy jakiś słabszych maszyn, były skalowane do niższej rozdzielczości, więc jakby sprzęt udźwignął.
Żeby sprzęt udźwignąć. Było po prostu kilka wersji tych tekstów, więc jakby mając za punkt wyjściowy tekstury w 1080p, oczywiście możemy je całkiem nieźle podnieść do jakiś wyższych rozdzielczości. Natomiast tak, jak gdzieś w remasterze „Doom’a” czy jakiś innych starych gierek idziemy jej z pozycji tekstury wielkości 64/64, to naprawdę stare, dobre, porządne teksty da się do pewnego stopnia naskrybować, ale nie da się tego robić w nieskończoność. Bo za każdym wyższym już jakby parametrem, no, jednak coraz więcej artefaktów, aż w końcu tekstura staje się zupełnie nieczytelna. No, bo nie da się po prostu wygenerować czegoś z niczego. Musimy mieć pewien kontekst, musimy mieć pewną, czyli oszukują o filmach, ilość informacji.
Oczywiście, że tak. Mam tam „Weź mi powiększ tego tutaj drink i czytając gazetę”.
Tak, jak tam Daniel Craig sobie chodzi. Więc, ale to, że…
Nie, no, to ja myślałem, że w Bondzie to już nie oszukują. To, to nie, to nie jest na faktach, niestety, ani nawet na przybliżonych autentycznych.
Autentycznych. Więc tekstowanie tekstur to jest też coś, co się dzieje, tak jakby byśmy to powiedzieli w takim build time, compile time. Czy to jest coś, co twórcy po prostu robią na etapie przygotowania.
Nowoczesne technologie graficzne – DLSS i cloud gaming
Takie przygotowania do definitive edition. Sobie tam siedzą, dziennie trzydzieści tysięcy tekstur rozdzielają na pięć osób i każdy musi do piątku wszystko zrobić, najlepiej do czwartku, bo w piątek to trzeba już sprawdzić. No i w ten sposób mamy, mamy tą naszą odświeżoną wersję, którą możemy sobie wypuścić, wiadomo, plus tam jeszcze pewnie kilka cyfrowych gadżetów w stylu nowej zbroi czy coś i możemy, możemy zawołać sobie pełną cenę.
Ale rzeczywiście to jest dość fajny mechanizm, który sprawia, że no, wiele klasyków może, może jakby wrócić w lepszej odsłonie i pewnie gdyby to trzeba było robić ręcznie, raczej by się to, raczej nie wydarzyło.
Tylko że z tego, co wspominałeś, to tutaj ten proces zachodzi nie dość, że w build time, to jeszcze i w run time, tak. Czyli że maszyneria nam poprawia raz jakość tekstur zawczasu, tak, ten materiał wyjściowy, który jest ładowany do gry, a później w run time jeszcze się coś z tym dzieje.
Tak, właśnie, w run time to jest kolejny mechanizm, który jest też obecnie wykorzystywany bardzo mocno, zwłaszcza tutaj Nvidia przoduje w tym i to jest zupełnie, można powiedzieć, inny mechanizm, ale tutaj jeszcze bardziej sztuczna inteligencja i odpowiednio wyszkolone sieci neuronowe biorą wreszcie są wreszcie są.
Dokładnie. I tutaj mówimy głównie o mechanizmach typu DLSS, czyli Deep Learning Super Sampling. Jak to, jak to Nvidia nazywa. AMD też ma jakieś tam swój odpowiednik FSR, ale jednak nie jest aż tak, aż tak rozbudowany.
Czyli tak po naszemu, głęboko nauczony super próbkowanie.
Super próbkowanie, tak. Czyli wyciągają jakieś cechy tak, te algorytmy z tego materiału, tak. Generalnie pojawiło się to około roku 2018 w pierwszej wersji właśnie karty GeForce i w swojej pierwszej wersji każda gra musiała mieć swoją własną sieć neuronową wytrenowaną na obrazkach ze swojej gry. Polegało to na tym, że uczenie jakby sieci neuronowej polegało na tym, że pokazywano jej obrazki w jakieś tam mniejszej rozdzielczości z tego silnika gry i ileś tam próbka, wiadomo, pewnie była dość duża ilość obrazków właśnie w mniejszych rozdzielczości sparowane z docelowym obrazkiem w powiększonej rozdzielczości.
Czyli po prostu od czego chcemy dojść.
Do czego chcemy dojść. My mały obrazek w słabej jakości, duży, fajny obrazek w rozdzielczości 4K czy wyższej i na takich parach obrazków trenowano właśnie sieć, sieć neuronową w tej konkretnej grze. Bo w wersji właśnie DLSS 1.0 każda gra przychodziła z wbudowaną w swoją własną siecią neuronową, wytrenowaną na swoje potrzeby. Dlatego te pierwsze wersje algorytmu jeszcze nie były aż tak szeroko wspierane, generalnie było tylko kilka gier na czas Battlefieldem, które to wspierały, no bo wiadomo, no to nie jest jakaś tam prosta rzecz, nie każdy sobie będzie teraz tutaj trenował swoje sieci neuronowe, żeby, żeby coś takiego.
Powiedział, że to jest nawet dość skomplikowane i to bardzo.
No tak, tak, no i wiadomo, kosztowne i… no i pewnie tylko większość sobie studia to mogę pozwolić, z waszą też może być, bo nawet na wytłuczenie jakiś prostych sieci to tak, żeby mieć zadowalające efekty i to wiadomo, tak, tak. No i oczywistym stało się, że to jest bardzo duże ograniczenie, dlatego też wtedy jeszcze nie wszyscy twórcy jakby uwierzyli w ogóle w tą technologię. Ale od wersji 2.0 już jakby ta technologia rozwinęła się na tyle, że powstała sieć ogólnego zastosowania, która wspiera dowolną grę.
To wrzucę Diunkę w nią.
Możesz spróbować. Może spróbować. Tylko tutaj mamy oczywiście podobne ograniczenia. I o ile pierwsza jeszcze wersja cierpiała dość mocno, tak zwany ghosting, czyli z każdą z każdą klatką ruchu czasami pojawiała się taka lekka poświata za pewnymi obiektami, no bo wiadomo. Ogólnie też pierwsza wersja generowała nam tylko i wyłącznie dodatkowe piksele, czyli mieliśmy nasz obrazek, naszą ramkę, to na klatkach już operujemy.
Tak. Właśnie to jest też ta różnica pomiędzy tym pierwszym upscalowaniem tekstur. W przypadku upscalowania tekstur działamy na obiekcie gry na zasadzie tekstury. Czyli mamy po prostu w naszym edytorku teksturę, no i ją podbijamy sobie przez proces i mamy wciąż to wygląda zadowolenie. Mamy ten plik, który jest w większej rozdzielczości. To działa na poziomie tekstur. Natomiast ten mechanizm, on działa na poziomie ramki obrazu, w ogóle nie patrząc zupełnie na to, przynajmniej w pierwszych wersjach. Zaraz dojdziemy dalej. Ale z założeniem jest to, że on patrzy tylko i wyłącznie już na wynik tego, co jest renderowane na ekranie, czy gdzieś tam w buforze, bo to wiadomo jeszcze dzieli się przed. Więc jakby tutaj nie ma żadnego połączenia, co jest teksturą, co jest… To są po prostu piksele.
Samo to sprawia, że to jest też bardzo ciekawa algorytm, bo jednak patrząc tylko i wyłącznie na piksele, nie wiedząc, co jest teksturą, co jest oświetleniem, co jest postacią, co jest drzewem, no to to nie jest takie coś, to nie jest takie trywialne. Jak tu zrobić z tego więcej pikseli, a jak za chwilę się dowiemy, więcej klatek. Więc w wersji drugiej te sieci neuronowe już są na tyle sprytne, że generują nam dodatkowe piksele dla dowolnej gry. Nie musimy mieć już specyficznych…
Tak to jest pozaszywane w karcie, tak.
Tak, bo to generują specjalne jednostki, tak zwane Tensor Cores na kartach. Dlatego też się generalnie te technologie są dostępne od serii 2000 wzwyż, czyli tak zwanych RTX. Tutaj, tutaj potrzebne jest wsparcie sprzętowe, dlatego też to tak bardzo nie obciąża w ogóle generowania takiej podstawowej rasteryzacji sprzętowo, bo to jest sprzętowo przez osobny układ obliczany. Więc to też jest ten, ten plus, no bo jednak generowanie nowych pikseli czy nowych klatek, no to jest na tak samo trudne, można powiedzieć, jak generowanie tych pierwotnych pikselowych. Co autor miał na myśli? Więc wiemy, że to pewnie by mogło spowolnić, ale tak się, tak się na szczęście nie dzieje. No i w wersji 3.0 mamy już generowanie nowych klatek. I to już jest w ogóle bardzo ciekawa…
Bardzo ciekawa właściwość, pomijając już, że tam doszły ulepszenia w stylu już od wersji drugiej mamy też enkodowane wektory ruchu, czyli każdy piksel, to jest tak troszkę, jak mamy enkodowanie obrazu w różnych kodeksach. Tam też bloki są częściowo gdzieś tam, jest są informacje o tym, jak transformacje między…
Transformacja. Bo sama, sam fakt, że w jednej klatce piksel był tutaj, a drugi tutaj, to jest troszkę za mało. Też dobrze właśnie wiedzieć, jak ten piksel się porusza. Wtedy możemy przewidzieć mniej więcej, gdzie może być w następnej klatce i coś możemy interpolować.
Jak to przewidzieć? Bo piksel, piksel, co ma? Jedno RGB i taki jego kolega, co ma takie samo RGB, a obok. No, to są dwa takie same piksele i to jeszcze o milionach kolorów i milionach możliwych położeń. I, no, chyba, że palety mają 256.
Raczej nie, raczej mają troszkę większe. Troszkę większe 32 bity. To jest skąd mam wiedzieć, że ten piksel, to jest ten piksel?
Właśnie wchodzą te wytrenowane sieci neuronowe, które na potrzeby już wyższych wersji zostały wytrenowane z jeszcze większą ilością danych na przestrzeni różnych gier. Więc generalnie koniec końców pod spodem pewnie i tak nie jestem pewien, czy to jest tak, że dowolna gra może być wspierana, nawet jeśli jej podzbiór danych nie był na tym używany do wytrenowania. Nie do końca to było jasne, jakby w materiałach, które znalazłem, ale generalnie sam fakt jakby wydaje się tak, że to właśnie tak jest, że, że wystarczy to tak naprawdę dla dowolnej gry, plus wiadomo, jakieś tam wsparcie pewnie programistyczne, żeby w ogóle ten tryb włączyć. Ale generalnie sam fakt w ogóle wygenerowania ekstra klatek. I tu mówimy naprawdę czasami o wzroście 20, 30, 40% więcej klatek. Więc tak naprawdę mamy tutaj już wtedy nie służy, mamy wzrokowe oszukaństwo, bo naprawdę ta gra wygenerowała nam coś, a my nagle mamy znacznie więcej i artefaktów jest w kolejnych wersjach tak naprawdę coraz mniej. Parę miesięcy temu pojawiła się wersja 3.5, gdzie mamy już jeszcze lepsze śledzenie promieni i jeszcze lepsze mechanizmy odszumiania tego efektu wynikowego. Więc ten, te algorytmy, które się teraz tam dzieją, no, naprawdę to są niesamowite rzeczy. To już jest na pograniczu magii, nawet dla wielu ludzi, którzy gdzieś tam tą grafiką się zajmują, a ci, którzy się tego tym nie zajmują, to już jest w ogóle nieodróżnialne od magii.
Jak to mówi przysłowie: „To jest na tyle zaawansowana technologia, że jest nieodróżnialne”. Kiedy po prostu rzeczywistość nasza za tym nadąży i zacznie ta rzeczywistość wyglądać tak, jak te klatki w grach.
No tak, czyli kolejnego budżetu w symulacji.
Kolejny. To już chyba drugi.
Już chyba trzeci. Lub trzeci. No właśnie, więc. No i teraz jak sobie, jeśli ktoś sobie śledzi rynek kart graficznych i ogląda sobie testy, no to właśnie tryby DLSS są bardzo często właśnie brane pod uwagę w tych testach, czyli jak gra wygląda w danym trybie, jak wygląda bez tego upscalera, jak wygląda z, ile klatek możemy zyskać. No i generalnie jakby jaką wydajność mamy dzięki tym mechanizmom. Jak w ogóle gra implementuje. Jak w ogóle dana karta osoby z tym radzi. No, w ogólności to jest oczywiście bardzo fajne, bardzo fajne rozwiązanie. To też bardzo nam pomaga. Zwłaszcza Nvidia, oczywiście, jako wiadomo, twórca technologii, twórca kart graficznych, mocno to wykorzystuje w swoim GeForce Now, czyli w cloud gamingu.
No bo jak sobie teraz pomyślimy, cloud gaming też miał być oczywiście wielkim odkryciem i od wielu lat gdzieś tam więksi i mniejsi próbują i nawet więksi czasami polegają, tak jak Google Stadia, które zamknęło się już ponad rok temu. Więc nawet Google sobie z tym nie poradziło. No i to się oczywiście wiąże poniekąd jakby z kosztem generowania, tak naprawdę, i wysyłania do tych tych typ materiałów do graczy. No, tutaj Nvidia mocno inwestuje właśnie w tego typu mechanizmy. No bo teraz wyobraźmy sobie, że gracze wiadomo, chcą zawsze najwyższej jakości, chcą zawsze grać w 60–120 klatkach. No i teraz ty, biedny cloud gaming providerze, musisz to wszystko wygenerować na swoich serwerach, które aż płoną, przepchnąć przez ten kabel i jeszcze przepchnąć przez kabel. Podejrzewam, że przepchnięcie obecnie to może aż nie jest aż takim problemem, ale jednak wygenerowanie wszystkiego, no to jest też różnica pomiędzy takim cloud gamingiem a Netflixem czy innym wideo streamingiem. No, streaming mamy po prostu content, który wyrzucamy przez sieć i koniec. Dlatego jakby wideo streaming jest znacznie prostszy i, no, tak, możemy sobie na takim abonamencie oglądać i płacimy, można powiedzieć, jakąś tam kwotę, ale mamy cały czas dostarczany content, mamy cały czas ten streaming, a w cloud gamingu, no, generalnie nie dość, że płacimy abonament za sam cloud gaming, to jeszcze musimy posiadać gry, bo one nie będą liczone. Same Nvidia nam nie zrobi gier nowych, żebyśmy mieli w co grać.
Więc jakby tutaj te proporcje są troszkę inne, to jest…
Poprawimy Diunkę. I to jest właśnie też między innymi problemem jest właśnie jakby moc obliczeniowa generowanie tego. Natomiast jeśli sobie weźmiemy teraz algorytmy właśnie takie skalowania w górę, no to możemy sobie wyobrazić taką farmę serwerów po stronie Nvidii, która generuje nam obraz w 1080p, przepuszcza go sobie przez przez te upscalery i do graczy wysyła w pięknym 4K, 120 klatek i tyle. To jest, to jest na pewno fajny koncept właśnie nie tylko dla samych graczy, którzy mogą mieć teoretycznie słabsze karty graficzne, a jednocześnie mieć dobre efekty graficzne i po prostu odpowiednio ilość klatek, ale też dla samej jakby Nvidii i czy ogólnie dla dostawców rzeczy czy aplikacji, które generują tą grafikę i mają pewne ograniczenia sprzętowe, które można troszkę zniwelować.
To przypomina trochę taki, takie zastosowanie i rozszerzenie tego wzorca, o którym wspominaliśmy, wzorca ogólnie podejścia, żeby propagować tylko kluczowe informacje, nie? Bo właśnie taka klatka podstawowa wyrenderowana w niskiej, niskiej, na dzisiejsze czasy, rozdzielczości Full HD jest następnie tam rozdmuchiwana do tamtego 4K, ale po stronie już klienta, nie? Czyli przez ten nieszczęsny kabel, który mimo wszystko daje radę, bo Netflix też daje radę, to, to ten, to to sobie się przepchnie, ale tam musi się no w czasie rzeczywistym zdążyć właśnie podnieść o kilka tam poziomów w górę.
Tak. No i tak naprawdę dopiero…
Relatywnie niedawno ta technologia powstała, mniej więcej pięć lat temu. No i upowszechnienie się tego po pierwsze wymagało pewnych upowszechnienia się właśnie tych dużych modeli językowych i ogólnie pewnych technik sztucznej inteligencji, plus no, zwiększenia też mocy obliczeniowych chmur. No, ale też i zwiększenia mocy tych kart, które jest nam u klientów siedzą, nie?
Tak, oczywiście, no, bez tego to by nic nie było.
Tak, tak, no, wiadomo, no, u klientów to trzeba wyrenderować, ale, ale żeby to wyszkodzić, no to musimy mieć u siebie na podorędziu pewne ogromne moc obliczeniowe. Bo możemy sobie wyobrazić taka sieć neuronowa, która jednak generuje nam klatki i w dowolnej grze, no to jednak wymaga szkolenia na pewno na ogromnej ilości danych.
Więc tutaj się w tym pokoju nie zmieściła. Raczej.
Raczej. A jednocześnie wynikiem takiej sieci, w sensie sama sieć, no to jest, można powiedzieć, z abstrakcyjnie, no to, to jest tylko zestaw pewnych wag. To nie jest, my nie musimy mieć w tej sieci neuronowej żadnych danych. W sensie graficznych obrazków.
Właśnie to jest też zaletą sieci neuronowych, że model…
Cyferki. Same, same cyferki, tak naprawdę. Więc wiadomo, no, ileś to też zajmuje, a na pewno mniej niż dowolna tekstura w 4K, czy tam zbiór tekstur. Więc jakby to jest, to jest dojście do tych cyferek, to jest tak, jak mówisz, bo ja to kiedyś się nawet bawiłem na studiach takim czymś, tak. Znaczy czymś, samym tym zagadnieniem, ale okazuje się, że wytrenowanie sensowne, że w sensie, żeby uzyskać sensowny wynik jakiegoś prostego perceptronu, który to jest, no, bodaj chyba najprostszą siecią akurat ze sprzężeniem, to jest już rzecz wysoce nietrywialna, a tutaj pewnie mamy o wiele większe…
Zagadnienie, dużo bardziej skomplikowany model tej sieci, tak. Nie. Uczenie w ogóle sieci neuronowej z tego, co pamiętam, z takimi sprzężeniami powoduje powstanie podatności na na same wzorce uczące, tak, czyli na przykład można sobie przeuczyć tak uczyć.
Dokładnie. No, ja też miałem kilka jakiś tam podejść do tego. Też mnie to mocno interesowało, nawet sztuczna inteligencja. Tak byłem zapisany do kursu właśnie z sieci neuronowych, które prowadził Geoffrey Hinton. To jest taka znana postać właśnie, można by powiedzieć, gwiazda ogólnie sztucznej inteligencji i sieci neuronowych. Obecnie zdaje się chyba jest w Google. Ogólnie właśnie do Google’a też przechodził jako gwiazda. To jest w ogóle też prapradziadek George’a Boole’a, tego od algebry boolowskiej.
Oczywiście. Tak, tak. Musiałby ten wejść Einstein, jego…
Też łatwiej po prostu miał. Łatwiej, oczywiście. Gdzieś tam jego pradziadka nauczył.
Prapradziadek, dokładnie. Dziadka. Pradziadek, a jego dziadek już, dziadek wiedział: „true/false” i w ogóle już. No, to, to była podstawowa w ogóle…
Mój na przykład nie wiedział. Nie znał true/false.
No właśnie. Więc mieliśmy trudniej. No, znaczy ja to w ogóle nie znałem swojego prapradziadka, a to inna sprawa. Chociaż może też George’a Boole’a pewnie nie znał. No, ale mógł nie znać.
Jakby wracając, no, gość naprawdę jest bardzo, bardzo jakby znany w tej branży i muszę przyznać, że ten kurs naprawdę miał bardzo, bardzo na wysokim poziomie. Ja się troszkę odbiłem nawet do tego aparatu matematycznego, który tam był. Więc pewnie srogi ten aparat.
Tak, więc, no, postawił sobie tam wysokie, wysokie progi. Można, bo to z tego, co ja pamiętam, właśnie a propos takich aparatów, to, to można tak rozpisać, że nikt tego nie przeczyta.
No tak, ale można też tak to opisać, że da się zaimplementować pewne rzeczy. Tak, właśnie z uczeniem jest, jest problem. No i cóż tam, cóż tam wytworzyliście w tym, w tym kursie?
Dziesięć lat temu, więc już to było dawno. Nieprawda, to było dawno. To była trochę prawda, ale to było tak dawno, nie? To implementowane, pamiętam, było właśnie w MATLABie, jakieś takie proste sieci neuronowe i proste jakieś takie przybliżenia, ale też dużo było właśnie takiego matematycznego podejścia i udowadniania i właśnie zbieżności i tego typu rzeczy. I pamiętam, że to było dość skomplikowane, żeby jeszcze pogodzić z bieżącą pracą, więc…
Wyzwania i przyszłość AI w grach
Ale wracając jeszcze może do tematu tutaj generowania i tego typu rzeczy, mniej czy bardziej magicznych, no to jest tego typu właśnie generatywna, no, w tym wypadku akurat wizualna sztuczna inteligencja, mocno w branży gamingowej, ale też nie tylko. No bo to wiadomo, generowanie obrazu jest też w innych branżach. Natomiast to masz też swoje, swoje też minusy, na przykład w grach i jest też pewna tendencja oczywiście twórców, którzy domyślnie, tworząc właśnie, czy to, czy to gra, czy, czy w ogóle implementując pewne rzeczy, za bardzo polegają na tych mechanizmach DLSS i obecnie bardzo często… No, bo generalnie żeby możemy sobie te, te mechanizmy włączyć czy wyłączyć i możemy go sobie też ustawić w różnych trybach: Performance, Balance albo Quality. I w zależności od tego, który tryb sobie wybierzemy, mamy mniej lub bardziej agresywną optymalizację.
Optymalizacja polega na tym, że jeśli bardziej pójdziemy w stronę performance’u, to bazowa rozdzielczość jest jak najmniejsza, czyli, że gra będzie starała się generować nam grę w jakiejś niewielkiej rozdzielczości, żeby mieć ten performance jak największy, a później nam to zeskaluje. No i obecnie często zdarza się, że gry domyślnie są wydawane w trybie właśnie DLSS w trybie Performance, co oznacza, że na przykład grając na takim standardowym monitorze w rozdzielczości 1080p, jeśli domyślnie to jest ustawione na Performance, gra jest renderowana, w sensie w silniku gry, w rozdzielczości 540, bo tam radio jest podzielić przez 2.
Więc, a z drugiej strony jeśli teraz… 640. No właśnie, no właśnie. I to jest ten problem, że ale oszukują. Teraz bardzo wielu twórców może sobie powiedzieć: „Po co optymalizować? Po co w ogóle się starać? Zrobimy to na 540. To sobie modami, to sobie DLSS-em zategują, jak to mówiłem”. I tak naprawdę, no, to jest duży problem. No, bo z drugiej strony jeśli teraz odpal na… No właśnie, ale jeśli teraz chcemy sobie wyłączyć, no, bo możemy sobie oczywiście DLSS wyłączyć i mieć natywne renderowanie w rozdzielczości sobie jaką wybierzemy, tylko że ta się okaże, że mamy 15 klatek, bo bez wsparcia generowania klatek silnik i gra po prostu nie wyrabia. No, bo nie została napisana na tyle optymalnie.
Dochrzano takie gry. No właśnie, więc to jest, to jest pewien efekt taki trochę uboczny tego, tego wszystkiego i lenistwo chyba twórców, trochę.
Trochę efekt też tego, że gdy zaufania się technologią, tak, trochę też, no i oczywiście takiego, można tak, takiego leniwego wykorzystania mechanizmów technologii, które tak jak z tą pamięcią, coś pomagają, a jednak z drugiej strony możemy mieć gorsze wyniki w innym przypadku. Więc, no, trzeba z tym jednak też uważać i ciekawe. Może to się jakoś ustabilizuje, nie? Bo akurat z pamięcią, to z tego, co pamiętamy, pamięć jest tak tania, że nie ma co optymalizować, dokładamy pamięci. Tak samo dyski, dyskowa jest tak tania, że dokładamy dysków.
No, to tutaj dokładamy tych DLSS-ów i koniec. No, w przypadku pojedynczego zasobu, pewnie tak. Tutaj w przypadku gry jako takiej, jakby całego, można powiedzieć, no, jednak systemu, no to jednak tylko to już jest całkowite odejście od wartości dziadów, którzy robili te gry na kolanie w garażu, nie? I to po prostu każdy piksel był tak wymuskany, że on już miał to. Jeśli tak porównamy optymalizację z tamtych czasów, to to jest zupełnie na przeciwieństwo. Tutaj po prostu włączam sobie DLSS i wszystko będzie super, ale jeśli ktoś wyłączy albo na przykład nie ma karty, która to wspiera, no to już będzie, będzie trudniej.
Przyszłość gier i obawy dotyczące AI
To jeszcze aż strach pomyśleć, w którą stronę to zmierza, a pewnie skończy się tak, że siądzie sobie taki, krzyknie: „Hej, czad! Weź mi to zrób taką grę z tym DLSS-em, czy czym tam chcesz!” No, to jest, to zrobi, nie? To jest kolejna aspekty, które też gdzieś tam wykorzystanie sztucznej inteligencji jest obecnie sprawdzane, można powiedzieć. No, wiadomo, od gry robią się coraz większe, otwarte światy są coraz bardziej otwarte, są coraz bardziej skomplikowane, więc ktoś musi te światy generować. Ktoś musi te światy zapełniać bohaterami, dialogami, jakimiś aktywnościami.
No i tym szumem, który tam jest cały. Tym całym tym szumem. No i kto może to zrobić lepiej, jak nie nasza sztuczna inteligencja, która nam tutaj wszystko wygeneruje. A zaczynało się od takich prostych tam A*, tak. Więc tylko właśnie pytanie, czy na dłuższą metę potrzebujemy gier, które mają nie wiadomo ile set już godzin nagle nagenerowanego contentu przez sztuczną inteligencję. Wydaje mi się, że to jest nie do końca ten kierunek. Wiadomo, tam gry są teraz wyceniane na ileś tam godzin gameplay’a. Ja tam nie wiem, teraz ten „Starfield” na 150 tak, że taka podstawowa główna przyjemność…
Nie, znaczy ja słyszałem w tej recenzji, ale może, może pomyliłem cyferki. Są naprawdę przejść.
Dokładnie, podstawowa fabuła raczej mniej. No, ale wiadomo, no, rzadko się ograniczamy do godziny, nie? Równe. Bo ja lubiłem sobie siedzieć z Wiedźmakiem gdzieś tam w chaszczach i słuchać soundtracków, a trawa tam falowała, nie leciały.
No, to jest, to jest też kolejny problem, oczywiście, już wychodząc może poza temat, ale no, ogólnie systemy informatyczne stają się coraz bardziej skomplikowane, co już poruszaliśmy w wielu tutaj naszych tematach, na przykład w eventach. Gry w ogólności stają się coraz bardziej, z tych bardziej skomplikowanych, zdecydowanie. Koszty gier wytworzenia gier rosną niesamowicie, no, już dawno przekroczyły koszty wytworzenia filmów. Nie ma się też czemu dziwić, no bo jednak linii dialogowych, postaci, wszystko jest zrobione w większości przez motion capture, więc tak naprawdę aktorów mamy więcej niż w filmach, opcji mamy więcej.
Wcześniej w firmach filmów się produkuje.
Dokładnie. Dlatego te koszty idą w kosmos. Czas wytworzenia w ogóle gier rozciąga się już na lata, gdzie przez te ileś tam lat, cztery, pięć, sześć, musimy utrzymać studio, które ma 200, 300, 400 osób. No, wiadomo, że wydaje się, że właśnie narzędzia sztucznej inteligencji mogą w tej sytuacji nam pomóc, tylko żeby nie okazało się, że ona jeszcze tym biednym ludziom, którzy tam crunchują już piąty rok, niestety te narzędzia nie sprawią, że oni będą musie jeszcze więcej wytworzyć, tylko tyle, że teraz zamiast robić to ręcznie, to będą musieli robić to w asyście narzędzi sztucznej inteligencji, ale de facto pracy wcale nie będą…
Do tego testowanie. Przecież OK, mówiliśmy testowanie jakimiś tam mechanizmami sztucznej inteligencji, to się rzuci graczom i oni tam przetestują, ale ktoś tam też będzie musiał ręcznie trochę przetestować. Więc ci testerzy też będą musieli dziesiątki godzin spędzić.
Więc może teraz pójdą producenci gier w produkowanie takich botów testujących.
No, pewnie już częściowo w tym specjalizują i to też będzie jakaś nisza. Więc no, są też obawy, wiadomo, że, że te sztuczne inteligencja negatywna gdzieś tam tej kreatywnej pracy może troszkę zabrać, ale z drugiej strony otwiera możliwości.
Z drugiej strony otwiera możliwości. No, to zabranie pracy może teraz bardziej jest nagłośnione właśnie w strajku scenarzystów w Hollywood, ale tam jest też troszkę… Nie śledzę tego wątku, także nie wiem, jakim tam poszło. Jeszcze się chyba kłócą troszkę. Dostali tą poduszkę, czy nie?
Chyba jeszcze nie. No, mi się obrazili w ogóle, że za mało mają, tak? Że za mało mają, to jest raz, dwa, że, dwa, że właśnie jest pewna obawa, że właśnie sztuczna inteligencja może nie tyle zabrać im pracę, co sprawić, zredukować takiego scenarzystę do roli tylko poprawiacza wygenerowania, wygenerowanego skryptu. No, co jest rzeczywiście takie może troszkę włączające, bo nie po to ktoś w tym scenarzystą chciał być, żeby teraz poprawiać po maszynie.
No tak, ale jak się z drugiej strony popatrzy na niektóre scenariusze, i żeby daleko nie szukać, to jest taki serial na, w, na r… też jest.
Pomińmy na razie wycieczki tutaj serialowe. Oczywiście jakość to jest zupełnie częścią kulturalnej, nie należy pomijać, tak. Tak, to jest oczywiście zupełnie inna sprawa, czy za taką jakość warto płacić, to, to jest jasna sprawa. Nie będzie gorzej. Nie będzie gorzej, może. Nie będzie. Rzeczywiście, przy okazji wywiad niech wygeneruje odpowiedni, tak, żeby nikogo nie obrazić, bo wiadomo, bardzo łatwo ostatnio w wywiadzie się obraża tutaj poszczególne frakcje. Oczywiście.
Ewolucja narzędzi AI w tworzeniu gier
Więc no, widać, że w szerokim spektrum jest obecnie te nasze generatywne AI. No, sam tooling też bardzo mocno idzie do przodu. To widzimy też po toolingu, jakby w naszym świecie. Wiadomo, Copilot był taki pierwszym bardziej może głośnym narzędziem, który gdzieś tam wspomagało nam podpowiadania składni. IntelliJ też obecnie wprowadza w wersji jeszcze chyba early access, IntelliJ AI Assistant. I to ma być zintegrowane, już jest właściwie.
No, to od której to wersji do widełki wchodzi? Od tej obecnie najświeższej, tylko że to trzeba sobie włączyć. Zakładając, że będzie w ogóle otwarta ilość miejsc, bo tam na razie jest ograniczenie. Więc można się jeszcze do tego nie proponowała tego. Może już to nie jest, to nie jest aż takie otwarte zupełnie i generalnie to też będzie, to jest jakby już obecnie w tej wersji takiej wczesnej to jest zintegrowane z OpenAI i z Chat GPT. Więc będzie można sobie wykonać normalnie w IntelliJ-u prompta, zapytać właśnie o coś tam, poprosić, żeby wygenerował kawałek kodu, powiedzieć, żeby, poprosić go o jakiś dynamic method, wytłumaczenie, jak metoda jakaś tam działa. Więc to, co możemy zrobić, można powiedzieć, w Chat GPT, ale przez interfejs idołkowy, tak, bardziej. Więc jakby no to, tooling tutaj też idzie do przodu.
AI w rozwoju gier – obawy i innowacje
Człowiek, kurka wodna, do czego to doszło. Tooling w świecie gier jakby też w tą stronę idzie. No, tutaj mamy Ubisoft ogłosił swojego Ghostwritera parę miesięcy temu, co spotkało się też z takim mieszanym przyjęciem, troszkę może bardziej w stylu, że FIFA im napiszą, że teraz korporacja nam będzie zwalniać scenarzystów, więc scenariusze będą jeszcze gorsze od tych, co są.
Nie dziwię się, że strajkują, jak tak.
Ale Ubisoft od razu obiecał, jak tylko to wypuścił, że nie będą tym narzędziem tworzyć korowej fabuły. Ja im wierzę.
No, spoko. Więc, więc tak. Więc są też, no, Unity też ma swoje narzędzia, właśnie Muse i Sentis. To są dwa takie toole ogłoszone dość niedawno, w lipcu zdaje się. Muse to jest taki bardziej do tworzenia grafiki wspomagany, czyli możemy sobie w łatwy sposób właśnie wygenerować jakąś grafikę. A Sentis to jest właśnie sieć neuronowa takiego ogólnego zastosowania. To chyba też troszeczkę ma wspólnego z ich poprzednim projektem Barracuda, bo on już coś takiego mieli, ale chyba nie było to za bardzo, za bardzo, za bardzo używane. Więc sieć do tego wspomagania grafiki, bo tutaj, tutaj właśnie to tak jeszcze trochę enigmatycznie to to opisują. Zdaje się, że bardziej właśnie do generowania takich rzeczy, jak właśnie zachowanie głosowe. Na razie to reklamują taką postacią takiego kosmity, który tam sobie wypowiada się w taką ładną animowaną twarzą, wypowiada, odpowiada na twoje pytania. Więc, więc no, jakaś taka lepsza interakcja właśnie z NPC-em, można powiedzieć. To samo stara się coś robić Nvidia ze swoim projektem ACE, czyli Avatar Cloud Engine. Czyli generalnie wszystko zdaje się też iść mocno właśnie w stronę no takich mocno inteligentnych agentów.
Na niebiesko będzie?
Na niebiesko motor. No tak, tak, może być na niebiesko. No, z jakiegoś powodu właśnie wydaje się, że w tą stronę starają się pójść. Gdzieś to pewnie będzie wykorzystane w jakiś mądrzejszych NPC-ach. Takiego jednego czegoś, mianowicie żeby to sens…
To wiadomo to kiedyś to…
Wyprzedziłem od razu. Wyprzedziłeś wątek. Ale no, żeby to sens miało jakikolwiek, no bo, znaczy musi mieć sens, żeby później przejęli władzę nad światem, tak? Znaczy jak przejmą, to może dla nas nie mieć sensu, dla nich będzie miało sens, wiadomo.
Właściwie to tak, bo już my na pewno nie rozkminimy sensu decyzji, że sztucznej inteligencji, bo będziemy za głupi. No i wtedy się nas, wiadomo. No, dopóki nie zbudują tych robotów te 1000–800, to chyba jesteśmy bezpieczni.
Więc dopóki to są tego wirtualne awatary, to zawsze możemy wtyczkę wyłączyć. No nie wiem, bo teraz to drukarkę możesz mieć podłączoną. Wiadomo, ona sama zacznie drukować, ale bez prądu to nie zacznie.
Chyba, że ma małą bateryjkę.
Bateryjka, panel. Cokolwiek. Może ma panel. No, to wtedy ten panel trzeba tam, jak wydrukuje pierwszego, to już koniec. No tak, tak. Więc potem tylko post mortem napisać, albo nie wiem, czy zdążymy. To będzie prawdziwe post mortem. No, no, to widzę, że się dzieje.
Dzieje się. No i to tak grubo się dzieje. Ciężko chyba przewidzieć, w tą stronę to pójdzie. Tak jak na początku roku wydawało się, że stracimy pracę albo w ogóle tego typu… jeszcze nie straciliśmy. Nawet do tej pory można znaleźć bardzo, bardzo ciekawe artykuły czy na przykład filmiki na YouTube na zasadzie: tytuł brzmi: „Za pół roku sztuczna inteligencja zmiecie branżę gamedową”. No, to filmiku pięć miesięcy temu, no, to już zaraz jeszcze miesiąc jest. Co prawda, więc może się coś zmienić.
Czyli to do końca września.
Do końca września. Więc mamy jeszcze deadline. Nie. To dobrze, ale jak widać, ale niektórzy wpisali tam w latach 90, że kwaśne deszcze nas tu współczą. Więc to tak jeszcze tak rzadko, jeszcze żarty. Także może jeszcze nam się upiecze.
Na pewno coraz trudniej jest przewidzieć, w którą stronę to pójdzie, bo jednak sami twórcy tych mechanizmów nie do końca też nie chcę powiedzieć, nie rozumieją, ale może wyników, może bardziej generowania wyników tego nieprzyjemnie. No właśnie. Więc to ciężko powiedzieć, w którą stronę to pójdzie, zarówno w branży takiej biznesowej, jakby naszej, w aplikacjach stricte biznesowych, jakie zastosowania będą sensowne. No bo też jest pewne oczekiwanie, że jednak da się to przełożyć na jakąś fajną monetyzację, na wsparcie użytkownika w jakiś procesach. Po prostu da się to sprzedać, nie oszukujmy się, no tak.
Tak, w grach, można powiedzieć, jest więcej przestrzeni na tego typu rzeczy. Jak widać właśnie, no, jednak sprzedaż kart Nvidii poprzez te ciekawe technologie, które proponują, jednak mocno wystrzeliła. Nie tylko tam trochę coś o jakichś koparkach mówią. O koparki. O swoją drogą, teraz to już trochę przyhamowało, ale no, jednak wiedzą, jak to, jak ten rynek napędzać, a na pewno, zwłaszcza w ostatnim czasie, ogłosili wyniki finansowe, mają niesamowity wzrost zysków właśnie z tej sekcji swojego cloud computingu, czyli mocno właśnie też zyskają, zyskują na tym, no właśnie, udostępnianiu mocy obliczeniowej i w ogóle na swoich chmurze. Więc widać, że widać, że no, to rozwijają i pewnie poodkrywają różne jeszcze ciekawe aspekty tego.
Nie na pewno udoskonalą to, co już teraz jest i pewnie, no, już to generowane w locie klatki będą tak realistyczne. To jest, ja muszę przyznać, że to jest w ostatnich latach coś, co najbardziej mnie, że tak powiem, urzekło i rzeczywiście sama mechanika za tym stojąca i rozwiązanie jest naprawdę, no, kapitalne. Jak sobie się obejrzy filmiki, jak to jest zrobione, jak, jakie informacje są używane, żeby to wszystko przeliczyć, jak sobie nawet zastanowimy się: „No przecież mamy tutaj zwykłą klatkę. No, jak to powiedzieć, co będzie w następnej klatce?”. Jednak się troszkę da powiedzieć, co będziemy w następnej klatce i nawet z takim dość dobrym prawdopodobieństwem, która sprawia, że jak mamy taką ślepą próbę, po jednej stronie zwykły rendering, taki, że tak powiem, realny, a po jednej stronie właśnie z ekstraklatkami, to naprawdę ciężko powiedzieć, gdzie jest który rozwiązanie. To jest bardzo, bardzo ciężko zauważyć te różnice. Nie ma żadnych takich ewidentnych artefaktów. No, ciężko naprawdę powiedzieć.
Może tutaj z tą z tym trudem w rozeznaniu się idzie w parze rozdzielczość. Po prostu to już jest bardzo duża rozdzielczość.
U, który sobie 640 oryginalnie miał śmigać. A, no, to na pewno jeszcze może wspomnimy, dlaczego nie śmiga 640. Może zdążymy, nie? Czyli jak tutaj, no, już obraz wyjściowy z takiego automatu jest w bardzo dobrej jakości i jeszcze jest jakoś tam podrasowywany, to nie dziwię się, że oko już jest na tyle otumanione, że bierze to za dobrą monetę i się tam nawet nie zastanawiamy nad tym, że gdzieś tam coś może delikatnie zgrzytnęło, nie? Pewnie tego nawet nie widać.
Nie, my też mamy jakąś tam rozdzielczość postrzegania, oczywiście. Więc jeżeli ta gra nam na przykład generuje ileś klatek na na jedną naszą klatkę odczytu, to jest dużo łatwiej nas oszukać w pozytywnym tym sensie, czyli dać nam taki, taką zawartość, która, która dla nas wygląda bardzo realistycznie. No i pewnie, jak w tą stronę to pójdzie, no to taka, taki fotorealizm to już będzie na porządku dziennym, nawet w Tetrisie.
Analiza gry Age of Empires I – studium optymalizacji i wnioski
Nie, żeby komuś to było potrzebne, ale nie, no, wiadomo, no, lepiej jak wygląda, lepiej jak wygląda. No, fajnie, tylko właśnie te takie generowania jakiś tam linii dialogowych, czy w ogóle takich fragmentów scenariusza, być może modele językowe już sobie dobrze radzą z tym, ponoć. No, zwolennicy czata popularnego chwalą go za to, za te treści, które on tam generuje. Czyli jeżeli mamy model wyuczony na naszym gatunku literackim, no to możemy się spodziewać, że nasz gatunek literacki, ten ulubiony, zostanie dobrze odwzorowany, nie? Jeżeli będziemy mieli model wyuczony na „Baldurze”, to „Baldur 7” to już będzie pewnie wygenerowany.
Nie tylko kwestia jest w tym, żeby tak dobrać te zbiory uczące, te, te nasze sprytne mechanizmy, żeby one były w stanie się nauczyć, co zrobić z tym materiałem, jak sobie poradzić, bo to de facto, jakbyśmy to odnieśli do działalności człowieka, no to mamy też specjalistę, który na przykład siedzi w RPG-ach, jest sobie grafikiem od lat z dużym doświadczeniem i on rzuci okiem na teksturę i wie co poprawi, na czym, w RPG-ach ogólnie w grach jako takich. Ale na przykład, jeżeli już przyczepimy się gatunku RPG, no to żeby na przykład jakieś dziury fabularne łatwo załatać, usprawnić płynność tego całego scenariusza, nie? I tam w ogóle dołożyć mu smaczków, no to już jest potrzebne ktoś, kto siedzi w temacie i to nie tak, jak z tymi dam scenarzystami do serialu na „R”, że oni to… A nie, to ci to jeszcze, jeszcze, bo oni jeszcze tam Tolkiena ponoć to widzieli gdzieś kiedyś na filmie.
Nie są chyba Christophera. To nawet rękę uścisnęli, bo chyba jakieś spotkanie się odbyło tego, co tam mówiono bez szpilek nie obędzie się. Czekałem cały odcinek, co nie? Znaczy to wtrącałem trochę, nie wiadomo. Ale ci, co pisali ten serial na „W”, to oni się przyznali ostatnio. Znaczy, przepraszam, oni się nie przyznali. Wydało się, bo się znalazł taki jeden, co już tam z nimi nie pracuje, który powiedział, jakie oni mieli podejście, nie? Więc, jeżeli odwrócimy sytuację i mamy kogoś, kto jest wkręcony w dane uniwersum albo po prostu w zagadnienie, no to możemy się spodziewać, że on nam wygeneruje tą, tą treść. De facto tak to działa w rzeczywistości, nie? Że ci artyści tak właśnie nam generują. Obojętnie, jakich artystów byśmy nie wzięli pod uwagę, tutaj nie ma tych. Jest cała masa przy produkcji takiej gry, a teraz mamy artystę takiego w cyferkach. No i co? I on nam też wygeneruje.
Też wygeneruje i nikt się nie połapie.
No, w sumie tak. Grafika tak. Pytanie, czy zrobi cliffhanger albo jakiś zwrot akcji, to nie wiem, bo wygenerować pewnie ścianę tekstu takiego, że tak powiem, ciągłego, to nie jest problem, ale wygenerować kawałek scenariusza z jakimś zwrotem akcji, na przykład, to może już nie być takie trywialne. Więc tu chyba jeszcze jest o coś takiego i jeszcze na razie mnie z… Przepraszam, że nie zna tam siły ciążenia na powierzchni Słońca, ale to już wybaczyłem.
No tak, już powiedzieliśmy. To on nie zna, bo nie. Jego celem jest znanie. Takie, tak.
Dokładnie. Nie jego działka.
Ale też nie prosiłem go, żeby mi tutaj ten wygenerował Badura, Baldura, albo 13 księgę do tego do „Władcy Pierścieni”. Na przykład. No, nic, może jakoś sobie będą radzić. Nie? Czyli tak, teraz po tych, bo to dzisiaj trzeci odcinek, tak, o tych dyrdymałach, tak. Zaczęliśmy od takich czasów, jak to w drzewie bywało, nie? I przeszliśmy do przez te wszystkie ciekawostki takie, no, na kilku wybranych przykładach, ale tak, żeby zilustrować zagadnienie. No i smaka sobie narobić i może komuś, kto tam jeszcze to słucha, narobić smaka na akurat spróbowanie swoich sił w takich algorytmach. Mnie na przykład bardzo intryguje taki ogarnięty agent, który by sobie w takim środowisku już odpowiednio skomplikowanym zaczął radzić. Nie tylko jak sobie tak pomyślę, że muszę to środowisko napisać, tego agenta i w ogóle to trochę nie ma czasu. No, ale przeszliśmy przez to wszystko, żeby dojść do tych ultra high-tech rozwiązań.
No i cóż, i można by to wszystko zamknąć tym, że właśnie przytaczanym już od dawna post mortem Magika w kilku prostych punktach. Bo to chyba obiecałem na na początku pierwszego odcinka, czy jakoś tak, jakoś w połowie. I oczywiście tam, no, kilka uwag odnośnie to tam już gdzieś tam zdążyliśmy sobie przypomnieć, ale tu mam wypunktowane kilka takich smaczków właśnie z tego post mortem. To przypomnę, 97 rok, to mamy ćwierć wieku do tyłu. Więc okładem kawałek.
Leciutkim kawał czasu, nie? Zwłaszcza w informatyce.
I z perspektywy autora tego artykułu, który niezmiennie polecam, wyglądało to tak, że on w momencie dołączenia do projektu został 100 000 linii kodu w C++ i to był ten właśnie stary silnik „Age’a” pierwszego. A jak projekt kończyli, to było 220 000 tych linii, czyli trochę jednak przybyło i on został zaproszony głównie do optymalizacji silnika, w sensie renderingu. No dobra, ogólnie optymalizacji silnika, żeby dało się przejść z takich mało optymistycznych 14 klatek na coś więcej, na przynajmniej tam chyba była mowa o 30.
Oni chcieli chyba mogli wygenerować. No właśnie, nie mogli. Brakowało im tych wag. Bo nie, bo może sieć by jeszcze napisali, ale tych wag nie mieli. No i pewnie dlatego nie, nie zrobili tego. Ale on ma na podstawie, znaczy kilka miesięcy mu zajęło chyba o pięciu tam była mowa, analiza tego kodu, który tam zastał. Po czym po prostu pociął tą logikę, która była i dzięki temu odciążył całą pętlę gry. To tak upraszczając już zupełnie, nie? Ale takim mniej więcej sens był tej optymalizacji. No i na koniec osiągnął 55 FPS-ów. To po prostu go tam całowali po piętach z wrażenia. To jest dobra wartość, bo spadały kapcie.
No, jest bardzo dobra wartość, jak na takiego igrzyka i bardzo dobra wartość na względem tej cyferki początkowej, bo z 14 do 55.
Tak, przy 14 jest takie szarpanie, jak kiedyś odpaliłem „Dooma” na Amidze, to to się nie dało w to grać. No, ale biedaczka miała tam 14 MHz. Nie, no, to nie dziwię się, że 14 FPS.
No, to, to takie, taka optymalizacja właśnie była skutkiem tych jego prac i tutaj od razu wnioski, zresztą ja te wnioski też obserwowałem w tym prościutkim względem tego wszystkiego o projekcie szachowym, gdzie, gdzie musieliśmy przełożyć reguły, zaimplementować w tej nowej wersji silnika reguły z gry. Gdzie na początku był wielki entuzjazm, jak odpaliliśmy pierwszą wersję czegoś takiego, gdzie jeszcze prawie nie było reguł, nie? I to na jakimś tam takim podstawowym scenariuszu, który już mógł się na tym wykonać, śmigało kilka tysięcy razy szybciej niż kod ten, ten względem, którego mierzyliśmy, nie? Ale w miarę dokładania feature’ów dochodziło już tam w tych wszystkich sprawdzeń, po prostu obciążaliśmy już całą pętlę gry. No i tak samo ten sam wniosek jest w post mortem Magika, że we wczesnych etapach gry mamy małe obciążenie algorytmiczne tego, co tworzymy, ale w miarę rozbudowywania, dodawania contentu, dodawania jakiś tam nowych warunków, dodawania tutaj troszkę fizyki, tam troszkę AI, tutaj troszkę poprawiamy grafikę, coś tam w locie przeliczamy, i to wszystko siedzi w tych samych cyklach procesora. Cały czas są jakieś wyciąg w pamięci.
Ale na co to się przejmować, jak to po prostu dokładamy pamięci i mamy, nie? No, więc cała wydajność, jako całość, traci to uczucie płynności. Więc trzeba dbać o to, żeby jednak nie straciło. Nie. No i tutaj dobre wzorce wchodzą im właśnie te, co było pisane w artykule: Fixed or Time Step. Dokładnie znalazł zastosowanie też w, bo właśnie ten kolega pociął pętlę gry na plasterki. I co tam jeszcze? Aha, i jeszcze mieli problemy z tym, z dostawcą komponentów, bo mieli tam polegać w rozgrywce sieciowej na DirectX-ie w wersji piątej. Tam chodziło o DirectPlay, który miał dostarczyć gwarantowane te miał zapewnić gwarancję dostarczania pakietów w warstwie sieciowej, a tego nie dostarczył im Microsoft i po prostu ileś tam crunchu jeszcze doszło na na zrobienie tego, no bo musieli to zrobić po swojej stronie, bo bez tego granie hulała, bo się desynchronizowała i koniec. Nie można było grać po sieci, a obiecali, że będzie multiplayer. No, to musiał być.
No, tak, tak. No i właśnie w multiplayerze już na podstawie samego opisu widać, że CQRS tam jest zastosowany. Czyli już, już tutaj, już gra z XX wieku już ma wzorzec, który, który gdzieś tam aplikacje biznesowe wykorzystują dopiero od stosunkowo niedawna na szerszą skalę. Nie, biznesowe, czyli jakieś tam, no, takie bazy danych, jakiś system kontroli wersji wykorzystywały to w połączeniu z event sourcingiem już od jakiegoś czasu. A tutaj taka gra starutka, malutka i ma. Nie, bo wyszło, że na przykład w warstwie sieciowej przesyłali sobie tylko komendy. To jest właśnie to, o czym tutaj rozmawialiśmy, że jeden z tych klientów stawał się na czas rozgrywki tak, coś właśnie dzieje w tych grach, że on się staje serwerem i to on decyduje o tym, jak świat wygląda, a cała reszta dostaje update stanu gry i śle swoje komendy, które coś tam robią w sensie, przekazują informacje, co w jaki sposób należy ten świat gry zmodyfikować, bo właśnie użytkownik ten, czy ów, wydał taką komendę. Wszystko jest oczywiście data-driven, to, to o tym już mówiliśmy. No i jeszcze tutaj jako taki punkt ostatni to, to twórcy zostali pochwaleni, znakomite wsparcie dla lokalizacji. Dlatego tam gra wyszła w ośmiu językach, w tym w azjatyckich, co nie jest wcale takie proste, jak się okazuje. Natomiast to odciążenie warstwy algorytmicznej jakichkolwiek danych data-driven, to tu wybitnie pomogło też w lokalizacji. No i pod kątem naszej sztucznej inteligencji przede wszystkim, taki wniosek z etapu testowania mieli, żeby testować jak najwcześniej, co może nie jest super nowatorskie, ale właśnie pomaga wykrywać te takie trudne błędy.
Oczywiście, jak jest dobrze zrobione. Nie musi być na czym testować, no i wtedy możemy odpalić do testowania. Ale okazało się, że mieli na przykład bagi w wyszukiwaniu ścieżek, które zostały załatane dopiero chyba w patchu. Druga rzecz, to testowanie automatyczne. Zrobili to i super. I super im się to opłaciło, bo właśnie ten ta rozgrywka multiplayera na 8 stanowisk, nadzorem dwóch jakiś tam supervisorów, to się sprawdziło znakomicie. Tutaj też widać ten aspekt CQRS-owy, bo po prostu strumienie komunikatów sobie przechwytywali z takiej rozgrywki i mogli go później analizować, mogli nawet bagi na tym fiksować. Omawialiśmy te techniki przy okazji eventologii naszej, a tu już proszę, zastosowane.
I co? No i ten, tak. No i Fixed or Time Step wplecenie, aaa, zgrabnie w pętlę gry, tak żeby nie przycinał, ale żeby była sensowna, ten, sensowna, że tak powiem, responsywność tego wszystkiego.
Post mortem, jak zwykle, są ciekawe. Są jeszcze jest drugie dla Age’a 2, to tam już już poszli troszkę do przodu, ale też mieli tam jakieś zgrzytania. Przepraszam, nie pamiętam tylko jakie, bo akurat po smutnym do drugiego to nie odświeżyłem sobie. Czytałem to chyba ostatnio ze 100, no, jak tak. Kilka lat temu.
Niemniej jednak, tym sposobem i trzema odcinkami chyba przeszliśmy do końca tej tego, tego działu naszego tutaj podcastu. Pewnie jeszcze do tematu wrócimy, czy to, czy to sztucznej inteligencji, czy, czy to gamedevu ogólnie. No, ale tutaj, jak widać, mieliśmy potrzebę wygadania się.
Zdecydowanie.I pohejtowania trochę tego czy tamtego.
To delikatnie, delikatnie. Ja tego nie nazwę hejtem, bo tutaj to nie jest hejt. To jest po prostu…
To nawet było uznanie momentami.
Momentami uznanie, momentami konstruktywna krytyka. Trzymajmy się tego, tego określenia. Hejtu jest wszędzie wystarczająco. Nie ma co dokładać.
Nie ma co.
Także… To chyba tyle.
Dobra, to dzięki za te trzy odcinki.
Dzięki.
Coś wymyślimy następne.
Oczywiście.
Do następnego.
Do następnego.