Unità 7 / 11

Ġenerazzjoni tal-Kodiċi u Integrazzjoni tal-Magna: Unity (C#) u Unreal (Blueprint/C++)

Qligħ:

  • Kapaċità li tipproduċi kodiċi tal-logħob affidabbli u kompilabbli minn intelliġenza artifiċjali billi tagħti kuntest tal-magna, verżjoni, lingwa u arkitettoniku u tintegrah billi taqra u tifhem il-kodiċi
  • Kapaċità li timmaniġġja l-prestazzjoni speċifika tal-kodiċi tal-logħob (allokazzjoni għal kull qafas), iċ-ċiklu tal-ħajja tal-magna, u r-riskji ta’ alluċinazzjoni permezz ta’ kumpilazzjoni, ittestjar u profiling
  • Kapaċità li tapplika l-prinċipju ta' awtorità ospitanti f'logħob multiplayer u tuża informazzjoni ta' sigurtà b'mod responsabbli biss biex jiddefendi u jivverifika l-logħba tiegħu stess.

Il-logħba hija softwer; Ma jimpurtax kemm huwa ddisinjat tajjeb, huwa implimentat bil-kodiċi. Il-magna tal-logħob hija l-infrastruttura li tagħmel il-logħba taħdem: Unity (magna użata ħafna b'kitba f'C#) u Unreal Engine (magna li tuża C++ u l-lingwa ta 'scripting viżwali Blueprint) huma l-aktar tnejn komuni. L-AI hija waħda mill-aktar għajnuniet maturi fil-ġenerazzjoni tal-kodiċi: kontrollur tal-plejers, sistema tal-inventarju, magni tal-istat, iffrankar/tagħbija, loġika tal-interface, debugging u refactoring (refactoring tal-kodiċi mingħajr ma jiksru l-imġieba tiegħu). Iżda l-kodiċi tal-logħob għandu l-iżvantaġġi tiegħu stess: prestazzjoni (rata tal-qafas), ċiklu tal-ħajja tal-magna, sigurtà multiplayer. F'din l-unità titgħallem kif tuża l-AI b'mod sikur u effiċjenti fil-kodiċi tal-logħob.

Prinċipju kritiku: kuntest tal-magna u tal-verżjoni

Jekk l-AI ma tkunx taf għal liema magna u verżjoni qed tikteb, se tipproduċi API konfuża, obsoleta jew ineżistenti. Allura agħti kuntest tal-magna, il-verżjoni, il-lingwa u l-arkitettura f'kull pront tal-kodiċi. "Ikteb il-moviment tal-plejers għall-Unità" hija dgħajfa; "Unità 2022.3, C#, Sistema ta 'Input ġdida, moviment tal-fiżika bbażat fuq Rigidbody" hija qawwija. Speċifika jekk tridx Blueprint jew C++ f'Unreal u liema verżjoni qed tuża.

Il-fluss tal-kodiċi sigur pass pass:

  1. Agħti kuntest (magna, verżjoni, lingwa, arkitettura kurrenti, restrizzjonijiet).
  2. Tridha żgħira u definita (komponent wieħed, mhux is-sistema kollha).
  3. Aqra u tifhem il-kodiċi (ifhem x'tagħmel linja b'linja; tpoġġix kodiċi li ma tifhimx).
  4. Ibni u ttestja (imħaddem bil-magna; profil — kejjel il-prestazzjoni).
  5. Fattur mill-ġdid u jintegra (tqabbel l-istandard tal-proġett).
Tip: Meta titlob lill-AI għall-kodiċi, għid "spjega bil-kummenti". L-għan tiegħek huwa li tifhem il-kodiċi; It-tqegħid tal-kodiċi AI li ma tifhimx fi proġett jakkumula dejn li ma jistax jinżamm. Staqsi wkoll għal kodiċi f'biċċiet żgħar u li jistgħu jiġu ttestjati: Minflok sistema ta '500 linja, komponent ta' 30-50 linja li jagħmel xogħol definit wieħed huwa kemm faċli biex tivverifika u tintegra.

Nases speċifiċi għall-kodiċi tal-logħba

Prestazzjoni. Il-kodiċi tal-logħba jibda 30-60+ darba kull sekonda. L-AI tista 'tpoġġi operazzjonijiet għaljin (allokazzjoni tal-memorja, tfittxija, manipulazzjoni ta' string) fil-linja ta 'Aġġornament li timxi f'kull qafas; dan inaqqas ir-rata tal-qafas. Profil prestazzjoni kodiċi kritiċi u agħti restrizzjonijiet AI bħal "run fuq kull frame, l-ebda allokazzjoni".

Iċ-ċiklu tal-ħajja tal-magna. L-AI kultant tħawwad meta jissejħu metodi speċjali, bħal Awake/Start/Update in Unity, BeginPlay/Tick in Unreal. Aqbad l-iżbalji taċ-ċiklu tal-ħajja billi tittestja.

Sigurtà multiplayer. Din hija l-aktar kwistjoni kritika f'termini ta' IT/sigurtà. Qatt tafda lill-klijent f'multiplayer: il-klijent fuq il-kompjuter tal-plejer jista 'jiġi manipulat għall-qerq. Ivverifika l-istatus kritiku bħal punti, ħsara, flus fuq is-server (server awtorevoli). Ikkontrolla l-kodiċi tan-netwerk ġġenerat mill-AI kontra dan il-prinċipju; Jekk l-AI ħolqot vulnerabbiltà ta' fiduċja fil-klijent, irranġaha. Uża din l-informazzjoni biss biex tiddefendi u tivverifika l-logħob tiegħek stess; Aċċess mhux awtorizzat għal jew qerq fuq is-server ta' xi ħadd ieħor huwa illegali u mhux etiku.

Attenzjoni: Il-kodiċi ġġenerat mill-AI jista' jkun fih vulnerabbiltajiet (validazzjoni tal-input nieqsa, fiduċja tal-klijent, manipulazzjoni tal-fajl tal-iffrankar). Taċċettax bl-addoċċ il-kodiċi; Wettaq reviżjoni tas-sigurtà, partikolarment tan-netwerk, l-ekonomija, u ssalva l-kodiċi.

Dejn arkitettoniku u ta' manutenzjoni

AI tipproduċi funzjonijiet individwali malajr; Iżda l-arkitettura ta 'logħba—kif is-sistemi huma maqsuma, kif jitkellmu ma' xulxin, fejn tinżamm id-dejta—hija deċiżjoni fit-tul, u tappartjeni lill-bniedem. Jekk tgħid lill-AI biex "tikteb l-inventarju kollu, tiġġieled u ssalva s-sistema flimkien" ikollok ballun tal-ħajt li jaħdem iżda magħqud sewwa, diffiċli biex jinżamm, li ma jitwessax. Minflok, inti tfassal l-arkitettura, tuża l-AI biex timla komponenti żgħar b'interfaces definiti. Arkitettura tajba tagħmel differenza hekk kif il-logħba tikber: deċiżjonijiet ħżiena jerġgħu lura sena wara bħala dejn tekniku li jdewwem kull karatteristika ġdida.

Sors ieħor ta 'dejn ta' manteniment huwa kodiċi li jidħol fil-proġett mingħajr ma jinftiehem. Sistema miktuba minn AI tista’ taħdem illum; Imma meta jkollok tibdelha sitt xhur wara u ħadd ma jiftakar x’għamel, id-dejn jinbidel f’imgħax. Huwa għalhekk li żewġ dixxiplini huma essenzjali: il-qari u l-fehim tal-kodiċi fil-ħin tal-produzzjoni, u t-talba għall-kjarifika tal-kummenti mill-AI. Bħala regola ġenerali, tpoġġi ebda kodiċi AI fil-proġett tiegħek li ma tistax tikteb mill-ġdid lilek innifsek jew għall-inqas tispjega linja b'linja. AI tagħti veloċità; Id-dixxiplina tiegħek tagħti sostenibbiltà.

tliet każijiet żgħar

Każ 1 — Il-kuntest tar-rilaxx ipprevjeni l-bug. Programmatur l-ewwel qal, "Ikteb inventarju għall-Unità"; il-kodiċi kien qed juża API antik, ma kkumpilax. Imbagħad ta l-kuntest "Unità 2022.3, C#, ibbażat fuq ScriptableObject"; il-kodiċi miġbura l-ewwel darba u jaqbel mal-proġett. Il-kuntest iffranka siegħa ta 'debugging.

Każ 2 — Nassa tal-prestazzjoni. F'logħba waħda l-frame rate kienet baxxa. Meta ssir il-profil, deher li metodu ta 'Aġġornament prodott mill-AI alloka lista ġdida f'kull qafas u fittex l-għedewwa. Irranġa l-kodiċi b'referenza fil-cache u aġġornament mhux kwadratiku, u żied ir-rata tal-qafas minn 42 għal 60.

Każ 3 — Vulnerabbiltà tas-sigurtà maqbuda. F'logħba multiplayer, il-kodiċi ġġenerat mill-AI kkalkula l-ħsara fuq il-klijent u rrapportaha lis-server; dan kien miftuħ għall-qerq (il-klijent jista 'jikkaġuna ħsara infinita). Il-kodiċi sar awtoritarju tas-server (is-server jikkalkula l-ħsara). Il-verifika impedixxa skandlu ta' qerq wara l-pubblikazzjoni.

