Bölüm 7 / 11

Kod öndürmek we hereketlendirijini birleşdirmek: Agzybirlik (C #) we Unreal (Blueprint / C ++)

Girdeji:

  • Dwigateli, wersiýany, dili we binagärlik kontekstini berip, emeli intellektden ygtybarly, düzülip bilinýän oýun koduny öndürip bilmek we kody okamak we düşünmek arkaly birleşdirmek;
  • Oýun koduna mahsus öndürijiligi (ramka bölünişi), hereketlendirijiniň ömri we galýusinasiýa töwekgelçiligini düzmek, synag etmek we profil arkaly dolandyrmak ukyby;
  • Köp oýunçy oýunlarynda ýer eýesi ygtyýarlyk ýörelgesini ulanmak we howpsuzlyk oýunlaryny diňe öz oýnuňyzy goramak we barlamak üçin jogapkärçilikli ulanmak.

Oýun programma üpjünçiligi; Näçe gowy dizaýn edilse-de, kod bilen ýerine ýetirilýär. Oýun dwigateli, oýny herekete getirýän infrastrukturadyr: Agzybirlik (C # bilen giňden ulanylýan motor) we Unreal Motor (C ++ ulanýan hereketlendiriji we wizual skript dili Blueprint) iň köp ýaýran iki. AI kod döretmekde iň kämillik kömekçilerinden biridir: pleýer gözegçisi, inwentar ulgamy, döwlet maşynlary, tygşytlamak / ýüklemek, interfeýs logikasy, düzediş we gaýtadan işlemek (özüni alyp barşyny bozmazdan kod üýtgetmek). Gameöne oýun kodunyň öz kemçilikleri bar: öndürijilik (çarçuwanyň tizligi), hereketlendirijiniň ömri, köp oýunçy howpsuzlygy. Bu bölümde AI-ni oýun kodunda howpsuz we täsirli ulanmagy öwrenersiňiz.

Kritiki ýörelge: hereketlendiriji we wersiýa konteksti

AI haýsy dwigatel we wersiýa üçin ýazýandygyny bilmese, bulaşyk, könelişen ýa-da ýok API döreder. Şonuň üçin her kod isleginde motor, wersiýa, dil we arhitektura kontekstini beriň. "Agzybirlik üçin oýunçy hereketini ýaz" gowşak; "Agzybirlik 2022.3, C #, täze giriş ulgamy, Rigidbody esasly fizika hereketi" güýçli. “Unreal” -da “Blueprint” ýa-da “C ++” isleýändigiňizi we haýsy wersiýany ulanýandygyňyzy kesgitläň.

Howpsuz kod akymyny ädimme-ädim:

  1. Kontekst beriň (hereketlendiriji, wersiýa, dil, häzirki arhitektura, çäklendirmeler).
  2. Kiçijik we kesgitlenen bolmagyny isläň (tutuş ulgam däl-de, bir komponent).
  3. Kody okaň we düşüniň (onuň setir boýunça näme edýändigine düşüniň; düşünmeýän koduňyzy goýmaň).
  4. Gurmak we synag etmek (dwigatelde işlemek; profil - öndürijiligi ölçemek).
  5. Refaktor we birleşdirmek (taslama standartyna laýyk).
Maslahat: AI-den kod soranyňyzda "teswirler bilen düşündiriň" diýiň. Maksadyňyz koda düşünmek; Taslama düşünmeýän AI koduňyzy goýup bolmajak karz toplanar. Şeýle hem kiçi we synagdan geçirilýän böleklerde kod soraň: 500 setirli ulgamyň ýerine, bir kesgitlenen işi ýerine ýetirýän 30-50 setir komponenti barlamak we birleşdirmek aňsat.

Oýun koduna mahsus duzaklar

Çykyş. Oýun kody sekuntda 30-60 + gezek işleýär. AI gymmat amallary (ýadyň paýlanyşy, gözlemek, simli manipulýasiýa) her çarçuwada işleýän Täzelenme aýlawyna goýup biler; çarçuwanyň tizligini peseldýär. Profil öndürijilik kritiki kodlary we "her çarçuwada işle, bölünme" ýaly AI çäklendirmelerini berýär.

Motoryň ömri. AI kämahal ýörite usullar çagyrylanda bulaşýar, meselem, “Awake / Start / Unity in Update”, “Unreal” -da “BeginPlay / Tick”. Synag arkaly ömrüň sikliniň ýalňyşlyklaryny tutuň.

Köp oýunçynyň howpsuzlygy. Bu IT / howpsuzlyk nukdaýnazaryndan iň möhüm mesele. Müşderä hiç haçan köp oýunçyda ynanmaň: pleýeriň kompýuterindäki müşderi aldamak üçin dolandyrylyp bilner. Serwerdäki nokatlar, zeper, pul ýaly möhüm ýagdaýy barlaň (serwer-abraýly). AI tarapyndan döredilen tor koduny bu ýörelgä garşy dolandyryň; AI müşderi ynamdar gowşaklygy döreden bolsa, ony düzediň. Bu maglumatlary diňe öz oýnuňyzy goramak we barlamak üçin ulanyň; Başga biriniň serwerine rugsatsyz girmek ýa-da aldamak bikanun we ahlaksyz.

Üns beriň: AI döredilen kodda gowşaklyklar bolup biler (giriş tassyklamasy, müşderiniň ynamy, faýl manipulýasiýasyny ýatda saklamak). Kody kör kabul etmäň; Esasanam tor, ykdysadyýet we howpsuzlyk koduny gözden geçiriň.

Binagärlik we tehniki hyzmat karzy

AI aýratyn funksiýalary çalt öndürýär; Aöne oýnuň arhitekturasy - ulgamlaryň nähili bölünýändigi, biri-biri bilen nähili gürleşýändigi, maglumatlaryň saklanýan ýeri - uzak möhletli karar we bu adama degişlidir. AI-e "ähli inwentarlary ýazyň, söweşiň we ulgamy bilelikde ýazyň" diýseňiz, işleýän, ýöne berk birikdirilen, saklamak kyn, giňelmeýän ýüplük topy alarsyňyz. Munuň ýerine arhitekturany dizaýn edýärsiňiz, kesgitlenen interfeýsler bilen kiçi bölekleri köpeltmek üçin AI ulanyň. Gowy arhitektura oýun ulaldygyça üýtgeşiklik döredýär: erbet kararlar bir ýyldan soň her täze aýratynlygy gijikdirýän tehniki bergi hökmünde gaýdyp gelýär.

Bejeriş karzynyň başga bir çeşmesi, düşünilmän taslama girýän kod. AI tarapyndan ýazylan ulgam şu gün işläp biler; Sixöne alty aýdan soň çalyşmaly bolanyňyzda we edenlerini hiç kim ýada salmasa, karz göterime öwrülýär. Şonuň üçin iki ders zerurdyr: önümçilik wagtynda kody okamak we düşünmek we AI-den düşündirişleri soramak. Düzgün bolşy ýaly, özüňizi täzeden ýazyp bilmeýän ýa-da iň bolmanda setir boýunça düşündirip bilmeýän AI koduňyzy taslamaňyza goýmaň. AI tizlik berýär; Siziň tertip-düzgüniňiz durnuklylygy üpjün edýär.

üç sany kiçi halat

1-nji waka - goýberiliş konteksti näsazlygyň öňüni aldy. Bir programmist ilki bilen "Agzybirlik üçin inwentar ýaz" diýdi; kod köne API ulanýardy, düzmedi. Soňra "ScriptableObject esasly" Agzybirlik 2022.3, C # "kontekstini berdi; kod ilkinji gezek düzüldi we taslama laýyk gelýär. Kontekst düzedişiň bir sagadyny tygşytlady.

2-nji waka - öndürijilik duzagy. Bir oýunda çarçuwanyň derejesi pesdi. Profil ýazylanda, AI tarapyndan öndürilen Täzelenme usulynyň her çarçuwada täze sanaw bölüp, duşmanlary gözleýändigi göründi. Kody keş görnüşli salgylanma we kwadrat däl täzelenme bilen düzedip, çarçuwanyň tizligini 42-den 60-a çenli ýokarlandyrdy.

3-nji waka - Howpsuzlyk gowşaklygy tutuldy. Köp oýunçy oýnunda AI-den döredilen kod müşderiniň zyýanyny hasaplady we serwere habar berdi; aldamak üçin açykdy (müşderi çäksiz zyýan ýetirip biler). Kod serwer-awtoritar edildi (serwer zyýany hasaplaýar). Gözegçilik, neşirden soňky aldaw skandalynyň öňüni aldy.

Göçürip boljak dört şablon

1) Kontekst bilen kod haýyşy:

Motor: Agzybirlik 2022.3. Dil: C #. Binagärlik: [meselem komponent esasly] .Göçürmek: Täzelenmede paýlamak; okalýan we düşündirişli boluň. Sorag: [ýeke, kesgitlenen komponent, meselem. "goşa bökmek nyşanlary dolandyryjy"]. Ulanylýan her API-iň bu wersiýadygyny barlaň; Ynanmasaňyz, maňa habar beriň.

2) Kod düşündiriş / syn:

