Dobici:
- Sposobnost izrade pouzdanog, kompilibilnog koda igre iz umjetne inteligencije dajući motor, verziju, jezik i arhitektonski kontekst i integrirajući ga čitanjem i razumijevanjem koda
- Sposobnost upravljanja performansama specifičnim za kod igre (dodjela po kadru), životnim ciklusom motora i rizicima od halucinacija putem kompilacije, testiranja i profiliranja
- Sposobnost primjene principa autoriteta domaćina u igrama za više igrača i odgovornog korištenja sigurnosnih informacija samo za odbranu i verifikaciju vlastite igre.
Igra je softverska; Bez obzira koliko je dobro dizajniran, implementiran je kodom. Motor igre je infrastruktura koja pokreće igru: Unity (naširoko korišćeni motor sa skriptom u C#) i Unreal Engine (mašinac koji koristi C++ i vizuelni skriptni jezik Blueprint) su dva najčešća. AI je jedno od najzrelijih pomagala u generiranju koda: kontroler igrača, sistem inventara, državne mašine, spremanje/učitavanje, logika interfejsa, otklanjanje grešaka i refaktoring (refaktorisanje koda bez narušavanja njegovog ponašanja). Ali kod igre ima svoje zamke: performanse (brzina kadrova), životni ciklus motora, sigurnost za više igrača. U ovoj jedinici ćete naučiti kako sigurno i efikasno koristiti AI u kodu igre.
Kritični princip: kontekst motora i verzije
Ako AI ne zna za koji motor i verziju piše, proizvešće zbunjeni, zastarjeli ili nepostojeći API. Zato dajte kontekst motora, verzije, jezika i arhitekture u svakom promptu koda. "Napiši kretanje igrača za Unity" je slab; "Unity 2022.3, C#, novi sistem unosa, pokret fizike zasnovan na krutom tijelu" je moćan. Navedite da li želite Blueprint ili C++ u Unrealu i koju verziju koristite.
Sigurno tok koda korak po korak:
- Dajte kontekst (mašina, verzija, jezik, trenutna arhitektura, ograničenja).
- Želite da bude mali i definisan (jedna komponenta, a ne ceo sistem).
- Pročitajte i razumite kod (shvatite šta radi red po red; nemojte stavljati kod koji ne razumijete).
- Napravi i testiraj (pokreni na motoru; profil — mjeri performanse).
- Refaktorirajte i integrirajte (poklapajte projektni standard).
Savjet: Kada od AI tražite kod, recite "objasni s komentarima". Vaš cilj je razumjeti kod; Stavljanjem AI koda koji ne razumijete u projekat akumuliraćete neodrživ dug. Takođe zatražite kod u malim komadima koji se mogu testirati: Umjesto sistema od 500 redova, komponenta od 30-50 linija koja radi jedan definirani posao je lako provjeriti i integrirati.
Zamke specifične za kod igre
Performanse. Kod igre radi 30-60+ puta u sekundi. AI može staviti skupe operacije (dodjela memorije, traženje, manipulacija stringovima) u petlju ažuriranja koja se pokreće na svakom kadru; ovo smanjuje brzinu kadrova. Profilirajte kritične kodove za performanse i dajte AI ograničenja kao što je "pokreni na svakom kadru, bez dodjele".
Životni ciklus motora. AI ponekad zbuni kada se pozovu posebne metode, kao što su Awake/Start/Update u Unity, BeginPlay/Tick u Unrealu. Uhvatite greške životnog ciklusa testiranjem.
Sigurnost za više igrača. Ovo je najkritičnije pitanje u smislu IT/sigurnosti. Nikada nemojte vjerovati klijentu u multiplayeru: klijentom na kompjuteru igrača može se manipulirati zbog varanja. Provjerite kritični status kao što su bodovi, šteta, novac na serveru (server-autoritativno). Kontrolirajte mrežni kod koji generira AI protiv ovog principa; Ako je AI stvorila ranjivost u kojoj klijenti vjeruju, popravite je. Koristite ove informacije samo da branite i potvrdite svoju igru; Neovlašteni pristup ili varanje na tuđem serveru je nezakonit i neetički.
Oprez: kod generisan od veštačke inteligencije može sadržati ranjivosti (nedostaje validacija unosa, poverenje klijenta, manipulacija datotekama za spremanje). Nemojte slijepo prihvatiti kod; Izvršite sigurnosni pregled, posebno mreže, ekonomije i koda za spremanje.
Dug za arhitektonsko i održavanje
AI brzo proizvodi pojedinačne funkcije; Ali arhitektura igre – kako su sistemi podijeljeni, kako razgovaraju jedni s drugima, gdje se čuvaju podaci – je dugoročna odluka i pripada čovjeku. Ako kažete AI da "zajedno napiše cijeli sistem inventara, borbe i spašavanja", dobićete funkcionalnu, ali čvrsto spojenu, teško održavanu, neproširivu klupku pređe. Umjesto toga, vi dizajnirate arhitekturu, koristite AI za popunjavanje malih komponenti definiranim sučeljima. Dobra arhitektura čini razliku kako igra raste: loše odluke se vraćaju godinu dana kasnije kao tehnički dug koji odlaže svaku novu funkciju.
Drugi izvor duga za održavanje je kod koji ulazi u projekat bez razumijevanja. Sistem koji je napisao AI danas bi mogao da funkcioniše; Ali kada morate da ga zamenite šest meseci kasnije i niko se ne seti šta je uradio, dug se pretvara u kamatu. Zbog toga su ključne dvije discipline: čitanje i razumijevanje koda u vrijeme proizvodnje i traženje pojašnjenih komentara od AI. Kao pravilo, nemojte stavljati nikakav AI kod u svoj projekat koji ne možete sami prepisati ili barem objasniti red po red. AI daje brzinu; Vaša disciplina daje održivost.
tri mini kofera
Slučaj 1 — Kontekst izdanja spriječio je grešku. Programer je prvo rekao: "Napiši inventar za Unity"; kod je koristio stari API, nije se kompajlirao. Zatim je dao kontekst "Unity 2022.3, C#, zasnovan na ScriptableObject"; kod kompajliran prvi put i odgovara projektu. Kontekst je uštedio sat vremena otklanjanja grešaka.
Slučaj 2 — Zamka performansi. U jednoj igrici broj kadrova je bio nizak. Prilikom profiliranja, vidjelo se da je metoda ažuriranja koju je proizvela AI dodijelila novu listu u svakom okviru i tražila neprijatelje. Ispravljen je kod sa keširanom referencom i nekvadratičnim ažuriranjem, povećavajući broj kadrova sa 42 na 60.
Slučaj 3 — Sigurnosna ranjivost uhvaćena. U igri za više igrača, kod generisan AI je izračunao štetu na klijentu i prijavio je serveru; ovo je bilo otvoreno za varanje (klijent je mogao nanijeti beskonačnu štetu). Kod je napravljen serversko-autoritarnim (server izračunava štetu). Revizija je spriječila skandal s varanjem nakon objavljivanja.
Četiri šablona za kopiranje
1) Kodni zahtjev sa kontekstom:
Motor: Unity 2022.3. Jezik: C#. Arhitektura: [npr. zasnovano na komponentama]. Ograničenje: Dodjela u ažuriranju; biti čitljiv i komentiran. Zadatak: [jedna, definirana komponenta, npr. "kontrolor znakova dvostrukog skoka"]. Provjerite da li je svaki API koji koristite u ovoj verziji; Ako niste sigurni, javite mi.
2) Objašnjenje/pregled koda:
Objasnite sljedeći kod red po red i napišite (1) šta radi, (2) moguće probleme s performansama (dodjela po okviru, skupa pretraga), (3) moguće greške, (4) prijedloge za poboljšanje. Kod: [zalijepi]
3) Sigurnosna revizija za više igrača:
Provjerite sljedeći kod za više igrača radi sigurnosti. Konkretno: mjesta gdje se klijentu vjeruje, kritično stanje koje treba provjeriti na serveru (šteta, bodovi, novac), nedostaje validacija unosa. Predložite popravku da server bude autoritaran. Ovo je samo da branim svoju igru. Šifra: [zalijepi]
4) Refaktor fokusiran na profil performansi:
Ovaj kod se pokreće na svakom kadru i smanjuje brzinu kadrova: [kod]. Pronađite alokacije, skupa pretraživanja i nepotrebne operacije okvir po kadar; Optimizirajte bez narušavanja ponašanja pomoću keširanja i rjeđih ažuriranja. Objasnite promjene.
Slaba prompt / Jaka prompt
Slab upit:
Napišite sistem spremanja u Unity.
Bez verzije, formata, obima podataka, sigurnosti; Rezultat je opći i rizičan.
Snažan upit:
Motor: Unity 2022.3, C#. Zadatak: JSON baziran sistem spremanja/učitavanja. Za spremanje: lokacija igrača, inventar, napredak. Ograničenje: dobiti upravljanje greškama protiv oštećenja datoteke; Dodajte provjeru integriteta (hash) u datoteku za spremanje kako biste spriječili varanje tako što ćete ga lako promijeniti od strane igrača. Komentirajte kod i provjerite da li je svaki API na ovoj verziji.
Verzija, opseg, rukovanje greškama i provjera integriteta ojačavaju izlaz.
Tabela konteksta motora/jezika
motor
jezik
Šta morate dati AI
posebnu pažnju
jedinstvo
C#
Verzija, Ulaz/fizički sistem
Alokacija ažuriranja, životni ciklus
nestvarno
Nacrt
Verzija, kontekst čvora
Vizuelne logičke granice
nestvarno
C++
Verzija, struktura modula
Memorija, GC, makroi
multiplayer
oboje
mrežni model
Prezenter-autoritarizam
Uobičajene greške
- Nije navedeno motor/verzija. Dolazi iz zastarjelog ili izmišljenog API-ja.
- Vjerovati kodu bez razumijevanja. Neodrživi dug se akumulira.
- Ne mjerenje performansi. Alokacija okvir po kadar tiho smanjuje brzinu kadrova.
- Poverenje klijentu. Postoji ranjivost varanja u multiplayeru.
- Želja ceo sistem odjednom. Mali komad koji se može testirati je sigurniji.
Ukratko
AI je moćan pomoćnik u kodu igre, ali zahtijeva motor, verziju i arhitektonski kontekst. Nemojte ga stavljati u projekat bez čitanja i razumijevanja koda, kompajliranja i testiranja, te provjere performansi i sigurnosti. Održavajte autoritarnost servera u igri za više igrača i koristite sigurnosne informacije samo u obrambene i verifikacijske svrhe.
Zadatak aplikacije
Odaberite malu komponentu (npr. dupli skok ili jednostavan inventar). Generirajte kod pružanjem motora i verzije sa šablonom "zahtjev za kodom s kontekstom". Zatim uklonite rizike performansi i greške tako što ćete isti kod pregledati pomoću šablona "Opis/pregled koda". Kompilirajte i testirajte kod u motoru.
kontrolna lista
- [ ] Dao sam kontekst motora, verziju, jezik i arhitekturu.
- [ ] Pročitao sam i razumio kod; Hteo sam to sa komentarom.
- [ ] Sastavio sam ga i testirao u motoru i izmjerio performanse.
- [ ] Uradio sam sigurnosnu provjeru u kodu za mrežu/ekonomiju/spremi.
- [ ] Koristio sam samo sigurnosne informacije da branim svoju igru.