Erba' mudelli li jistgħu jiġu kkupjati

1) Talba għal kodiċi bil-kuntest:

Magna: Unity 2022.3. Lingwa: C#. Arkitettura: [eż. komponent ibbażat].Restrizzjoni: Allokazzjoni fl-Aġġornament; ikun jista jinqara u jkun ikkummentat.Kompitu: [komponent wieħed, definit, eż. "kontrollur tal-karattru ta' qabża doppja"]. Ivverifika li kull API li tuża tkun f'din il-verżjoni; Jekk m'intix ċert, għarrafni.

2) Spjegazzjoni/reviżjoni tal-kodiċi:

Spjega l-kodiċi li ġej linja b'linja u ikteb (1) x'tagħmel, (2) problemi ta' prestazzjoni possibbli (allokazzjoni għal kull frame, tfittxija għalja), (3) bugs possibbli, (4) suġġerimenti għal titjib. Kodiċi: [paste]

3) Verifika tas-sigurtà multiplayer:

Eżamina l-kodiċi multiplayer li ġej għas-sigurtà. Speċifikament: postijiet fejn il-klijent huwa fdat, stat kritiku li jeħtieġ li jiġi vverifikat fuq is-server (ħsara, punti, flus), validazzjoni tal-input nieqsa. Issuġġerixxi tiffissa biex tagħmel is-server-authoritarian.This huwa biss biex niddefendi l-logħba tiegħi stess. Kodiċi: [paste]

