Egység 7 / 11

Kódgenerálás és motorintegráció: Unity (C#) és Unreal (Blueprint/C++)

Nyereség:

  • Képes megbízható, lefordítható játékkód előállítására mesterséges intelligenciából motor, verzió, nyelv és architekturális kontextus megadásával, valamint integrálása a kód olvasásával és megértésével
  • Képes kezelni a játékkód-specifikus teljesítményt (keretenkénti kiosztás), a motor életciklusát és a hallucinációs kockázatokat összeállítással, teszteléssel és profilalkotással
  • Képes alkalmazni a host-authority elvét a többjátékos játékokban, és a biztonsági információkat felelősségteljesen csak a saját játék védelmére és ellenőrzésére használhatja fel.

A játék szoftver; Nem számít, milyen jól van megtervezve, kóddal valósítják meg. A játékmotor az az infrastruktúra, amely a játékot futtatja: a Unity (széles körben használt C#-ban szkriptezett motor) és az Unreal Engine (C++-t és a Blueprint vizuális szkriptnyelvet használó motor) a két leggyakoribb. A mesterséges intelligencia az egyik legkiforrottabb segédeszköz a kódgenerálásban: lejátszóvezérlő, leltárrendszer, állapotgépek, mentés/betöltés, interfész logika, hibakeresés és újrafaktorálás (a kód újrafaktorálása a viselkedés megtörése nélkül). De a játékkódnak megvannak a maga buktatói: teljesítmény (kockasebesség), motor életciklusa, többjátékos biztonság. Ebben az egységben megtanulhatja, hogyan használhatja biztonságosan és hatékonyan az AI-t a játékkódban.

Kritikus alapelv: motor- és verziókontextus

Ha az AI nem tudja, melyik motorhoz és verzióhoz ír, zavaros, elavult vagy nem létező API-t fog készíteni. Tehát minden kódparancsban adja meg a motort, a verziót, a nyelvet és az architektúrát. A "Write player mozgás az Unity számára" gyenge; "Unity 2022.3, C#, új beviteli rendszer, merev test alapú fizikai mozgás" erőteljes. Adja meg, hogy Blueprintet vagy C++-t szeretne-e az Unrealban, és melyik verziót használja.

Biztonságos kódfolyam lépésről lépésre:

  1. Adja meg a kontextust (motor, verzió, nyelv, jelenlegi architektúra, megszorítások).
  2. Kicsit és definiált (egykomponensű, nem a teljes rendszer) szeretné.
  3. Olvassa el és értse meg a kódot (sorról sorra értse meg, mit csinál; ne írjon be olyan kódot, amelyet nem ért).
  4. Építsd meg és teszteld (működtesse motoron; profil – mérje meg a teljesítményt).
  5. Refaktor és integrál (egyezik a projekt szabványával).
Tipp: Amikor kódot kér az AI-tól, mondja azt, hogy „magyarázza meg megjegyzésekkel”. A cél a kód megértése; Ha olyan AI-kódot helyez el egy projektbe, amelyet nem ért, fenntarthatatlan adósság halmozódik fel. Kérjen kódot kis, tesztelhető darabokban is: Az 500 soros rendszer helyett egy 30-50 soros komponens, amely egyetlen meghatározott munkát végez, könnyen ellenőrizhető és integrálható.

A játék kódjára jellemző csapdák

Teljesítmény. A játékkód másodpercenként 30-60+ alkalommal fut le. A mesterséges intelligencia drága műveleteket (memóriafoglalás, keresés, karakterlánc-manipuláció) helyezhet az egyes kereteknél futó frissítési ciklusba; ez csökkenti a képkockasebességet. Profilteljesítményre vonatkozó kritikus kódok és mesterséges intelligencia-korlátozások megadása, például „minden kereten fut, nincs kiosztás”.

A motor életciklusa. A mesterséges intelligencia néha összezavarodik, amikor speciális módszereket hívnak meg, mint például az Awake/Start/Update a Unityben, a BeginPlay/Tick az Unrealban. Az életciklus-hibákat teszteléssel fedezze fel.

Többjátékos biztonság. Ez a legkritikusabb kérdés IT/biztonsági szempontból. Soha ne bízzon a kliensben a többjátékos módban: a játékos számítógépén lévő kliens manipulálható csalás miatt. Ellenőrizze a kritikus állapotot, például pontokat, sérüléseket, pénzt a szerveren (szerver-hatóság). Ezzel az elvvel szemben szabályozhatja az AI által generált hálózati kódot; Ha az AI ügyfélben megbízható biztonsági rést hozott létre, javítsa ki. Ezt az információt csak saját játékod védelmére és ellenőrzésére használja; Valaki más szerveréhez való jogosulatlan hozzáférés vagy csalás illegális és etikátlan.

Vigyázat: Az AI által generált kód sérülékenységeket tartalmazhat (hiányzó bemeneti ellenőrzés, ügyfél-bizalom, mentési fájl manipuláció). Ne fogadja el vakon a kódot; Végezzen biztonsági felülvizsgálatot, különös tekintettel a hálózatra, a gazdaságosságra és a kód mentésére.

Építészeti és karbantartási tartozás

Az AI gyorsan állít elő egyedi funkciókat; De a játék architektúrája – a rendszerek felosztása, hogyan beszélnek egymással, hol tárolják az adatokat – hosszú távú döntés, és az emberé. Ha azt mondod az AI-nak, hogy "írja meg a teljes leltárt, harcoljon és mentse el a rendszert", akkor egy működő, de szorosan összekapcsolt, nehezen karbantartható, nem tágítható fonalgolyót kap. Ehelyett meg kell tervezni az architektúrát, és mesterséges intelligencia segítségével feltöltheti a kis komponenseket meghatározott interfészekkel. A jó architektúra változást jelent a játék növekedésével: a rossz döntések egy évvel később technikai adósságként jönnek vissza, ami késlelteti az új funkciókat.

A fenntartási tartozás másik forrása a kód, amely anélkül lép be a projektbe, hogy megértenék. Egy mesterséges intelligencia által írt rendszer ma is működhet; De ha hat hónappal később ki kell cserélni, és senki sem emlékszik arra, hogy mit csinált, az adósság kamatlá változik. Ezért két tudományág elengedhetetlen: a kód gyártás közbeni olvasása és megértése, valamint a pontosító megjegyzések kérése az AI-tól. Alapszabály, hogy ne helyezzen be olyan mesterséges intelligencia kódot a projektjébe, amelyet nem tud átírni, vagy legalábbis soronként elmagyarázni. Az AI sebességet ad; Fegyelmed fenntarthatóságot ad.

három mini tok

1. eset – A kiadási környezet megakadályozta a hibát. Egy programozó először azt mondta: "Írjon leltárt a Unity számára"; a kód egy régi API-t használt, nem fordult le. Ezután megadta a „Unity 2022.3, C#, ScriptableObject alapú” kontextust; az első alkalommal összeállított kód, és illeszkedik a projekthez. A kontextus megspórolt egy órát a hibakereséstől.

2. eset – Teljesítménycsapda. Az egyik játékban alacsony volt a képkockasebesség. A profilalkotás során látható volt, hogy az AI által készített Update metódus minden keretben új listát jelölt ki, és ellenségeket keresett. Javítva a kód gyorsítótárazott referenciával és nem kvadratikus frissítéssel, így a képkockasebesség 42-ről 60-ra nőtt.

3. eset – Biztonsági sebezhetőséget észleltek. Egy többszereplős játékban az AI által generált kód kiszámította a kliens kárát, és jelentette azt a szervernek; ez nyitott volt a csalásra (az ügyfél végtelen kárt okozhat). A kódot szerver-hatóságivá tették (a szerver számítja ki a kárt). Az ellenőrzés megakadályozta a megjelenés utáni csalási botrányt.

Négy másolható sablon

1) Kódkérelem kontextussal:

Motor: Unity 2022.3. Nyelv: C#. Építészet: [pl. komponens alapú].Kényszer: Lefoglalás frissítésben; legyen olvasható és kommentálható.Feladat: [egyetlen, meghatározott komponens, pl. "duplaugrásos karaktervezérlő"]. Ellenőrizze, hogy minden használt API ebben a verzióban van-e; Ha nem biztos benne, szóljon.

2) A kód magyarázata/áttekintése:

Magyarázza el soronként a következő kódot, és írja le (1) mit csinál, (2) lehetséges teljesítményproblémákat (keretenkénti kiosztás, drága keresés), (3) lehetséges hibákat, (4) javítási javaslatokat.Kód: [beillesztés]

3) Többszereplős biztonsági audit:

A biztonság érdekében vizsgálja meg a következő többjátékos kódot. Konkrétan: helyek, ahol a kliensben megbíznak, kritikus állapot, amit ellenőrizni kell a szerveren (kár, pont, pénz), hiányzik a bemenet érvényesítése. Javasoljon javítást a szerver tekintélyelvűvé tételéhez. Ez csak a saját játékom védelmét szolgálja. Kód: [beillesztés]

4) Teljesítményprofilra fókuszáló faktor:

Ez a kód minden képkockán fut, és csökkenti a képkocka-sebességet: [kód]. Találja meg a kiosztásokat, a drága kereséseket és a szükségtelen képkockánkénti műveleteket; A gyorsítótárral és a ritkább frissítésekkel optimalizálja a viselkedést anélkül, hogy megszakadna. Magyarázza el a változásokat.

Gyenge felszólítás / Erős felszólítás

Gyenge felszólítás:

Írjon mentési rendszert a Unity-ben.

Nincs verzió, formátum, adatkör, biztonság; Az eredmény általános és kockázatos.

