Kitengo 7 / 11

Uzalishaji wa Msimbo na Uunganishaji wa Injini: Umoja (C#) na Isiyo halisi (Blueprint/C++)

Faida:

  • Uwezo wa kutoa msimbo wa mchezo unaotegemewa, unaoweza kuunganishwa kutoka kwa akili ya bandia kwa kutoa injini, toleo, lugha na muktadha wa usanifu na kuiunganisha kwa kusoma na kuelewa kanuni.
  • Uwezo wa kudhibiti utendakazi mahususi wa msimbo (mgao kwa kila fremu), mzunguko wa maisha ya injini, na hatari za ufahamu kupitia ujumuishaji, majaribio na wasifu.
  • Uwezo wa kutumia kanuni ya mamlaka ya mwenyeji katika michezo ya wachezaji wengi na kutumia maelezo ya usalama kwa kuwajibika ili tu kutetea na kuthibitisha mchezo wako mwenyewe.

Mchezo ni programu; Haijalishi jinsi imeundwa vizuri, inatekelezwa kwa kanuni. Injini ya mchezo ndio muundo msingi unaofanya mchezo uendeshwe: Unity (injini inayotumika sana iliyoandikwa katika C#) na Unreal Engine (injini inayotumia C++ na lugha ya maandishi inayoonekana Blueprint) ndizo mbili zinazojulikana zaidi. AI ni mojawapo ya usaidizi wa kukomaa zaidi katika uundaji wa msimbo: kidhibiti cha mchezaji, mfumo wa hesabu, mashine za serikali, kuokoa/pakia, mantiki ya kiolesura, utatuzi na urekebishaji upya (kuweka upya msimbo bila kuvunja tabia yake). Lakini msimbo wa mchezo una mitego yake: utendaji (kiwango cha fremu), mzunguko wa maisha ya injini, usalama wa wachezaji wengi. Katika kitengo hiki utajifunza jinsi ya kutumia AI kwa usalama na kwa ufanisi katika msimbo wa mchezo.

Kanuni muhimu: muktadha wa injini na toleo

Ikiwa AI haijui ni injini na toleo gani inaandikia, itatoa API iliyochanganyikiwa, ya kizamani au haipo. Kwa hivyo toa injini, toleo, lugha na muktadha wa usanifu katika kila onyesho la nambari. "Andika harakati za wachezaji kwa Umoja" ni dhaifu; "Unity 2022.3, C#, Mfumo mpya wa Kuingiza Data, harakati ya fizikia ya Rigidbody" ina nguvu. Bainisha ikiwa unataka Blueprint au C++ katika Unreal na ni toleo gani unalotumia.

Salama mtiririko wa nambari hatua kwa hatua:

  1. Toa muktadha (injini, toleo, lugha, usanifu wa sasa, vikwazo).
  2. Inataka iwe ndogo na ifafanuliwe (sehemu moja, sio mfumo mzima).
  3. Soma na uelewe msimbo (elewa inavyofanya mstari kwa mstari; usiweke msimbo ambao hauelewi).
  4. Jenga na ujaribu (endesha kwa injini; wasifu - pima utendaji).
  5. Refactor na kuunganisha (linganisha kiwango cha mradi).
Kidokezo: Unapouliza AI msimbo, sema "elezea kwa maoni". Lengo lako ni kuelewa kanuni; Kuweka msimbo wa AI usiyoielewa kwenye mradi kutakusanya deni lisiloweza kuepukika. Pia omba msimbo katika vipande vidogo, vinavyoweza kujaribiwa: Badala ya mfumo wa laini 500, kijenzi cha laini 30-50 ambacho hufanya kazi moja iliyobainishwa ni rahisi kuthibitisha na kuunganishwa.

Mitego mahususi kwa msimbo wa mchezo

Utendaji. Msimbo wa mchezo huendesha mara 30-60+ kwa sekunde. AI inaweza kuweka shughuli za gharama kubwa (mgao wa kumbukumbu, kuangalia, kudanganywa kwa kamba) kwenye kitanzi cha Usasishaji kinachoendesha kwa kila fremu; hii inapunguza kasi ya fremu. Nambari muhimu za utendakazi wa wasifu na upe vizuizi vya AI kama vile "endesha kwa kila fremu, hakuna mgao".

Mzunguko wa maisha ya injini. AI wakati mwingine huchanganya mbinu maalum zinapoitwa, kama vile Amkeni/Anza/Sasisha katika Umoja, AnzaKucheza/Weka Jibu katika Unreal. Pata makosa ya mzunguko wa maisha kwa kujaribu.

Usalama wa wachezaji wengi. Hili ndilo suala muhimu zaidi kwa upande wa IT/usalama. Usimwamini kamwe mteja katika wachezaji wengi: mteja kwenye kompyuta ya mchezaji anaweza kudanganywa kwa kudanganya. Thibitisha hali muhimu kama vile pointi, uharibifu, pesa kwenye seva (mamlaka ya seva). Dhibiti nambari ya mtandao inayozalishwa na AI dhidi ya kanuni hii; Ikiwa AI imeunda hatari ya kuamini mteja, irekebishe. Tumia maelezo haya kutetea na kuthibitisha uchezaji wako pekee; Ufikiaji usioidhinishwa wa au kudanganya kwenye seva ya mtu mwingine ni kinyume cha sheria na ni kinyume cha maadili.

Tahadhari: Msimbo unaozalishwa na AI unaweza kuwa na udhaifu (uthibitishaji wa ingizo unaokosekana, uaminifu wa mteja, uboreshaji wa faili). Usikubali kificho kanuni; Fanya ukaguzi wa usalama, hasa wa mtandao, uchumi na uhifadhi msimbo.

Deni la usanifu na matengenezo

AI hutoa kazi za kibinafsi haraka; Lakini usanifu wa mchezo—jinsi mifumo inavyogawanywa, jinsi wanavyozungumza wao kwa wao, mahali ambapo data huwekwa—ni uamuzi wa muda mrefu, na ni wa binadamu. Ukiiambia AI "iandike orodha nzima, pigana, na uhifadhi mfumo pamoja" utapata uzi unaofanya kazi lakini uliounganishwa kwa uthabiti, ambao ni ngumu kutunza, usioweza kupanuka. Badala yake, unabuni usanifu, tumia AI kujaza vifaa vidogo vilivyo na miingiliano iliyoainishwa. Usanifu mzuri hufanya tofauti kadri mchezo unavyokua: maamuzi mabaya yanarudi mwaka mmoja baadaye kama deni la kiufundi ambalo huchelewesha kila kipengele kipya.

Chanzo kingine cha deni la matengenezo ni kanuni inayoingia kwenye mradi bila kueleweka. Mfumo ulioandikwa na AI unaweza kufanya kazi leo; Lakini inapobidi ubadilishe miezi sita baadaye na hakuna anayekumbuka walichokifanya, deni hilo hubadilika kuwa riba. Ndiyo maana taaluma mbili ni muhimu: kusoma na kuelewa kanuni wakati wa uzalishaji, na kuomba ufafanuzi wa maoni kutoka kwa AI. Kama kanuni ya kidole gumba, usiweke msimbo wowote wa AI kwenye mradi wako ambao huwezi kujiandika upya au angalau kuelezea mstari kwa mstari. AI inatoa kasi; Nidhamu yako inatoa uendelevu.

kesi tatu ndogo

Kesi ya 1 - Muktadha wa toleo ulizuia hitilafu. Mtayarishaji programu alisema kwanza, "Andika orodha ya Umoja"; nambari ilikuwa ikitumia API ya zamani, haikujumuisha. Kisha ikatoa muktadha "Unity 2022.3, C#, based on ScriptableObject"; nambari iliyokusanywa mara ya kwanza na inafaa mradi. Muktadha ulihifadhi saa moja ya utatuzi.

Kesi ya 2 - Mtego wa utendaji. Katika mchezo mmoja kasi ya fremu ilikuwa ya chini. Wakati wa kuorodhesha, ilionekana kuwa njia ya Usasishaji iliyotolewa na AI ilitenga orodha mpya katika kila fremu na kutafuta maadui. Imerekebisha msimbo kwa kumbukumbu iliyohifadhiwa na sasisho lisilo la quadratic, na kuongeza kasi ya fremu kutoka 42 hadi 60.

Kesi ya 3 - Athari za kiusalama zimepatikana. Katika mchezo wa wachezaji wengi, msimbo unaozalishwa na AI ulikokotoa uharibifu kwenye mteja na kuripoti kwa seva; hii ilikuwa wazi kwa kudanganya (mteja anaweza kuleta uharibifu usio na kipimo). Nambari imefanywa kuwa ya mamlaka ya seva (seva huhesabu uharibifu). Ukaguzi ulizuia kashfa ya udanganyifu baada ya uchapishaji.

Violezo vinne vinavyoweza kunakiliwa

1) Ombi la nambari na muktadha:

Injini: Umoja 2022.3. Lugha: C#. Usanifu: [k.m. kijenzi kulingana].Kizuizi: Kugawa katika Usasishaji; isomeke na kutolewa maoni.Kazi: [kijenzi kimoja, kilichobainishwa, k.m. "kidhibiti cha tabia cha kuruka mara mbili"]. Thibitisha kuwa kila API unayotumia iko katika toleo hili; Ikiwa huna uhakika, nijulishe.

2) Maelezo ya msimbo/hakiki:

Eleza mstari wa msimbo ufuatao kwa mstari na uandike (1) inachofanya, (2) matatizo yanayoweza kutokea ya utendakazi (mgao kwa kila fremu, utafutaji wa gharama kubwa), (3) hitilafu zinazowezekana, (4) mapendekezo ya kuboresha.Msimbo: [bandika]

3) Ukaguzi wa usalama wa wachezaji wengi:

Chunguza msimbo ufuatao wa wachezaji wengi kwa usalama. Hasa: mahali ambapo mteja anaaminika, hali muhimu ambayo inahitaji kuthibitishwa kwenye seva (uharibifu, pointi, pesa), kukosa uthibitishaji wa pembejeo. Pendekeza kurekebisha ili kufanya seva-mamlaka. Hii ni kutetea tu mchezo wangu mwenyewe. Msimbo: [bandika]

4) Kirekebishaji kilicholenga wasifu wa utendaji:

Msimbo huu hutumika kwa kila fremu na hupunguza kasi ya fremu: [msimbo].Tafuta ugawaji, utafutaji wa gharama kubwa, na uendeshaji usiohitajika wa fremu kwa fremu; Boresha bila kuvunja tabia kwa kutumia akiba na masasisho machache ya mara kwa mara. Eleza mabadiliko.

Mwongozo dhaifu / Mwongozo thabiti