Aşakdaky kod setirini setir boýunça düşündiriň we (1) näme edýändigini ýazyň, (2) bolup biläýjek öndürijilik problemalary (çarçuwanyň bölünişi, gymmat gözleg), (3) bolup biläýjek näsazlyklar, (4) gowulaşdyrmak üçin teklipler. Kod: [paste]

3) Köp oýunçynyň howpsuzlyk barlagy:

Howpsuzlyk üçin aşakdaky köp oýunçy koduny gözden geçiriň. Hususan-da: müşderiniň ynamdar ýerleri, serwerde barlanmaly möhüm ýagdaý (zeper, nokatlar, pul), giriş tassyklamasy ýok. Serwer-awtoritar etmek üçin düzediş teklip ediň. Bu diňe öz oýnumy goramak üçin. Kod: [paste]

4) Öndürijilik profiline gönükdirilen refaktor:

Bu kod her çarçuwada işleýär we çarçuwanyň tizligini peseldýär: [kod]. Bölümleri, gymmat gözlegleri we gereksiz çarçuwaly amallary gözläň; Keş we has ýygy täzelenmeler bilen özüni alyp barşyňy bozman optimizirle. Üýtgeşmeleri düşündiriň.

Gowşak haýyş / Güýçli haýyş

Gowşak haýyş:

Agzybirlikde tygşytlaýyş ulgamyny ýazyň.

Hiç hili wersiýa, format, maglumat çäkleri, howpsuzlyk ýok; Netije umumy we töwekgelçilikli.

Güýçli haýyş:

Motor: Agzybirlik 2022.3, C #. Wezipe: JSON esasly tygşytlamak / ýüklemek ulgamy. Saklanmak üçin: oýunçynyň ýerleşýän ýeri, inwentar, ösüş. Çäklendirme: faýl korrupsiýasyna garşy ýalňyş dolandyryşy almak; Pleýer tarapyndan aňsatlyk bilen üýtgedip aldawyň öňüni almak üçin saklaýyş faýlyna bütewilik barlagyny (hash) goşuň. Kody düşündiriň we her API-iň şu wersiýadygyny barlaň.

Wersiýa, masştab, ýalňyşlyk bilen işlemek we bitewiligi barlamak çykyşy gatylaşdyrýar.

Motor / dil kontekst tablisasy

hereketlendiriji

dili

AI-e bermeli zatlaryňyz

aýratyn üns

agzybirlik

C #

Wersiýa, Giriş / fizika ulgamy

Bölüşi, ömri siklini täzeläň

real däl

Meýilnama

Wersiýa, düwün konteksti

Wizual logiki çäkler

real däl

C ++

Wersiýa, modulyň gurluşy

Oryat, GC, makroslar

köp oýunçy

ikisem

tor modeli

Tanyşdyryjy-awtoritarizm

Adaty ýalňyşlyklar

  • Motory / wersiýasyny görkezmeýär. Könelişen ýa-da ýasalan API-den gelýär.
  • Düşünmän ynanmak kody. Düzedip bolmaýan bergi ýygnanýar.
  • Öndürijiligi ölçemezlik. Çarçuwaly çarçuwanyň bölünişi çarçuwanyň tizligini ýuwaşlyk bilen peseldýär.
  • Müşderä ynanmak. Köp oýunçyda aldaw gowşaklygy bar.
  • Bütin ulgamy birbada islemek. Kiçijik, synagdan geçirilýän bölek has ygtybarlydyr.

Gysgaça

AI oýun kodunda güýçli kömekçi, ýöne motor, wersiýa we binagärlik kontekstini talap edýär. Kod okamazdan we düşünmezden, ony düzmezden we synagdan geçirmezden, öndürijiligi we howpsuzlygy barlamazdan taslama goýmaň. Köp oýunçyda serwer-awtoritarizmi saklaň we howpsuzlyk maglumatlaryny diňe goranmak we barlamak maksady bilen ulanyň.

Programma meselesi

Kiçijik komponenti saýlaň (meselem, goşa bökmek ýa-da ýönekeý inwentar). "Kontekst bilen kod haýyşy" şablony bilen hereketlendiriji we wersiýa bermek arkaly kod dörediň. Soňra "Kod düşündirişi / gözden geçirmek" şablony bilen şol bir kody gözden geçirip, öndürijilik we näsazlyk töwekgelçiligini aýyryň. Dwigateldäki kody düzüň we synagdan geçiriň.

gözegçilik sanawy

  • [] Motory, wersiýasyny, dilini we arhitektura kontekstini berdim.
  • [] Kody okadym we düşündim; Teswir bilen isledim.
  • [] Dwigatelde jemledim we synagdan geçirdim we öndürijiligini ölçedim.
  • [] Torda / ykdysadyýetde / kod saklamakda howpsuzlyk barlagyny geçirdim.
  • [] Diňe öz oýnumy goramak üçin howpsuzlyk maglumatlary ulandym.