Keuntungan:
- Kemampuan untuk menghasilkan kode permainan yang andal dan dapat dikompilasi dari kecerdasan buatan dengan memberikan konteks mesin, versi, bahasa, dan arsitektur serta mengintegrasikannya dengan membaca dan memahami kode
- Kemampuan untuk mengelola kinerja spesifik kode game (alokasi per frame), siklus hidup mesin, dan risiko halusinasi melalui kompilasi, pengujian, dan pembuatan profil
- Kemampuan untuk menerapkan prinsip otoritas tuan rumah dalam permainan multipemain dan menggunakan informasi keamanan secara bertanggung jawab hanya untuk mempertahankan dan memverifikasi permainannya sendiri.
Permainan ini adalah perangkat lunak; Tidak peduli seberapa baik desainnya, ia diimplementasikan dengan kode. Mesin permainan adalah infrastruktur yang membuat permainan berjalan: Unity (mesin yang banyak digunakan dengan skrip C#) dan Unreal Engine (mesin yang menggunakan C++ dan bahasa skrip visual Blueprint) adalah dua yang paling umum. AI adalah salah satu bantuan paling matang dalam pembuatan kode: pengontrol pemain, sistem inventaris, mesin negara, penyimpanan/muat, logika antarmuka, debugging dan refactoring (memfaktorkan ulang kode tanpa merusak perilakunya). Namun kode game memiliki kekurangannya sendiri: performa (frame rate), siklus hidup mesin, keamanan multipemain. Di unit ini Anda akan mempelajari cara menggunakan AI dengan aman dan efisien dalam kode game.
Prinsip penting: konteks mesin dan versi
Jika AI tidak mengetahui mesin dan versi apa yang ditulisnya, AI akan menghasilkan API yang membingungkan, usang, atau tidak ada. Jadi berikan konteks mesin, versi, bahasa, dan arsitektur di setiap perintah kode. "Tulis gerakan pemain untuk Unity" lemah; "Unity 2022.3, C#, Sistem Input baru, gerakan fisika berbasis benda kaku" sangat kuat. Tentukan apakah Anda ingin Blueprint atau C++ di Unreal dan versi mana yang Anda gunakan.
Alur kode aman langkah demi langkah:
- Berikan konteks (mesin, versi, bahasa, arsitektur saat ini, batasan).
- Ingin yang kecil dan jelas (satu komponen, bukan keseluruhan sistem).
- Baca dan pahami kodenya (pahami fungsinya baris demi baris; jangan masukkan kode yang tidak Anda mengerti).
- Bangun dan uji (jalankan di mesin; profil — ukur kinerja).
- Refactor dan integrasikan (sesuaikan standar proyek).
Tip: Saat meminta kode kepada AI, ucapkan "jelaskan dengan komentar". Tujuan Anda adalah memahami kodenya; Memasukkan kode AI yang tidak Anda pahami ke dalam sebuah proyek akan mengakumulasi hutang yang tidak dapat dikelola. Mintalah juga kode dalam potongan kecil yang dapat diuji: Daripada sistem 500 baris, komponen baris 30-50 yang melakukan satu pekerjaan tertentu mudah untuk diverifikasi dan diintegrasikan.
Perangkap khusus untuk kode permainan
Kinerja. Kode permainan berjalan 30-60+ kali per detik. AI dapat memasukkan operasi yang mahal (alokasi memori, pencarian, manipulasi string) ke dalam loop Pembaruan yang berjalan pada setiap frame; ini mengurangi kecepatan bingkai. Buat profil kode penting performa dan berikan batasan AI seperti "berjalan di setiap frame, tanpa alokasi".
Siklus hidup mesin. AI terkadang bingung ketika metode khusus dipanggil, seperti Awake/Start/Update di Unity, BeginPlay/Tick di Unreal. Tangkap kesalahan siklus hidup dengan menguji.
Keamanan multipemain. Ini adalah masalah paling kritis dalam hal TI/keamanan. Jangan pernah mempercayai klien dalam multipemain: klien di komputer pemain dapat dimanipulasi untuk melakukan kecurangan. Verifikasi status penting seperti poin, kerusakan, uang di server (server-otoritatif). Mengontrol kode jaringan yang dihasilkan oleh AI berdasarkan prinsip ini; Jika AI telah menciptakan kerentanan yang mempercayai klien, perbaikilah. Gunakan informasi ini hanya untuk mempertahankan dan memverifikasi permainan Anda sendiri; Akses tidak sah atau melakukan kecurangan pada server orang lain adalah ilegal dan tidak etis.
Perhatian: Kode yang dihasilkan AI mungkin mengandung kerentanan (validasi input tidak ada, kepercayaan klien, manipulasi penyimpanan file). Jangan menerima kode tersebut begitu saja; Lakukan tinjauan keamanan, khususnya jaringan, ekonomi, dan kode penyimpanan.
Hutang arsitektur dan pemeliharaan
AI menghasilkan fungsi individual dengan cepat; Namun arsitektur sebuah game—bagaimana sistem dibagi, bagaimana sistem berkomunikasi satu sama lain, di mana data disimpan—adalah keputusan jangka panjang, dan itu milik manusia. Jika Anda memberi tahu AI untuk "menulis seluruh inventaris, pertarungan, dan sistem penyimpanan bersama-sama", Anda akan mendapatkan bola benang yang berfungsi tetapi terikat erat, sulit dirawat, dan tidak dapat diperluas. Sebaliknya, Anda mendesain arsitektur, menggunakan AI untuk mengisi komponen kecil dengan antarmuka yang ditentukan. Arsitektur yang baik membuat perbedaan seiring berkembangnya permainan: keputusan buruk muncul kembali setahun kemudian sebagai hutang teknis yang menunda setiap fitur baru.
Sumber utang pemeliharaan lainnya adalah kode yang masuk ke proyek tanpa dipahami. Sistem yang ditulis oleh AI dapat berfungsi saat ini; Namun ketika Anda harus menggantinya enam bulan kemudian dan tidak ada yang ingat apa yang mereka lakukan, utang tersebut berubah menjadi bunga. Itu sebabnya ada dua disiplin ilmu yang penting: membaca dan memahami kode pada waktu produksi, dan meminta komentar klarifikasi dari AI. Sebagai aturan praktis, jangan masukkan kode AI apa pun ke dalam proyek Anda yang tidak dapat Anda tulis ulang sendiri atau setidaknya jelaskan baris demi baris. AI memberi kecepatan; Disiplin Anda memberikan keberlanjutan.
tiga kasus mini
Kasus 1 — Konteks rilis mencegah bug. Seorang programmer pertama kali berkata, "Tulis inventaris untuk Unity"; kodenya menggunakan API lama, tidak dapat dikompilasi. Kemudian memberikan konteks "Unity 2022.3, C#, based on ScriptableObject"; kode dikompilasi pertama kali dan sesuai dengan proyek. Konteksnya menghemat satu jam proses debug.
Kasus 2 — Jebakan kinerja. Dalam satu game, frame rate-nya rendah. Saat membuat profil, terlihat bahwa metode Pembaruan yang dihasilkan oleh AI mengalokasikan daftar baru di setiap frame dan mencari musuh. Memperbaiki kode dengan referensi cache dan pembaruan non-kuadrat, meningkatkan kecepatan bingkai dari 42 menjadi 60.
Kasus 3 — Kerentanan keamanan terdeteksi. Dalam permainan multipemain, kode yang dihasilkan AI menghitung kerusakan pada klien dan melaporkannya ke server; ini terbuka untuk kecurangan (klien dapat menimbulkan kerusakan tak terbatas). Kode telah dibuat server-authoritarian (server menghitung kerusakannya). Audit tersebut mencegah skandal kecurangan pasca publikasi.
Empat templat yang dapat disalin
1) Permintaan kode dengan konteks:
Mesin: Unity 2022.3. Bahasa: C#. Arsitektur: [mis. berbasis komponen]. Kendala: Mengalokasikan dalam Pembaruan; dapat dibaca dan dikomentari. Tugas: [komponen tunggal yang ditentukan, mis. "pengontrol karakter lompat ganda"]. Verifikasi bahwa setiap API yang Anda gunakan ada dalam versi ini; Jika Anda tidak yakin, beri tahu saya.
2) Penjelasan/ulasan kode:
Jelaskan kode berikut baris demi baris dan tulis (1) fungsinya, (2) kemungkinan masalah kinerja (alokasi per frame, pencarian mahal), (3) kemungkinan bug, (4) saran untuk perbaikan.Kode: [tempel]
3) Audit keamanan multipemain:
Periksa kode multipemain berikut untuk keamanan. Khususnya: tempat di mana klien dipercaya, keadaan kritis yang perlu diverifikasi di server (kerusakan, poin, uang), validasi input hilang. Sarankan perbaikan untuk membuat server menjadi otoriter. Ini hanya untuk mempertahankan permainan saya sendiri. Kode: [tempel]
4) Refactor yang berfokus pada profil kinerja:
Kode ini berjalan pada setiap frame dan mengurangi frame rate: [kode]. Temukan alokasi, pencarian yang mahal, dan operasi frame-by-frame yang tidak perlu; Optimalkan tanpa merusak perilaku dengan cache dan pembaruan yang lebih jarang. Jelaskan perubahannya.
Perintah lemah / Perintah kuat
Perintah yang lemah:
Tulis sistem penyimpanan di Unity.
Tidak ada versi, format, cakupan data, keamanan; Dampaknya bersifat umum dan berisiko.
Perintah yang kuat:
Mesin: Unity 2022.3, C#. Tugas: Sistem simpan/muat berbasis JSON. Untuk disimpan: lokasi pemain, inventaris, kemajuan. Kendala: dapatkan manajemen kesalahan terhadap kerusakan file; Tambahkan pemeriksaan integritas (hash) ke file penyimpanan untuk mencegah kecurangan dengan mengubahnya dengan mudah oleh pemain. Komentari kodenya dan verifikasi bahwa setiap API ada pada versi ini.
Pembuatan versi, cakupan, penanganan kesalahan, dan pemeriksaan integritas memperkeras keluaran.
Tabel konteks mesin/bahasa
mesin
bahasa
Apa yang harus Anda berikan kepada AI
perhatian khusus
kesatuan
C#
Versi, Input/sistem fisika
Alokasi pembaruan, siklus hidup
tidak nyata
cetak biru
Versi, konteks simpul
Batasan logika visual
tidak nyata
C++
Versi, struktur modul
Memori, GC, makro
multipemain
keduanya
model jaringan
Otoritarianisme presenter
Kesalahan umum
- Tidak menentukan mesin/versi. Itu berasal dari API yang sudah ketinggalan zaman atau dibuat-buat.
- Mempercayai kode tanpa memahaminya. Hutang yang tidak dapat dikelola menumpuk.
- Tidak mengukur kinerja. Alokasi frame-by-frame secara diam-diam mengurangi kecepatan frame.
- Mempercayai klien. Ada kerentanan kecurangan dalam multipemain.
- Menginginkan seluruh sistem sekaligus. Potongan kecil yang dapat diuji lebih aman.
Singkatnya
AI adalah penolong yang ampuh dalam kode game, tetapi memerlukan mesin, versi, dan konteks arsitektur. Jangan memasukkannya ke dalam proyek tanpa membaca dan memahami kode, menyusun dan mengujinya, serta memeriksa kinerja dan keamanan. Pertahankan otoritarianisme server dalam multipemain dan gunakan informasi keamanan hanya untuk tujuan defensif dan verifikasi.
Tugas aplikasi
Pilih komponen kecil (misalnya lompat ganda atau inventaris sederhana). Hasilkan kode dengan menyediakan mesin dan versi dengan templat "permintaan kode dengan konteks". Kemudian hilangkan risiko kinerja dan bug dengan meninjau kode yang sama menggunakan templat "Deskripsi/ulasan kode". Kompilasi dan uji kode di mesin.
daftar periksa
- [ ] Saya memberikan konteks mesin, versi, bahasa dan arsitektur.
- [ ] Saya membaca dan memahami kodenya; Saya menginginkannya dengan komentar.
- [ ] Saya mengkompilasi dan mengujinya di mesin dan mengukur kinerjanya.
- [ ] Saya melakukan pemeriksaan keamanan pada kode jaringan/ekonomi/penyimpanan.
- [ ] Saya hanya menggunakan informasi keamanan untuk mempertahankan permainan saya sendiri.