Agizo dhaifu:

Andika mfumo wa kuhifadhi katika Umoja.

Hakuna toleo, umbizo, upeo wa data, usalama; Matokeo yake ni ya jumla na ya hatari.

Agizo lenye nguvu:

Injini: Unity 2022.3, C#. Kazi: Mfumo wa kuokoa/pakia kulingana na JSON. Ili kuokolewa: eneo la mchezaji, hesabu, maendeleo. Kizuizi: pata usimamizi wa makosa dhidi ya ufisadi wa faili; Ongeza hundi ya uadilifu (heshi) kwenye faili ya hifadhi ili kuzuia udanganyifu kwa kuibadilisha kwa urahisi na kichezaji. Toa maoni yako kuhusu msimbo na uthibitishe kuwa kila API iko kwenye toleo hili.

Utoaji, upeo, ushughulikiaji wa makosa, na ukaguzi wa uadilifu huimarisha utoaji.

Jedwali la muktadha wa injini/lugha

injini

lugha

Unachopaswa kutoa kwa AI

umakini maalum

umoja

C#

Toleo, Mfumo wa Ingizo/fizikia

Sasisha mgao, mzunguko wa maisha

isiyo ya kweli

Mchoro

Toleo, muktadha wa nodi

Vikomo vya mantiki ya kuona

isiyo ya kweli

C++

Toleo, muundo wa moduli

Kumbukumbu, GC, macros

wachezaji wengi

zote mbili

mfano wa mtandao

Mwasilishaji-mamlaka

Makosa ya kawaida

  • Bila kubainisha injini/toleo. Inatoka kwa API iliyopitwa na wakati au iliyoundwa.
  • Nambari ya kutumaini bila kuielewa. Deni lisiloweza kuepukika hujilimbikiza.
  • Sio kupima utendaji. Ugawaji wa fremu kwa fremu hupunguza kasi ya fremu kimyakimya.
  • Kumwamini mteja. Kuna hatari ya kudanganya katika wachezaji wengi.
  • Kutaka mfumo mzima mara moja. Kipande kidogo, kinachoweza kupimwa ni salama zaidi.

Kwa muhtasari

AI ni msaidizi mwenye nguvu katika msimbo wa mchezo, lakini inahitaji injini, toleo, na muktadha wa usanifu. Usiiweke kwenye mradi bila kusoma na kuelewa kanuni, kuikusanya na kuijaribu, na kuangalia utendakazi na usalama. Dumisha mamlaka ya seva katika wachezaji wengi na utumie maelezo ya usalama kwa madhumuni ya kujihami na uthibitishaji pekee.

Jukumu la maombi

Chagua kijenzi kidogo (k.m. kuruka mara mbili au orodha rahisi). Tengeneza msimbo kwa kutoa injini na toleo na kiolezo cha "ombi la msimbo lenye muktadha". Kisha uondoe hatari za utendakazi na hitilafu kwa kukaguliwa msimbo sawa na kiolezo cha "Maelezo/ukaguzi wa Msimbo". Kusanya na jaribu nambari kwenye injini.

orodha ya ukaguzi

  • [ ] Nilitoa injini, toleo, lugha na muktadha wa usanifu.
  • [ ] Nilisoma na kuelewa kanuni; Nilitaka kwa maoni.
  • [ ] Niliikusanya na kuijaribu kwenye injini na kupima utendakazi.
  • [ ] Nilifanya ukaguzi wa usalama katika mtandao/uchumi/uhifadhi msimbo.
  • [ ] Nilitumia tu taarifa za usalama kutetea mchezo wangu mwenyewe.