Fitimet:
- Aftësia për të prodhuar kod të besueshëm dhe të përpilueshëm të lojës nga inteligjenca artificiale duke dhënë motorin, versionin, gjuhën dhe kontekstin arkitektonik dhe ta integrojë atë duke lexuar dhe kuptuar kodin
- Aftësia për të menaxhuar performancën specifike të kodit të lojës (ndarja për kornizë), ciklin e jetës së motorit dhe rreziqet e halucinacioneve përmes përpilimit, testimit dhe profilizimit
- Aftësia për të zbatuar parimin e autoritetit pritës në lojërat me shumë lojtarë dhe për të përdorur informacionin e sigurisë me përgjegjësi vetëm për të mbrojtur dhe verifikuar lojën e vet.
Loja është softuer; Pavarësisht se sa mirë është projektuar, ai zbatohet me kod. Motori i lojës është infrastruktura që e bën lojën të ekzekutohet: Unity (motor i përdorur gjerësisht i shkruar në C#) dhe Unreal Engine (motori duke përdorur C++ dhe gjuhën vizuale të skriptimit Blueprint) janë dy më të zakonshmet. AI është një nga ndihmat më të pjekura në gjenerimin e kodit: kontrolluesi i luajtësit, sistemi i inventarit, makineritë e gjendjes, ruajtja/ngarkesa, logjika e ndërfaqes, korrigjimi dhe rifaktorimi (rifaktorimi i kodit pa prishur sjelljen e tij). Por kodi i lojës ka kurthet e veta: performanca (shkalla e kuadrit), cikli i jetës së motorit, siguria me shumë lojtarë. Në këtë njësi do të mësoni se si të përdorni AI në mënyrë të sigurt dhe efikase në kodin e lojës.
Parimi kritik: motori dhe konteksti i versionit
Nëse AI nuk e di se për cilin motor dhe version po shkruan, ajo do të prodhojë një API të ngatërruar, të vjetëruar ose inekzistente. Pra, jepni motorin, versionin, gjuhën dhe kontekstin e arkitekturës në çdo kërkesë kodi. "Shkruani lëvizjen e lojtarit për Unity" është i dobët; "Unity 2022.3, C#, sistemi i ri i hyrjes, lëvizja fizike e bazuar në trup të ngurtë" është i fuqishëm. Specifikoni nëse dëshironi Blueprint ose C++ në Unreal dhe cilin version po përdorni.
Siguroni rrjedhën e kodit hap pas hapi:
- Jepni kontekstin (motorin, versionin, gjuhën, arkitekturën aktuale, kufizimet).
- Dëshironi atë të vogël dhe të përcaktuar (një komponent i vetëm, jo i gjithë sistemi).
- Lexoni dhe kuptoni kodin (kuptoni se çfarë bën ai rresht pas rreshti; mos vendosni kodin që nuk e kuptoni).
- Ndërtoni dhe provoni (punon në motor; profili - matja e performancës).
- Rifaktoroni dhe integroni (përputhni standardin e projektit).
Këshillë: Kur kërkoni kodin nga AI, thoni "shpjego me komente". Qëllimi juaj është të kuptoni kodin; Vendosja e kodit të AI që nuk e kuptoni në një projekt do të akumulojë borxhe të pambajtur. Kërkoni gjithashtu kodin në copa të vogla dhe të testueshme: në vend të një sistemi me 500 rreshta, një komponent 30-50 rreshtash që kryen një punë të vetme të përcaktuar është i lehtë për t'u verifikuar dhe për t'u integruar.
Kurthe specifike për kodin e lojës
Performanca. Kodi i lojës funksionon 30-60+ herë në sekondë. AI mund të vendosë operacione të shtrenjta (shpërndarja e memories, kërkimi, manipulimi i vargjeve) në ciklin e përditësimit që funksionon në çdo kornizë; kjo zvogëlon shpejtësinë e kuadrove. Profilizoni kodet kritike të performancës dhe jepni kufizime të AI të tilla si "ekzekutimi në çdo kornizë, pa shpërndarje".
Cikli i jetës së motorit. AI ndonjëherë ngatërron kur thirren metoda të veçanta, të tilla si Awake/Start/Update in Unity, BeginPlay/Tick in Unreal. Kapni gabimet e ciklit jetësor duke testuar.
Siguria me shumë lojtarë. Kjo është çështja më kritike për sa i përket IT/sigurisë. Asnjëherë mos i besoni klientit në multiplayer: klienti në kompjuterin e lojtarit mund të manipulohet për mashtrim. Verifikoni statusin kritik si pikët, dëmtimet, paratë në server (server-autoritative). Kontrolloni kodin e rrjetit të krijuar nga AI kundër këtij parimi; Nëse AI ka krijuar një dobësi të besueshme ndaj klientit, rregullojeni atë. Përdoreni këtë informacion vetëm për të mbrojtur dhe verifikuar lojën tuaj; Qasja e paautorizuar ose mashtrimi në serverin e dikujt tjetër është i paligjshëm dhe joetik.
Kujdes: Kodi i gjeneruar nga AI mund të përmbajë dobësi (mungon vërtetimi i hyrjes, besimi i klientit, manipulimi i skedarëve të ruajtjes). Mos e pranoni verbërisht kodin; Kryeni një rishikim sigurie, veçanërisht të rrjetit, ekonomisë dhe ruani kodin.
Borxhi arkitektonik dhe i mirëmbajtjes
AI prodhon shpejt funksione individuale; Por arkitektura e një loje – si ndahen sistemet, si flasin me njëri-tjetrin, ku mbahen të dhënat – është një vendim afatgjatë dhe i përket njeriut. Nëse i thoni AI-së të "shkruajë të gjithë inventarin, luftoni dhe kurseni së bashku", ju merrni një top fije funksionale, por të lidhur ngushtë, të vështirë për t'u mirëmbajtur dhe jo të zgjerueshme. Në vend të kësaj, ju dizajnoni arkitekturën, përdorni AI për të mbushur përbërës të vegjël me ndërfaqe të përcaktuara. Arkitektura e mirë bën një ndryshim ndërsa loja rritet: vendimet e këqija kthehen një vit më vonë si borxh teknik që vonon çdo veçori të re.
Një burim tjetër i borxhit të mirëmbajtjes është kodi që hyn në projekt pa u kuptuar. Një sistem i shkruar nga AI mund të funksionojë sot; Por kur ju duhet ta zëvendësoni atë gjashtë muaj më vonë dhe askush nuk kujton se çfarë kanë bërë, borxhi kthehet në interes. Kjo është arsyeja pse dy disiplina janë thelbësore: leximi dhe kuptimi i kodit në kohën e prodhimit dhe kërkimi për komente sqaruese nga AI. Si rregull, mos vendosni asnjë kod të AI në projektin tuaj që nuk mund ta rishkruani vetë ose të paktën ta shpjegoni rresht pas rreshti. AI jep shpejtësi; Disiplina juaj jep qëndrueshmëri.
tre mini kuti
Rasti 1 - Konteksti i lëshimit parandaloi defektin. Një programues tha fillimisht, "Shkruani inventarin për Unity"; kodi përdorte një API të vjetër, nuk u përpilua. Më pas dha kontekstin "Unity 2022.3, C#, bazuar në ScriptableObject"; kodi i përpiluar herën e parë dhe përshtatet me projektin. Konteksti kurseu një orë korrigjimi.
Rasti 2 — Kurthi i performancës. Në një lojë, shpejtësia e kuadrove ishte e ulët. Gjatë profilizimit, u pa se një metodë Update e prodhuar nga AI ndau një listë të re në çdo kornizë dhe kërkoi armiq. Rregulloi kodin me referencë të memorizuar dhe përditësim jo kuadratik, duke rritur shpejtësinë e kuadrove nga 42 në 60.
Rasti 3 - Dobësia e sigurisë u kap. Në një lojë me shumë lojtarë, kodi i gjeneruar nga AI llogariti dëmin e klientit dhe ia raportoi atë serverit; kjo ishte e hapur për mashtrim (klienti mund të shkaktonte dëme të pafundme). Kodi është bërë server-autoritar (serveri llogarit dëmin). Auditimi parandaloi një skandal mashtrimi pas publikimit.
Katër shabllone të kopjueshëm
1) Kërkesë kodi me kontekst:
Motori: Unity 2022.3. Gjuha: C#. Arkitektura: [p.sh. bazuar në komponentë]. Kufizim: Alokimi në Përditësim; të jetë i lexueshëm dhe i komentuar.Detyra: [komponent i vetëm, i përcaktuar, p.sh. "kontrolluesi i karakterit me kërcim të dyfishtë"]. Verifikoni që çdo API që përdorni është në këtë version; Nëse nuk jeni të sigurt, më njoftoni.
2) Shpjegimi/rishikimi i kodit:
Shpjegoni kodin e mëposhtëm rresht pas rreshti dhe shkruani (1) çfarë bën ai, (2) problemet e mundshme të performancës (ndarja për kornizë, kërkimi i shtrenjtë), (3) gabimet e mundshme, (4) sugjerimet për përmirësim. Kodi: [ngjit]
3) Auditimi i sigurisë me shumë lojtarë:
Shqyrtoni kodin e mëposhtëm të shumë lojtarëve për siguri. Konkretisht: vendet ku klienti është i besuar, gjendja kritike që duhet verifikuar në server (dëmtime, pikë, para), mungesë e vërtetimit të hyrjes. Sugjero rregullim për ta bërë server-autoritar. Kjo është vetëm për të mbrojtur lojën time. Kodi: [ngjit]
4) Refaktori i fokusuar në profilin e performancës:
Ky kod funksionon në çdo kornizë dhe zvogëlon shpejtësinë e kuadrove: [kodi]. Gjeni alokime, kërkime të shtrenjta dhe operacione të panevojshme kornizë për kornizë; Optimizoni pa prishur sjelljen me ruajtjen e memories dhe përditësimet më pak të shpeshta. Shpjegoni ndryshimet.
Prompt i dobët / Prompt i fortë
Njoftim i dobët:
Shkruani një sistem ruajtjeje në Unity.
Asnjë version, format, fushëveprimi i të dhënave, siguria; Rezultati është i përgjithshëm dhe i rrezikshëm.
Njoftim i fuqishëm:
Motori: Unity 2022.3, C#. Detyra: Sistemi i ruajtjes/ngarkimit i bazuar në JSON. Për t'u ruajtur: vendndodhja e lojtarit, inventari, përparimi. Kufizimi: merrni menaxhimin e gabimeve kundër korrupsionit të skedarëve; Shtoni një kontroll integriteti (hash) në skedarin e ruajtjes për të parandaluar mashtrimin duke e ndryshuar lehtë atë nga luajtësi. Komentoni kodin dhe verifikoni që çdo API është në këtë version.
Versionimi, shtrirja, trajtimi i gabimeve dhe kontrolli i integritetit e forcojnë rezultatin.
Tabela e kontekstit të motorit/gjuhës
motorri
gjuha
Çfarë duhet t'i jepni AI
vëmendje të veçantë
unitetin
C#
Versioni, sistemi i hyrjes/fizikës
Alokimi i përditësimit, cikli i jetës
joreale
Projekti
Versioni, konteksti i nyjës
Kufijtë e logjikës vizuale
joreale
C++
Versioni, struktura e modulit
Kujtesa, GC, makro
multiplayer
të dyja
modeli i rrjetit
Prezantues-autoritarizëm
Gabimet e zakonshme
- Nuk specifikohet motori/versioni. Ai vjen nga API i vjetëruar ose i krijuar.
- Besimi i kodit pa e kuptuar atë. Akumulohet borxhi i pambajtur.
- Nuk matet performanca. Shpërndarja kornizë për kornizë redukton në heshtje shpejtësinë e kuadrove.
- Duke i besuar klientit. Ekziston një cenueshmëri mashtrimi në multiplayer.
- Dëshironi të gjithë sistemin menjëherë. Pjesa e vogël, e testueshme është më e sigurt.
Në përmbledhje
AI është një ndihmës i fuqishëm në kodin e lojës, por kërkon motor, version dhe kontekst arkitektonik. Mos e vendosni në një projekt pa lexuar dhe kuptuar kodin, duke e përpiluar dhe testuar atë dhe pa kontrolluar performancën dhe sigurinë. Ruani autoritarizmin e serverit në multiplayer dhe përdorni informacionin e sigurisë vetëm për qëllime mbrojtëse dhe verifikimi.
Detyra e aplikimit
Zgjidhni një komponent të vogël (p.sh. kërcim i dyfishtë ose inventar i thjeshtë). Gjeneroni kodin duke siguruar motorin dhe versionin me shabllonin "kërkesë kodi me kontekst". Më pas hiqni rreziqet e performancës dhe defekteve duke rishikuar të njëjtin kod me shabllonin "Përshkrimi/rishikimi i kodit". Përpiloni dhe provoni kodin në motor.
listë kontrolli
- [ ] I dhashë motorin, versionin, gjuhën dhe kontekstin e arkitekturës.
- [ ] Kam lexuar dhe kuptuar kodin; E desha me koment.
- [ ] E përpilova dhe e testova në motor dhe mata performancën.
- [ ] Bëra një kontroll sigurie në kodin e rrjetit/ekonomisë/ruajtjes.
- [ ] Kam përdorur vetëm informacionin e sigurisë për të mbrojtur lojën time.