Keuntungan:
- Keupayaan untuk menghasilkan kod permainan yang boleh dipercayai dan boleh disusun daripada kecerdasan buatan dengan memberikan enjin, versi, bahasa dan konteks seni bina dan menyepadukannya dengan membaca dan memahami kod
- Keupayaan untuk mengurus prestasi khusus kod permainan (peruntukan setiap bingkai), kitaran hayat enjin dan risiko halusinasi melalui penyusunan, ujian dan pemprofilan
- Keupayaan untuk menggunakan prinsip kuasa hos dalam permainan berbilang pemain dan menggunakan maklumat keselamatan secara bertanggungjawab hanya untuk mempertahankan dan mengesahkan permainan sendiri.
Permainan ini adalah perisian; Tidak kira seberapa baik ia direka, ia dilaksanakan dengan kod. Enjin permainan ialah infrastruktur yang menjadikan permainan berjalan: Unity (enjin digunakan secara meluas dalam skrip C#) dan Enjin Unreal (enjin menggunakan C++ dan bahasa skrip visual Blueprint) adalah dua yang paling biasa. AI ialah salah satu bantuan paling matang dalam penjanaan kod: pengawal pemain, sistem inventori, mesin keadaan, simpan/muat, logik antara muka, penyahpepijatan dan pemfaktoran semula (kod pemfaktoran semula tanpa melanggar kelakuannya). Tetapi kod permainan mempunyai perangkapnya sendiri: prestasi (kadar bingkai), kitaran hayat enjin, keselamatan berbilang pemain. Dalam unit ini anda akan belajar cara menggunakan AI dengan selamat dan cekap dalam kod permainan.
Prinsip kritikal: konteks enjin dan versi
Jika AI tidak mengetahui enjin dan versi mana ia menulis, ia akan menghasilkan API yang keliru, usang atau tidak wujud. Jadi berikan konteks enjin, versi, bahasa dan seni bina dalam setiap gesaan kod. "Tulis pergerakan pemain untuk Perpaduan" adalah lemah; "Perpaduan 2022.3, C#, Sistem Input baharu, pergerakan fizik berasaskan Badan Tegar" sangat berkuasa. Tentukan sama ada anda mahu Blueprint atau C++ dalam Unreal dan versi yang anda gunakan.
Aliran kod selamat langkah demi langkah:
- Berikan konteks (enjin, versi, bahasa, seni bina semasa, kekangan).
- Mahukannya kecil dan ditakrifkan (komponen tunggal, bukan keseluruhan sistem).
- Baca dan fahami kod (faham apa yang ia lakukan baris demi baris; jangan letak kod yang anda tidak faham).
- Bina dan uji (jalankan pada enjin; profil — ukur prestasi).
- Refactor dan integrate (padanan standard projek).
Petua: Apabila meminta AI untuk kod, sebut "terangkan dengan ulasan". Matlamat anda adalah untuk memahami kod; Meletakkan kod AI yang anda tidak faham ke dalam projek akan mengumpul hutang yang tidak dapat diselenggara. Minta juga kod dalam ketulan kecil yang boleh diuji: Daripada sistem 500 baris, komponen 30-50 baris yang melakukan satu tugas yang ditentukan adalah mudah untuk disahkan dan disepadukan.
Perangkap khusus untuk kod permainan
Prestasi. Kod permainan berjalan 30-60+ kali sesaat. AI boleh meletakkan operasi mahal (peruntukan memori, carian, manipulasi rentetan) ke dalam gelung Kemas Kini yang berjalan pada setiap bingkai; ini mengurangkan kadar bingkai. Profilkan kod kritikal prestasi dan berikan kekangan AI seperti "jalankan pada setiap bingkai, tiada peruntukan".
Kitaran hayat enjin. AI kadangkala keliru apabila kaedah khas dipanggil, seperti Awake/Start/Update in Unity, BeginPlay/Tick in Unreal. Tangkap ralat kitaran hayat dengan ujian.
Keselamatan berbilang pemain. Ini adalah isu paling kritikal dari segi IT/keselamatan. Jangan sekali-kali mempercayai pelanggan dalam berbilang pemain: pelanggan pada komputer pemain boleh dimanipulasi untuk menipu. Sahkan status kritikal seperti mata, kerosakan, wang pada pelayan (server-authoritative). Kawal kod rangkaian yang dihasilkan oleh AI terhadap prinsip ini; Jika AI telah mencipta kelemahan yang mempercayai pelanggan, perbaikinya. Gunakan maklumat ini hanya untuk mempertahankan dan mengesahkan permainan anda sendiri; Akses tanpa kebenaran atau menipu pada pelayan orang lain adalah menyalahi undang-undang dan tidak beretika.
Awas: Kod yang dijana AI mungkin mengandungi kelemahan (pengesahan input hilang, kepercayaan pelanggan, simpan manipulasi fail). Jangan terima kod secara membuta tuli; Lakukan semakan keselamatan, terutamanya rangkaian, ekonomi dan kod simpan.
Hutang seni bina dan penyelenggaraan
AI menghasilkan fungsi individu dengan cepat; Tetapi seni bina permainan—bagaimana sistem dibahagikan, cara mereka bercakap antara satu sama lain, tempat data disimpan—adalah keputusan jangka panjang, dan ia adalah milik manusia. Jika anda memberitahu AI untuk "menulis keseluruhan inventori, memerangi, dan menyelamatkan sistem bersama-sama", anda mendapat bebola benang yang berfungsi tetapi berganding rapat, sukar diselenggara dan tidak boleh dikembangkan. Sebaliknya, anda mereka bentuk seni bina, gunakan AI untuk mengisi komponen kecil dengan antara muka yang ditentukan. Seni bina yang baik membuat perubahan apabila permainan berkembang: keputusan yang buruk kembali setahun kemudian sebagai hutang teknikal yang menangguhkan setiap ciri baharu.
Satu lagi sumber hutang penyelenggaraan ialah kod yang memasuki projek tanpa difahami. Sistem yang ditulis oleh AI boleh berfungsi hari ini; Tetapi apabila anda perlu menggantikannya enam bulan kemudian dan tiada siapa yang ingat apa yang mereka lakukan, hutang itu bertukar menjadi faedah. Itulah sebabnya dua disiplin adalah penting: membaca dan memahami kod pada masa pengeluaran, dan meminta penjelasan penjelasan daripada AI. Sebagai peraturan biasa, jangan masukkan sebarang kod AI ke dalam projek anda yang anda tidak boleh tulis semula sendiri atau sekurang-kurangnya menerangkan baris demi baris. AI memberikan kelajuan; Disiplin anda memberikan kemampanan.
tiga kes mini
Kes 1 — Konteks keluaran menghalang pepijat. Seorang pengaturcara mula-mula berkata, "Tulis inventori untuk Perpaduan"; kod itu menggunakan API lama, ia tidak dikompilasi. Kemudian ia memberikan konteks "Unity 2022.3, C#, based on ScriptableObject"; kod disusun kali pertama dan sesuai dengan projek. Konteks menyimpan satu jam penyahpepijatan.
Kes 2 — Perangkap prestasi. Dalam satu permainan, kadar bingkai adalah rendah. Apabila membuat profil, ia dilihat bahawa kaedah Kemas kini yang dihasilkan oleh AI memperuntukkan senarai baharu dalam setiap bingkai dan mencari musuh. Membetulkan kod dengan rujukan cache dan kemas kini bukan kuadratik, meningkatkan kadar bingkai daripada 42 kepada 60.
Kes 3 — Kerentanan keselamatan ditangkap. Dalam permainan berbilang pemain, kod yang dijana AI mengira kerosakan pada klien dan melaporkannya kepada pelayan; ini terbuka untuk menipu (pelanggan boleh menyebabkan kerosakan yang tidak terhingga). Kod telah dibuat pelayan-autoritarian (pelayan mengira kerosakan). Audit itu menghalang skandal penipuan pasca penerbitan.
Empat templat yang boleh disalin
1) Permintaan kod dengan konteks:
Enjin: Perpaduan 2022.3. Bahasa: C#. Seni bina: [cth. berasaskan komponen].Kekangan: Memperuntukkan dalam Kemas Kini; boleh dibaca dan diulas.Tugas: [tunggal, komponen yang ditakrifkan, cth. "pengawal watak lompat berganda"]. Sahkan bahawa setiap API yang anda gunakan adalah dalam versi ini; Jika anda tidak pasti, beritahu saya.
2) Penerangan/semakan kod:
Terangkan baris demi baris kod berikut dan tulis (1) perkara yang dilakukannya, (2) masalah prestasi yang mungkin (peruntukan setiap bingkai, carian mahal), (3) kemungkinan pepijat, (4) cadangan untuk penambahbaikan. Kod: [tampal]
3) Audit keselamatan berbilang pemain:
Periksa kod berbilang pemain berikut untuk keselamatan. Khususnya: tempat di mana pelanggan dipercayai, keadaan kritikal yang perlu disahkan pada pelayan (kerosakan, mata, wang), tiada pengesahan input. Cadangkan pembetulan untuk menjadikan pelayan-autoritarian. Ini hanya untuk mempertahankan permainan saya sendiri. Kod: [tampal]
4) Refactor tertumpu profil prestasi:
Kod ini berjalan pada setiap bingkai dan mengurangkan kadar bingkai: [kod]. Cari peruntukan, carian mahal dan operasi bingkai demi bingkai yang tidak perlu; Optimumkan tanpa melanggar tingkah laku dengan caching dan kemas kini yang kurang kerap. Terangkan perubahan.
Gesaan lemah / Gesaan kuat
Gesaan yang lemah:
Tulis sistem simpan dalam Unity.
Tiada versi, format, skop data, keselamatan; Hasilnya adalah umum dan berisiko.
Gesaan kuat:
Enjin: Unity 2022.3, C#. Tugas: Sistem simpan/muat berasaskan JSON. Untuk disimpan: lokasi pemain, inventori, kemajuan. Kekangan: dapatkan pengurusan ralat terhadap rasuah fail; Tambahkan semakan integriti (cincang) pada fail simpan untuk mengelakkan penipuan dengan menukarnya dengan mudah oleh pemain. Ulas kod dan sahkan bahawa setiap API berada pada versi ini.
Versi, skop, pengendalian ralat dan pemeriksaan integriti mengeraskan output.
Jadual konteks enjin/bahasa
enjin
bahasa
Apa yang anda perlu berikan kepada AI
perhatian khusus
perpaduan
C#
Versi, sistem Input/fizik
Kemas kini peruntukan, kitaran hayat
tidak nyata
Rangka tindakan
Versi, konteks nod
Had logik visual
tidak nyata
C++
Versi, struktur modul
Memori, GC, makro
berbilang pemain
kedua-duanya
model rangkaian
Penyampai-autoritarianisme
Kesilapan biasa
- Tidak menyatakan enjin/versi. Ia datang daripada API yang lapuk atau dibuat-buat.
- Mempercayai kod tanpa memahaminya. Hutang yang tidak dapat dikekalkan berkumpul.
- Tidak mengukur prestasi. Peruntukan bingkai demi bingkai secara senyap mengurangkan kadar bingkai.
- Mempercayai pelanggan. Terdapat kelemahan penipuan dalam berbilang pemain.
- Mahukan keseluruhan sistem sekali gus. Sekeping kecil yang boleh diuji adalah lebih selamat.
Secara ringkasnya
AI ialah pembantu yang berkuasa dalam kod permainan, tetapi ia memerlukan enjin, versi dan konteks seni bina. Jangan masukkannya ke dalam projek tanpa membaca dan memahami kod, menyusun dan mengujinya, serta menyemak prestasi dan keselamatan. Kekalkan autoritarianisme pelayan dalam berbilang pemain dan gunakan maklumat keselamatan untuk tujuan pertahanan dan pengesahan sahaja.
Tugasan permohonan
Pilih komponen kecil (cth. lompat berganda atau inventori mudah). Hasilkan kod dengan menyediakan enjin dan versi dengan templat "permintaan kod dengan konteks". Kemudian alih keluar risiko prestasi dan pepijat dengan menyemak kod yang sama dengan templat "Perihalan/semakan kod". Susun dan uji kod dalam enjin.
senarai semak
- [ ] Saya memberikan konteks enjin, versi, bahasa dan seni bina.
- [ ] Saya membaca dan memahami kod tersebut; Saya mahukannya dengan ulasan.
- [ ] Saya menyusun dan mengujinya dalam enjin dan mengukur prestasi.
- [ ] Saya melakukan pemeriksaan keselamatan dalam kod rangkaian/ekonomi/simpan.
- [ ] Saya hanya menggunakan maklumat keselamatan untuk mempertahankan permainan saya sendiri.