4) Refactor iffukat fuq il-profil tal-prestazzjoni:

Dan il-kodiċi jimxi fuq kull frame u jnaqqas ir-rata tal-frejms: [kodiċi].Sib allokazzjonijiet, lookups għaljin, u operazzjonijiet frame-by-frame bla bżonn; Ottimizza mingħajr ma tkisser l-imġieba b'caching u aġġornamenti inqas frekwenti. Spjega l-bidliet.

Pront dgħajjef / Pront qawwi

Pront dgħajjef:

Ikteb sistema ta’ salvataġġ f’Unity.

Ebda verżjoni, format, ambitu tad-data, sigurtà; Ir-riżultat huwa ġenerali u riskjuż.

Pront qawwi:

Magna: Unity 2022.3, C#. Kompitu: Sistema ta' salvataġġ/tagħbija bbażata fuq JSON. Biex jiġu ffrankati: post tal-plejer, inventarju, progress. Limitazzjoni: tikseb ġestjoni tal-iżbalji kontra l-korruzzjoni tal-fajls; Żid kontroll tal-integrità (hash) mal-fajl li jsalva biex tevita l-qerq billi tbiddel faċilment mill-plejer. Ikkummenta l-kodiċi u vverifika li kull API tinsab f'din il-verżjoni.

Il-verżjoni, l-ambitu, l-immaniġġjar tal-iżbalji, u l-kontroll tal-integrità jibbies l-output.

Tabella tal-kuntest tal-magna/lingwa

magna

lingwa

Dak li għandek tagħti lill-AI

attenzjoni speċjali

għaqda

C#

Verżjoni, Input/sistema tal-fiżika

Aġġorna l-allokazzjoni, iċ-ċiklu tal-ħajja

irreali

Blueprint

Verżjoni, kuntest tan-node

Limiti tal-loġika viżwali

irreali

C++

Verżjoni, struttura tal-modulu

Memorja, GC, macros

multiplayer

it-tnejn

mudell tan-netwerk

Preżentatur-awtoritarjaniżmu

Żbalji komuni

  • Mhux tispeċifika magna/verżjoni. Jiġi minn API skaduti jew magħmula.
  • Tafda fil-kodiċi mingħajr ma tifhimha. Dejn li ma jistax jinżamm jakkumula.
  • Mhux qed tkejjel il-prestazzjoni. L-allokazzjoni qafas b'qafas siekta tnaqqas ir-rata tal-qafas.
  • Fidu fil-klijent. Hemm vulnerabbiltà tal-qerq f'multiplayer.
  • Li trid is-sistema kollha f'daqqa. Biċċa żgħira u li tista' tiġi ttestjata hija aktar sigura.

Fil-qosor

L-AI hija għajnuna qawwija fil-kodiċi tal-logħob, iżda teħtieġ magna, verżjoni u kuntest arkitettoniku. Tpoġġihx fi proġett mingħajr ma taqra u tifhem il-kodiċi, tikkumpilah u tittestjah, u tiċċekkja l-prestazzjoni u s-sigurtà. Żomm l-awtoritarjaniżmu tas-server f'multiplayer u uża informazzjoni dwar is-sigurtà għal skopijiet difensivi u ta' verifika biss.

Kompitu ta' applikazzjoni

Agħżel komponent żgħir (eż. double jump jew inventarju sempliċi). Iġġenera kodiċi billi tipprovdi l-magna u l-verżjoni bil-mudell "talba tal-kodiċi bil-kuntest". Imbagħad neħħi r-riskji tal-prestazzjoni u tal-bugs billi l-istess kodiċi jiġi rivedut bil-mudell "Deskrizzjoni/reviżjoni tal-Kodiċi". Iġbor u ttestja l-kodiċi fil-magna.

lista ta' kontroll

  • [ ] Tajt il-magna, il-verżjoni, il-lingwa u l-kuntest tal-arkitettura.
  • [ ] Qrajt u fhimt il-kodiċi; Ridt bil-kummentarju.
  • [ ] I kkumpilajt u ttestjajt fil-magna u kejjel il-prestazzjoni.
  • [ ] Għamilt kontroll tas-sigurtà fin-netwerk/ekonomija/save code.
  • [ ] Jien użajt biss informazzjoni tas-sigurtà biex niddefendi l-logħba tiegħi stess.