{"id":3461,"date":"2023-05-04T06:59:04","date_gmt":"2023-05-04T06:59:04","guid":{"rendered":"http:\/\/architeles.eu\/ethics\/?p=3461"},"modified":"2023-05-09T10:07:37","modified_gmt":"2023-05-09T10:07:37","slug":"automatyczne-generowanie-kodu-w-pracy-programisty-gier-czy-stuczna-inteligencja-bedzie-nam-projektowac-gry-komputerowe","status":"publish","type":"post","link":"https:\/\/architeles.eu\/ethics\/index.php\/2023\/05\/04\/automatyczne-generowanie-kodu-w-pracy-programisty-gier-czy-stuczna-inteligencja-bedzie-nam-projektowac-gry-komputerowe\/","title":{"rendered":"Automatyczne generowanie kodu w pracy programisty gier. Czy stuczna inteligencja b\u0119dzie nam projektowa\u0107 gry komputerowe?"},"content":{"rendered":"<p><strong>Automatyczne generowanie kodu jest jednym z najgor\u0119tszych temat\u00f3w w dziedzinie informatyki i programowania. Zastosowanie sztucznej inteligencji (AI) do automatycznego projektowania gier jest fascynuj\u0105cym obszarem, kt\u00f3ry mo\u017ce ca\u0142kowicie zmieni\u0107 spos\u00f3b, w jaki tworzymy gry. Jednak czy naprawd\u0119 jeste\u015bmy gotowi, by odda\u0107 projektowanie gier w r\u0119ce maszyn?<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/staticsmartlife.mondo.rs\/Picture\/93200\/jpeg\/Shoon-game-created-by-AI-6.jpg?ts=2022-08-20T19:56:46\" alt=\"Shoon game created by artificial intelligence | business\" width=\"953\" height=\"715\" \/><!--more--><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 14pt;\"><strong>Proces projektowania gier<\/strong><\/span><\/p>\n<p>Produkcja gier nie odbywa si\u0119 z dnia na dzie\u0144, cz\u0119sto jest to nawet kilkuletni projekt. A wszystko zaczyna si\u0119 od pomys\u0142u \u2013 tak jak wiele innych rzeczy. Wiadomo mo\u017cna w ci\u0105gu kilku tygodni stworzy\u0107 nawet w porz\u0105dku gr\u0119, ale jednak warto, aby wszystko by\u0142o przemy\u015blane. Od pomys\u0142u powstaje jaki\u015b projekt, a nast\u0119pnie praca nad czym\u015b wst\u0119pnym. Dopiero po wst\u0119pnym zatwierdzeniu zaczyna si\u0119 konkretna praca, czyli tworzenie muzyki, d\u017awi\u0119k\u00f3w, grafik, animacji itd. A na ko\u0144cu i tak s\u0105 nadal potrzebni testerzy, aby przej\u015b\u0107 ca\u0142\u0105 gr\u0119 lub rozegra\u0107 wiele mecz\u00f3w. Wszystko po to, \u017ceby gra by\u0142a dopracowana co do pixela \u2013 a tak powa\u017cnie to kto\u015b musi najpierw sprawdzi\u0107 czy nie ma jakich\u015b b\u0142\u0119d\u00f3w, czy gra za bardzo nie \u015bcina itd. Potem wje\u017cd\u017ca etap ewentualnych poprawek i gotowe.<\/p>\n<p><strong><span style=\"font-size: 14pt;\">AI a generowanie zawarto\u015bci w grach<\/span><\/strong><\/p>\n<p>W\u015br\u00f3d r\u00f3\u017cnych dziedzin potrzebnych do stworzenia gier istniej\u0105 dwie, kt\u00f3re aktualnie jeste\u015bmy w stanie mocno wspom\u00f3c AI. S\u0105 nimi grafika i muzyka, kt\u00f3re poprzez narz\u0119dzia typu <a href=\"https:\/\/poly.cam\/material-generator\">polycam<\/a> (generator tekstur), <a href=\"https:\/\/www.nvidia.com\/pl-pl\/studio\/canvas\/\">NVIDIA Canvas<\/a> (grafiki koncepcyjne, t\u0142a menu), <a href=\"https:\/\/soundraw.io\/\">soundraw<\/a> (muzyka, d\u017awi\u0119ki), mo\u017cemy w du\u017cym stopniu zautomatyzowa\u0107 lub co najmniej wspomaga\u0107 si\u0119 nimi w procesie tworzenia. Dziedzin\u0105 wart\u0105 uwagi jest natomiast animacja, tutaj mamy od do\u015b\u0107 dawna do czynienia wykorzystania AI wewn\u0105trz gry &#8211; lip-sync (synchronizacja d\u017awi\u0119ku z ruchem warg postaci). Nie wspomnianym jeszcze tematem jest tworzenie historii\/dialog\u00f3w\/interakcji w grze. Tutaj mo\u017cemy si\u0119 pos\u0142u\u017cy\u0107 narz\u0119dziami typu <a href=\"https:\/\/openai.com\/blog\/chatgpt\">Chat-GPT<\/a> do stworzenia np. szkieletu historii gry ale niestety aby nasza gra posiada\u0142a pewn\u0105 g\u0142\u0119bie wymaga interwencji cz\u0142owieka.<\/p>\n<p>I tu przechodzimy do g\u0142ownego punktu &#8211; programowania. Tworzenie gier pod k\u0105tem programistycznym jest bardzo skomplikowanym procesem &#8211; od wyboru silnika w kt\u00f3rym b\u0119dziemy pracowa\u0107 do implementacji poszczeg\u00f3lnych interakcji pomi\u0119dzy graczem a \u015bwiatem. Sam wyb\u00f3r silnika jest procesem bardzo skomplikowanym chod\u017a z roku na rok jest on upraszczany poprzez firmy typu EpicGames czy Unity kt\u00f3re tworz\u0105 swoje silniki na u\u017cytek publiczny staraj\u0105c si\u0119 by\u0107 na bie\u017c\u0105co ze zmianami w nowych kartach graficznych. Wiele zespo\u0142\u00f3w jednak decyduje si\u0119 na implementacj\u0119 swojego silnika ze wzgl\u0119du na r\u00f3\u017cne ograniczenia kt\u00f3re s\u0105 nak\u0142adane przez te og\u00f3lnie dost\u0119pne. St\u0105d zesp\u00f3\u0142 decyduj\u0105cy si\u0119 na tak\u0105 implementacj\u0119 gry musi r\u00f3wnie\u017c posiada\u0107 du\u017c\u0105 wiedz\u0119 na temat tworzenia silnik\u00f3w jak i obs\u0142ugi niskopoziomowych API graficznym jak DirectX, OpenGL czy Vulkan. Jest to proces w kt\u00f3rym niestety \u017cadne AI nie jest w stanie sobie poradzi\u0107, narz\u0119dzia typu <a href=\"https:\/\/github.com\/features\/copilot\">GitHub Copilot<\/a> b\u0119d\u0105 nam w stanie tutaj oczywi\u015bcie pom\u00f3c jednak\u017ce z powodu braku danych treningowych (procent kodu obs\u0142uguj\u0105cego API graficzne na platformach typu GitHub jest bardzo znikomy) nie b\u0119d\u0105 tego robi\u0107 w spos\u00f3b znacz\u0105co pomocny.<br \/>\nZa\u0142\u00f3\u017cmy jednak, \u017ce korzystamy z bardzo zaawansowanego silnika do gier, kt\u00f3ry w du\u017cym stopniu odpowiada naszym potrzebom. Nawet dobrze rozwini\u0119ty silnik z r\u00f3\u017cnymi systemami do obs\u0142ugi fizyki\/audio itd. wymaga dalej du\u017co pracy aby po\u0142\u0105czy\u0107 ca\u0142\u0105 mechanik\u0119 i systemy gry z faktycznymi elementami w \u015bwiecie gry. Tutaj najcz\u0119\u015bciej praca programisty ogranicza si\u0119 do tworzenia &#8222;szablon\u00f3w&#8221; kt\u00f3re potem zesp\u00f3\u0142 game designer\u00f3w mo\u017ce wykorzystywa\u0107 do &#8222;pod\u0142\u0105czania&#8221; element\u00f3w \u015bwiata do kodu. W tym obszarze jeste\u015bmy w du\u017cym stopniu w stanie wykorzystywa\u0107 asystent\u00f3w kodowania jako i\u017c ta &#8222;cz\u0119\u015b\u0107&#8221; kodu gry jest bardzo modularna i przypomina struktur\u0105 kod pisany w innych bran\u017cach programowania.<br \/>\nJednak\u017ce du\u017c\u0105 cz\u0119\u015b\u0107 gier posiada potrzeb\u0119 tworzenia tzw. efekt\u00f3w wizualnych, kt\u00f3re s\u0105 wykonywane na karcie graficznej, o ile silniki typu Unity czy Unreal posiadaj\u0105 narz\u0119dzia kt\u00f3re pozwalaj\u0105 stworzy\u0107 takie efekty nie pisz\u0105c nawet linijki kodu to wci\u0105\u017c s\u0105 to narz\u0119dzia wymagaj\u0105ce bardzo dobrej znajomo\u015bci matematyki. W przypadku braku tych narz\u0119dzi programi\u015bci s\u0105 zmuszeni do pisania niskopoziomowo tych narz\u0119dzi wymuszaj\u0105c na nich jeszcze lepsz\u0105 znajomo\u015b\u0107 w dziedzinie matematyki. Tutaj asystenci kodowania kompletnie nie zdaj\u0105 testu &#8211; z powodu skomplikowania kodu pisanego do efekt\u00f3w wizualnych.<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/i.ytimg.com\/vi\/uUHRJ26gMGI\/maxresdefault.jpg\" alt=\"Unity Visual Effect Graph Showcase - YouTube\" width=\"1084\" height=\"610\" \/><\/p>\n<p>Najwi\u0119kszym problemem dla automatycznych generator\u00f3w kodu w grach komputerowych jest fakt braku pewnego ustandaryzowania struktury kodu w grach. Wszystkie cz\u0119\u015bci gier komputerowych zaczynaj\u0105c od przechowywania danych do system\u00f3w UI w grach nie posiadaj\u0105 og\u00f3lnie u\u017cywanych standard\u00f3w. O ile np. programowanie aplikacji Webowych posiada pewne standardy takie jak bazy danych do przechowywania danych, REST API do komunikacji, HTTP jako protok\u00f3\u0142 przesy\u0142u danych to programowanie gier nie posiada jednego standardy na przechowywanie danych (niekt\u00f3ry gry zapisuj\u0105 stan binarnie, niekt\u00f3re korzystaj\u0105 z mini baz danych), wykorzystywane protoko\u0142y internetowe s\u0105 zale\u017cne o typu gry (czasami TCP czasami UDP) nie m\u00f3wi\u0105c o fakcie, \u017ce sam typ gry mo\u017ce determinowa\u0107 struktur\u0119 kodu.<\/p>\n<p><strong><span style=\"font-size: 14pt;\">Epidemia gier niskiej jako\u015bci<\/span><\/strong><\/p>\n<p>Obecne narz\u0119dzia pozwalaj\u0105 na tworzenie gier z minimalnym wk\u0142adem artystycznym, st\u0105d jest mo\u017cliwe, \u017ce wraz z popraw\u0105 i rozwojem tych narz\u0119dzi b\u0119dziemy widzie\u0107 na rynku du\u017co nowych tytu\u0142\u00f3w wykorzystuj\u0105cych w du\u017cym stopniu pomoc AI. Jest to kierunek, kt\u00f3ry mo\u017ce spowodowa\u0107 zalew rynku przez \u015bredniej lub niskiej jako\u015bci gry. Konsekwencj\u0105 tego mo\u017ce by\u0107 zwi\u0119kszenie koszt\u00f3w marketingowy przy wydawaniu gier, nie wspominaj\u0105c nawet o problemach kt\u00f3re b\u0119d\u0105 mia\u0142y studia produkuj\u0105ce niskobud\u017cetowe gry o wysokiej jako\u015bci.<br \/>\nW historii tego rynku by\u0142y ju\u017c okresy w kt\u00f3rych takie sytuacje mia\u0142y miejsce &#8211; eksplozja s\u0142abych gier na platformie Steam stworzonych z u\u017cyciem silnika Unity, czy te\u017c ogromna liczba gier mobilnych wydanych na Androida w momencie wyj\u015bcia na rynek tanich i relatywnie wydajnych smartfon\u00f3w. W obydwu tych przypadkach zadaniem okie\u0142znania tych problem\u00f3w by\u0142y obarczone firmy udzielaj\u0105ce us\u0142ug platform do gier czyli w tym przypadku Valve i Google. Dzia\u0142ania te mo\u017cna skr\u00f3ci\u0107 do zaostrzenia polityki dodawania nowych gier na platform\u0119, co na szcz\u0119\u015bcie nie odbi\u0142o si\u0119 negatywnie na rynku ale nale\u017cy pami\u0119ta\u0107, \u017ce w przypadku gier generowanych przez AI mo\u017ce by\u0107 problemem bardziej skomplikowanym.<\/p>\n<p><strong><span style=\"font-size: 14pt;\">Post\u0119puj\u0105cy proces automatyzacji<\/span><\/strong><\/p>\n<p>Na przestrzeni lat rynek gier komputerowych wraz z rozrostem stara\u0142 si\u0119 &#8222;ekstrahowa\u0107&#8221; pewne elementy aby zmodularyzowa\u0107 proces produkcji gier. Powstawa\u0142y firmy specjalizuj\u0105ce si\u0119 w danych dziedzinach, udost\u0119pniaj\u0105ce us\u0142ugi pozwalaj\u0105ce u\u017cytkownikom ko\u0144cowym &#8211; producentom gier &#8211; jak najbardziej przyspieszy\u0107 ten proces w celu skupienia si\u0119 na najwa\u017cniejszym elemencie gry &#8211; interakcj\u0105 gry z graczem. Wi\u0119kszo\u015b\u0107 z tych us\u0142ug by\u0142o platformami pozwalaj\u0105cymi na zam\u00f3wienie muzyki, efekt\u00f3w d\u017awi\u0119kowych, repozytoria tekstur, modeli czy te\u017c us\u0142ugi tworzenia modeli i tekstur. Oczywi\u015bcie nie mo\u017cemy zapomnie\u0107 o firmach, kt\u00f3re zajmuj\u0105 si\u0119 tylko i wy\u0142\u0105cznie rozwijaniem silnik\u00f3w do gier.<br \/>\nUs\u0142ugi wspierane AI na pewno mog\u0105 by\u0107 bardzo dobrym dodatkiem do obecnej palety, co wi\u0119cej mog\u0105 pozwoli\u0107 na rozwini\u0119cie obecnych narz\u0119dzi o np. automatycznej korekcji obraz\u00f3w\/tekstur przez klienta bez potrzeby anga\u017cowania artysty.<\/p>\n<p>W przypadku kodowania gier takie narz\u0119dzia AI mog\u0142yby by\u0107 dobrym pomocnikiem w procesie nauki oraz pewnego rodzaju asystentem przy problemach zwi\u0105zanych z obs\u0142ug\u0105 karty graficznej. Pomoc asystent\u00f3w kodowania mog\u0142yby pomaga\u0107 w tworzeniu szkielet\u00f3w r\u00f3\u017cnych system\u00f3w do gier jak np. sterowanie graczem lub samochodem czy generowanie niekt\u00f3rych cz\u0119sto wykorzystywane efekt\u00f3w wizualnych w grach.<\/p>\n<p><strong><span style=\"font-size: 14pt;\">Podsumowanie<br \/>\n<\/span><\/strong><span style=\"font-size: 14pt;\"><span style=\"font-size: 12pt;\">Obecne narz\u0119dzia AI na moment obecny nie s\u0105 na tyle rozwini\u0119te aby by\u0142y w stanie w pe\u0142ni zautomatyzowa\u0107 proces produkcji gier komputerowych w tym w du\u017cym stopniu automatyzacji pisania kodu gier. O ile jeste\u015bmy w stanie wykorzysta\u0107 obecnie dost\u0119pne narz\u0119dzia jako \u017ar\u00f3d\u0142o inspiracji podczas procesu tworzenia gry to m\u00f3wienie o pe\u0142nej automatyzacji czy asy\u015bcie w du\u017cym stopniu na razie nie ma mowy.<br \/>\nAktualnie nawet du\u017ca cze\u015b\u0107 silnik\u00f3w graficznych u\u017cywanych w grach nie jest &#8222;w pe\u0142ni&#8221; rozwini\u0119ta i nie pozwala na pe\u0142ne wykorzystanie mo\u017cliwo\u015bci GPU nie m\u00f3wi\u0105c nawet o fakcie ogromnej dynamiki z jak\u0105 idzie ich rozw\u00f3j (w ostatnich latach do kart graficznych dosz\u0142o mniej wi\u0119cej tyle funkcjonalno\u015bci i mo\u017cliwo\u015bci co przez ca\u0142y czas ich rozwoju przed). Mo\u017cemy st\u0105d wywnioskowa\u0107, \u017ce wiedza\/poziom AI potencjalnie pozwalaj\u0105cego nam przyspieszy\u0107 prac\u0119 nad kodem jest co najmniej op\u00f3\u017aniona o par\u0119 lat wzgl\u0119dem poziomu game deweloper\u00f3w.<br \/>\n<\/span><\/span>Z pewno\u015bci\u0105 mo\u017cna natomiast powiedzie\u0107, \u017ce pomoc asystent\u00f3w kodowania wraz z czasem b\u0119dzie coraz lepsza co b\u0119dzie pozwala\u0142o na szybszy proces produkcji gier.<\/p>\n<p><strong><span style=\"font-size: 14pt;\">Literatura<\/span><\/strong><\/p>\n<ul>\n<li><a href=\"https:\/\/pl.wikipedia.org\/wiki\/Tworzenie_gry_komputerowej\">https:\/\/pl.wikipedia.org\/wiki\/Tworzenie_gry_komputerowej<\/a><\/li>\n<li><a href=\"https:\/\/poly.cam\/material-generator\">https:\/\/poly.cam\/material-generator<\/a><\/li>\n<li><a href=\"https:\/\/www.nvidia.com\/pl-pl\/studio\/canvas\/\">https:\/\/www.nvidia.com\/pl-pl\/studio\/canvas\/<\/a><\/li>\n<li><a href=\"https:\/\/soundraw.io\/\">https:\/\/soundraw.io\/<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=o3h6-oRgYd0\">Using ChatGPT to generate game ideas<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Automatyczne generowanie kodu jest jednym z najgor\u0119tszych temat\u00f3w w dziedzinie informatyki i programowania. Zastosowanie sztucznej inteligencji (AI) do automatycznego projektowania gier jest fascynuj\u0105cym obszarem, kt\u00f3ry mo\u017ce ca\u0142kowicie zmieni\u0107 spos\u00f3b, w jaki tworzymy gry. Jednak czy naprawd\u0119 jeste\u015bmy gotowi, by odda\u0107 projektowanie gier w r\u0119ce maszyn?<\/p>\n","protected":false},"author":141,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[225],"tags":[266,215,283,284],"class_list":["post-3461","post","type-post","status-publish","format-standard","hentry","category-agh-2022-23","tag-github-copilot","tag-gry","tag-unity","tag-unreal"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/posts\/3461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/users\/141"}],"replies":[{"embeddable":true,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/comments?post=3461"}],"version-history":[{"count":13,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/posts\/3461\/revisions"}],"predecessor-version":[{"id":3566,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/posts\/3461\/revisions\/3566"}],"wp:attachment":[{"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/media?parent=3461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/categories?post=3461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/architeles.eu\/ethics\/index.php\/wp-json\/wp\/v2\/tags?post=3461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}