Erőteljes felszólítás:

Motor: Unity 2022.3, C#. Feladat: JSON alapú mentési/betöltési rendszer. Mentendő: játékos helye, leltár, haladás. Megszorítás: hibakezelés a fájlsérülés ellen; Adjon hozzá egy integritás-ellenőrzést (hash) a mentési fájlhoz, hogy elkerülje a csalást azáltal, hogy a lejátszó egyszerűen módosítja azt. Írja megjegyzésbe a kódot, és ellenőrizze, hogy minden API-nak ez a verziója van-e.

A verziószám, a hatókör, a hibakezelés és az integritás ellenőrzése keményíti a kimenetet.

Motor/nyelv környezeti táblázat

motor

nyelvet

Mit kell adnod az AI-nak

különös figyelmet

egység

C#

Verzió, beviteli/fizikai rendszer

Frissítse kiosztását, életciklusát

valószerűtlen

Tervrajz

Verzió, csomópont környezet

Vizuális logikai korlátok

valószerűtlen

C++

Verzió, modul felépítés

Memória, GC, makrók

többjátékos

mindkettőt

hálózati modell

Előadó-autoritarizmus

Gyakori hibák

  • Nincs megadva motor/verzió. Elavult vagy kitalált API-ból származik.
  • Bízni a kódban anélkül, hogy megértené. Fenntarthatatlan adósság halmozódik fel.
  • Nem a teljesítmény mérése. A kockánkénti kiosztás csendesen csökkenti a képkockasebességet.
  • Bízva az ügyfélben. A többjátékos játékban csalási sebezhetőség található.
  • Egyszerre akarja az egész rendszert. A kicsi, kipróbálható darab biztonságosabb.

Összefoglalva

Az AI egy hatékony segítő a játékkódban, de ehhez motorra, verzióra és architekturális kontextusra van szükség. Ne helyezze be egy projektbe anélkül, hogy elolvasta és megértette a kódot, lefordította és tesztelte, valamint nem ellenőrizte a teljesítményt és a biztonságot. Fenntartja a kiszolgálói tekintélyelvűséget a többjátékos játékban, és a biztonsági információkat csak védekezési és ellenőrzési célokra használja.

Pályázati feladat

Válasszon egy kis komponenst (pl. dupla ugrás vagy egyszerű készlet). Kód generálásához adja meg a motort és a verziót a „kódkérés kontextussal” sablonnal. Ezután távolítsa el a teljesítmény- és hibakockázatokat azáltal, hogy ugyanazt a kódot vizsgálja felül a „Kódleírás/áttekintés” sablonnal. Fordítsa le és tesztelje a kódot a motorban.

ellenőrző lista

  • [ ] Megadtam a motort, a verziót, a nyelvet és az architektúrát.
  • [ ] Elolvastam és megértettem a kódot; Kommentárral akartam.
  • [ ] Összeállítottam és teszteltem a motorban és mértem a teljesítményt.
  • [ ] Végeztem egy biztonsági ellenőrzést a hálózatban/gazdaságos/mentési kódban.
  • [ ] Csak a saját játékom védelmére használtam a biztonsági információkat.