zisky:
- Schopnost vytvářet spolehlivý, kompilovatelný herní kód z umělé inteligence poskytnutím enginu, verze, jazyka a architektonického kontextu a integrovat jej čtením a porozuměním kódu
- Schopnost řídit výkon specifický pro herní kód (přidělení na snímek), životní cyklus motoru a rizika halucinací prostřednictvím kompilace, testování a profilování
- Schopnost uplatnit princip host-autority ve hrách pro více hráčů a zodpovědně využívat bezpečnostní informace pouze k obraně a ověřování vlastní hry.
Hra je software; Bez ohledu na to, jak dobře je navržen, je implementován pomocí kódu. Herní engine je infrastruktura, díky které hra běží: Unity (široce používaný engine napsaný v C#) a Unreal Engine (engin využívající C++ a vizuální skriptovací jazyk Blueprint) jsou dva nejběžnější. Umělá inteligence je jednou z nejvyspělejších pomůcek při generování kódu: ovladač hráče, inventární systém, stavové automaty, ukládání/načítání, logika rozhraní, ladění a refaktorování (refaktorování kódu bez porušení jeho chování). Herní kód má ale svá úskalí: výkon (snímková frekvence), životní cyklus motoru, zabezpečení pro více hráčů. V této jednotce se naučíte, jak používat AI bezpečně a efektivně v kódu hry.
Kritický princip: engine a kontext verze
Pokud AI neví, pro který engine a verzi píše, vytvoří zmatené, zastaralé nebo neexistující API. V každé výzvě kódu tedy uveďte kontext motoru, verze, jazyka a architektury. "Pohyb hráče napsat pro Unity" je slabý; „Unity 2022.3, C#, nový vstupní systém, fyzikální pohyb založený na pevném těle“ je výkonný. Určete, zda chcete v Unrealu Blueprint nebo C++ a jakou verzi používáte.
Zabezpečený tok kódu krok za krokem:
- Uveďte kontext (engine, verze, jazyk, aktuální architektura, omezení).
- Chtějte to malé a definované (jedna komponenta, ne celý systém).
- Přečtěte si a pochopte kód (pochopte, co dělá řádek po řádku; nevkládejte kód, kterému nerozumíte).
- Sestavte a otestujte (běh na motoru; profil – měření výkonu).
- Refaktorujte a integrujte (odpovídají standardu projektu).
Tip: Když požádáte AI o kód, řekněte „vysvětlete pomocí komentářů“. Vaším cílem je porozumět kódu; Vložením kódu AI, kterému nerozumíte, do projektu se nahromadí neudržitelný dluh. Požádejte také o kód v malých, testovatelných kouscích: Místo 500řádkového systému lze snadno ověřit a integrovat 30-50řádkovou komponentu, která vykonává jedinou definovanou úlohu.
Pasti specifické pro kód hry
Výkon. Herní kód běží 30-60+krát za sekundu. Umělá inteligence může vložit nákladné operace (alokace paměti, vyhledávání, manipulace s řetězci) do aktualizační smyčky, která běží na každém snímku; to snižuje snímkovou frekvenci. Profilujte výkonově kritické kódy a dávejte omezení AI, jako je „běh na každém snímku, žádná alokace“.
Životní cyklus motoru. Umělá inteligence někdy mate, když jsou volány speciální metody, jako je Awake/Start/Update v Unity, BeginPlay/Tick v Unreal. Zachyťte chyby životního cyklu testováním.
Zabezpečení pro více hráčů. Toto je nejkritičtější problém z hlediska IT/bezpečnosti. Nikdy nevěřte klientovi v multiplayeru: klient na hráčově počítači může být manipulován pro podvádění. Ověřte kritický stav, jako jsou body, poškození, peníze na serveru (server-autoritativní). Ovládejte síťový kód generovaný AI proti tomuto principu; Pokud AI vytvořila zranitelnost, která důvěřuje klientovi, opravte ji. Tyto informace používejte pouze k obraně a ověření své vlastní hry; Neoprávněný přístup nebo podvádění na serveru někoho jiného je nezákonné a neetické.
Upozornění: Kód generovaný AI může obsahovat zranitelnosti (chybějící ověření vstupu, důvěryhodnost klienta, manipulace se souborem pro ukládání). Nepřijímejte slepě kód; Proveďte kontrolu zabezpečení, zejména sítě, ekonomiky a uložení kódu.
Architektonický a udržovací dluh
AI vytváří jednotlivé funkce rychle; Ale architektura hry – jak jsou systémy rozděleny, jak spolu mluví, kde se uchovávají data – je dlouhodobé rozhodnutí a patří k člověku. Pokud řeknete AI, aby „napsala celý inventář, boj a systém záchrany společně“, získáte fungující, ale pevně provázaný, těžko udržovatelný, nerozšiřitelný klubko příze. Místo toho navrhnete architekturu a použijete AI k naplnění malých komponent s definovanými rozhraními. Dobrá architektura dělá rozdíl, jak hra roste: špatná rozhodnutí se vrátí o rok později jako technický dluh, který zdržuje každou novou funkci.
Dalším zdrojem dluhu na výživném je kód, který vstupuje do projektu bez pochopení. Systém napsaný umělou inteligencí by dnes mohl fungovat; Ale když ho musíte vyměnit o šest měsíců později a nikdo si nepamatuje, co udělal, dluh se změní v úroky. Proto jsou zásadní dvě disciplíny: čtení a porozumění kódu v době výroby a žádost o objasňující komentáře od AI. Obecně platí, že do svého projektu nevkládejte žádný kód AI, který nemůžete sami přepsat nebo alespoň vysvětlit řádek po řádku. AI dává rychlost; Vaše disciplína dává udržitelnost.
tři mini pouzdra
Případ 1 – Kontext vydání zabránil chybě. Programátor nejprve řekl: "Zapište inventář pro Unity"; kód používal staré API, nezkompiloval se. Pak to dalo kontext "Unity 2022.3, C#, založené na ScriptableObject"; kód byl zkompilován poprvé a odpovídal projektu. Kontext ušetřil hodinu ladění.
Případ 2 – Výkonová past. V jedné hře byla snímková frekvence nízká. Při profilování bylo vidět, že metoda Update vytvořená umělou inteligencí přidělila nový seznam v každém snímku a hledala nepřátele. Opraven kód s odkazem v mezipaměti a nekvadratickou aktualizací, zvýšením snímkové frekvence ze 42 na 60.
Případ 3 – Zachycena chyba zabezpečení. Ve hře pro více hráčů kód vygenerovaný umělou inteligencí vypočítal škodu na klientovi a nahlásil ji serveru; toto bylo otevřené pro podvádění (klient by mohl způsobit nekonečné poškození). Kód se stal autoritativním pro server (server vypočítá poškození). Audit zabránil skandálu s podváděním po zveřejnění.
Čtyři kopírovatelné šablony
1) Žádost o kód s kontextem:
Motor: Unity 2022.3. Jazyk: C#. Architektura: [např. na základě komponent]. Omezení: Přidělování v aktualizaci; být čitelný a komentovaný.Úkol: [jediná, definovaná složka, např. "řadič dvojitého skoku"]. Ověřte, že každé API, které používáte, je v této verzi; Pokud si nejste jisti, dejte mi vědět.
2) Vysvětlení/recenze kódu:
Vysvětlete následující kód řádek po řádku a napište (1) co dělá, (2) možné problémy s výkonem (přidělení na snímek, drahé vyhledávání), (3) možné chyby, (4) návrhy na zlepšení. Kód: [vložit]
3) Bezpečnostní audit pro více hráčů:
Prohlédněte si následující kód pro více hráčů kvůli bezpečnosti. Konkrétně: místa, kde je klient důvěryhodný, kritický stav, který je třeba ověřit na serveru (poškození, body, peníze), chybějící ověření vstupu. Navrhněte opravu, aby se server stal autoritářským. Toto je jen na obranu mé vlastní hry. Kód: [vložit]
4) Refaktor zaměřený na výkonnostní profil:
Tento kód běží na každém snímku a snižuje snímkovou frekvenci: [kód]. Najděte alokace, drahé vyhledávání a zbytečné operace snímek po snímku; Optimalizujte bez narušení chování pomocí ukládání do mezipaměti a méně častých aktualizací. Vysvětlete změny.
Slabá výzva / Silná výzva
Slabá výzva:
Napište systém ukládání v Unity.
Žádná verze, formát, rozsah dat, zabezpečení; Výsledek je obecný a riskantní.
Výkonná výzva:
Motor: Unity 2022.3, C#. Úkol: Systém ukládání/načítání založený na JSON. K uložení: umístění hráče, inventář, postup. Omezení: získat správu chyb proti poškození souborů; Přidejte do uloženého souboru kontrolu integrity (hash), abyste zabránili podvádění tím, že jej přehrávač snadno změní. Zakomentujte kód a ověřte, že každé API je v této verzi.
Verze, rozsah, zpracování chyb a kontrola integrity výstup posilují.
Kontextová tabulka motoru/jazyka
motoru
jazyk
Co musíte dát AI
zvláštní pozornost
jednota
C#
Verze, vstupní/fyzikální systém
Aktualizovat alokaci, životní cyklus
neskutečné
Modrotisk
Verze, kontext uzlu
Limity vizuální logiky
neskutečné
C++
Verze, struktura modulu
Paměť, GC, makra
multiplayer
obojí
síťový model
Moderátor-autoritářství
Časté chyby
- Bez specifikace motoru/verze. Pochází ze zastaralého nebo vytvořeného API.
- Důvěřovat kódu, aniž byste mu rozuměli. Hromadí se neudržitelné dluhy.
- Neměří výkon. Alokace snímek po snímku tiše snižuje snímkovou frekvenci.
- Důvěřovat klientovi. V multiplayeru existuje zranitelnost při podvádění.
- Chtít celý systém najednou. Malý, testovatelný kus je bezpečnější.
V souhrnu
Umělá inteligence je mocný pomocník v kódu hry, ale vyžaduje engine, verzi a architektonický kontext. Nevkládejte jej do projektu, aniž byste si přečetli a neporozuměli kódu, nezkompilovali jej a otestovali a nezkontrolovali výkon a zabezpečení. Zachovejte autoritu serveru ve hře pro více hráčů a používejte bezpečnostní informace pouze pro obranné a ověřovací účely.
Aplikační úkol
Vyberte si malou součást (např. dvojitý skok nebo jednoduchý inventář). Vygenerujte kód poskytnutím motoru a verze pomocí šablony „žádost o kód s kontextem“. Poté odstraňte rizika výkonu a chyb tím, že stejný kód zkontrolujete pomocí šablony „Popis/recenze kódu“. Zkompilujte a otestujte kód v enginu.
kontrolní seznam
- [ ] Dal jsem kontext motoru, verze, jazyka a architektury.
- [ ] Přečetl jsem a pochopil kód; Chtěl jsem to s komentářem.
- [ ] Sestavil jsem to a vyzkoušel v motoru a změřil výkon.
- [ ] Provedl jsem bezpečnostní kontrolu v kódu sítě/úspory/uložení.
- [ ] Bezpečnostní informace jsem použil pouze k obraně své vlastní hry.