Takafumi Horiuchi

Pembuatan Pokémon yang unik untuk diri sendiri di dunia

Gambaran umum

Dari enam kata yang dimasukkan di tengah permainan, AI akan menghasilkan spesies Pokémon baru. Beberapa menit kemudian, spesies baru itu muncul di semak-semak, dan pemain dapat bertemu, menangkap, serta memberi nama panggilan. Saya membuat prototipe penelitian yang menyusun secara langsung bukan hanya penampilan dan nama, tetapi juga tipe, nilai ras, teknik, dan data yang digunakan dalam permainan.

Dalam prototipe, percakapan, input kata, generasi di latar belakang, pertemuan di alam liar, penangkapan, hingga penamaan dihubungkan sebagai satu pengalaman tanpa menghentikan permainan. Spesies baru didaftarkan sebagai ras yang dapat ditangani oleh sistem permainan yang ada, bukan hanya sebagai gambar biasa.

Fokus utama dari inisiatif ini bukanlah model generatif itu sendiri. Manusia merancang kondisi untuk menjaga keseimbangan permainan dan konsistensi tampilan, dan hanya membiarkan AI mengeksplorasi dalam cakupan tersebut, yang disebut sebagai 'kerangka generatif'. Selain itu, saya juga secara awal mempertimbangkan sendiri apakah ketertarikan sejati bisa muncul jika hasil genereasi itu hanya milik saya, dengan memainkannya sendiri.

Pertanyaan — Jika sesuatu benar-benar unik, apakah keterikatan akan muncul?

Dalam permainan, ada kesenangan dalam memilih, mengembangkan, dan memberi nama karakter sehingga menjadi "keberadaan yang hanya dimiliki diri sendiri". Namun, titik awalnya berada di dalam pilihan yang disediakan oleh pengembang. Dengan AI generatif, jika keberadaan khusus pemain bisa dibuat dari titik awal itu sendiri, apakah keterikatan akan menjadi lebih kuat lagi?

Untuk memeriksa pertanyaan ini, hanya membuat satu gambar tidaklah cukup. Yang dihasilkan harus dapat masuk ke dunia permainan, bertemu, ditangkap, dan tetap dapat digunakan setelah itu. Oleh karena itu, dua pintu masuk dengan keterlibatan pemain yang berbeda disiapkan. Jika berbicara dengan kakek, itu dihasilkan tanpa input; jika berbicara dengan nenek, pemain memilih enam kata. Cara pembuatan permainan ditentukan oleh pihak yang pertama kali diajak bicara.

Tujuan dari prototipe ini bukan untuk menyimpulkan tentang keterikatan. Tujuannya adalah untuk membangun dasar untuk mengintegrasikan produk yang dihasilkan ke dalam pengalaman bermain game biasa, dan menemukan kondisi yang bisa dibandingkan di masa depan.

Alur permainan

Berikut adalah alur 'generasi keterlibatan' di mana pemain memilih kata-kata. Pemain berbicara dengan seorang nenek di Hutan Touka, lalu memilih enam kata melalui 'percakapan mudah' yang sudah ada dalam permainan. Saat bermain terus, proses generasi berlangsung, dan ketika persiapan selesai, suara hewan terdengar. Masuk ke rerumputan, spesies baru muncul dan bisa ditangkap dengan cara yang sama seperti Pokémon liar biasa. Nama, tipe, nilai ras, gerakan, sprite pertarungan depan & belakang, dan ikon yang dibawa akan dihasilkan setiap kali dijalankan. Rangkaian aksi ini juga dapat dikonfirmasi di Video demo.

Seorang pasangan lansia berdiri di Hutan Touka. Di jendela percakapan tertulis 'Makhluk seperti apa yang sedang kamu pikirkan?'
Ketika berbicara dengan nenek, itu dimulai.
Layar input percakapan sederhana berjudul 'Makhluk yang Terlintas dalam Pikiran'. Kata-kata BEAUTIFUL, ATTACK, FIRE telah dimasukkan.
Dengan 'percakapan mudah' yang sudah ada di Emerald, sampaikan enam kata.
Pemain berdiri di dekat semak di hutan. Di jendela percakapan tertulis 'Semak bergoyang... ada sesuatu di sana!'
Pembuatan memerlukan beberapa menit di sisi PC. Suara hewan menandai selesainya persiapan.
Layar pertarungan. Seekor kadal merah dengan api di kepalanya menghadap pemain. Tertulis,
Kadal tipe api FLAMEREL muncul dari rumput yang bergoyang.
Selama pertarungan, bola monster dilemparkan ke arah FLAMEREL.
Sama seperti ras lain, bisa ditangkap dengan Poké Ball.
Layar penamaan yang menanyakan julukan FLAMEREL. Tertulis GGG.
Seperti spesies lain, mereka bisa diberi julukan.
Layar genggam. Ras yang dihasilkan memiliki ikon khusus dan berada berdampingan dengan tiga Pokémon biasa.
Seperti ras lain, mereka memiliki ikon khusus dan ditampilkan di depan tangan.
Layar informasi Pokémon FLAMEREL. Menampilkan tipe api, kemampuan 'Mouka', sifat nakal, dan ditemui di Hutan Touka pada level 7.
Sama seperti ras lain, layar status juga berfungsi dengan baik.

Masalah desain — Jika dibuat secara bebas, permainan akan rusak

Kemampuan AI untuk menciptakan karakter baru dan kenyataan bahwa karakter tersebut berfungsi dalam permainan adalah masalah yang berbeda. Jika kemampuannya terlalu tinggi, tingkat kesulitan akan terganggu, dan jika tipe dan tekniknya tidak cocok, akan sulit untuk melatihnya. Jika penampilannya terlalu kompleks, bentuknya tidak akan bisa dikenali ketika diubah menjadi sprite 64×64 piksel.

Di sisi lain, jika semuanya dikunci, tidak ada artinya jika setiap kali dijalankan menghasilkan sesuatu yang berbeda. Yang dibutuhkan bukanlah menghilangkan kebebasan AI, melainkan membedakan bagian yang harus dijaga sebagai permainan dan bagian yang diperbolehkan mengalami perubahan.

Oleh karena itu, objek desain dipindahkan dari seekor Pokémon tunggal ke ruang yang dapat menghasilkan Pokémon. Manusia mendefinisikan tujuan, batasan, larangan, dan metode verifikasi, sementara AI mewujudkan kandidat di dalam batasan tersebut. Ini adalah percobaan desain berbasis batasan Filosofi desain saya sebagai prototipe yang bergerak.

Pendekatan — merancang kondisi pembuatan, bukan hasil yang dihasilkan

Jangan biarkan LLM menulis teks bebas, melainkan hanya mengisi item yang telah ditentukan seperti nama, tipe, nilai ras, gerakan, ukuran tubuh, dan warna. Hasil keluaran tidak langsung digunakan, tetapi diperiksa dengan validator. Jika ada pelanggaran, kembalikan ke model aturan mana yang dilanggar, dan buat ulang sampai memenuhi kondisi.

  1. Manusia yang menentukan batas. Menjadikan keseimbangan permainan, bentuk yang dapat dibaca di layar, dan ekspresi yang harus dihindari menjadi aturan yang dapat diperiksa.
  2. AI mewujudkan kandidat. Berdasarkan kata-kata pemain, usulkan nilai dari item yang diizinkan.
  3. Mesin memverifikasi aturan. Menilai secara otomatis kombinasi angka, teknik, dan ekspresi yang dilarang.
  4. Memberikan umpan balik hanya pada pelanggaran. Kandidat yang tidak memenuhi syarat dikembalikan dengan alasan dan dibuat ulang.

Keterbatasan yang melindungi permainan. Jumlah total nilai ras ditetapkan dalam rentang 280 hingga 360, dan batas atas serta bawah juga diterapkan pada setiap kemampuan. Gerakan diambil dari sumber game, dan dibatasi pada tipe ras tersebut atau tipe normal. Selain itu, gerakan one-hit KO, meledak sendiri, kerusakan tetap, dan gerakan yang terlalu kuat dikecualikan, serta jumlah gerakan serangan dan keberadaan gerakan yang sesuai tipe juga diperiksa. Tingkat penangkapan dan kecepatan pertumbuhan ditetapkan, sehingga perbedaan yang dihasilkan berada dalam rentang yang dapat dibandingkan.

Batasan untuk menjaga penampilan. Pilih bentuk tubuh dari kandidat yang mudah mempertahankan kontur bahkan untuk sprite kecil, dan batasi kosakata warna serta fitur. Fitur manusiawi, darah, senjata, dan huruf dikecualikan. Terakhir, selalu tambahkan kondisi pencegahan kerusakan seperti 'hanya satu tubuh', 'seluruh badan', dan 'jangan membuat anggota tubuh tambahan' ke instruksi pembuatan gambar.

Menurut sebuah catatan, model awalnya mengusulkan total nilai ras sebesar 380. Kerangka kerja mendeteksi pelanggaran dan mendorong pembuatan ulang, akhirnya menyatu pada spesifikasi 320. Yang penting bukanlah hasil yang baik muncul secara kebetulan, tetapi merancang proses yang tidak mengadopsi hasil yang keluar dari kerangka.

Menyelesaikan pengalaman di dalam permainan

Yang disentuh oleh pemain hanyalah percakapan dalam game, pilihan kata, dan pertemuan di semak-semak. Tidak perlu membuka layar lain untuk generasi. Sementara itu, proses dengan beban komputasi besar ditangani oleh proses Python di PC, yang berinteraksi dengan game melalui berkas. Dengan skrip Lua di mGBA yang menjembatani keduanya, sensasi memainkan game yang sudah ada dan pemrosesan AI eksternal dipisahkan.

  1. Membuat spesifikasi. Model bahasa lokal mengubah enam kata menjadi data ras yang telah diverifikasi.
  2. Membentuk sosok. Model gambar menggambar ilustrasi referensi, dan dari situ menghasilkan tampilan depan, belakang, dan ikon yang dipegang dengan konsisten.
  3. Mengonversi ke data untuk permainan. Mengurangi warna gambar menjadi 15 warna, lalu mengonversi dan mengompresnya menjadi sprite dan palet yang dapat digunakan oleh GBA.
  4. Menerapkannya ke permainan yang sedang berjalan. Menulis data ke wilayah yang telah dipesan sebelumnya, dan menghadirkan jenis baru tanpa me-restart game.

Karena data yang sama ditulis juga ke disk, ras yang tercermin akan tetap ada bahkan setelah game dimuat ulang. Penciptaannya hanya sekali dan tidak dapat dibatalkan. Jika melarikan diri atau kalah saat bertemu, ras tersebut akan tetap ada di dunia, tetapi jika dikalahkan, ras itu tidak akan muncul lagi. Ketidakbalikan ini juga dirancang untuk memberi pengalaman makna 'hanya satu di dunia'.

Hal-hal yang dapat dikonfirmasi dengan prototipe

Ini adalah verifikasi kelayakan yang dibuat sendiri, bukan permainan yang selesai atau eksperimen pengguna. Titik pencapaian dan ruang yang belum diverifikasi dibagi seperti berikut.

Hasil mencoba sendiri — hanya menjadi satu-satunya tidak menimbulkan keterikatan

Sejauh saya bermain dengan prototipe sendiri, saya tidak merasakan keterikatan yang kuat terhadap Pokémon yang dihasilkan. Ini adalah kesan pribadi dari pembuat implementasinya saja, dan bukan hasil eksperimen yang dapat digeneralisasikan. Namun, hal ini menjadi petunjuk untuk memikirkan apa yang harus diubah selanjutnya untuk dibandingkan.

Ada dua kondisi yang tampaknya memengaruhi keterikatan.

Yang menjadi kontras adalah 'Hanagitsune', yang dibuat melalui interaksi dengan beberapa AI generatif selain generasi otomatis untuk game, serta pengerjaan manual. Saya merasa memiliki kedekatan dengan karakter ini karena membandingkan kandidat, memperbaiki, dan mengembangkannya hingga bentuk yang memuaskan. Saya berpikir ini karena ada baik kualitas yang cukup maupun keterlibatan melalui percobaan dan kesalahan.

Tampilan depan Hanagitsune. Seekor rubah berwarna hijau muda, dengan ekor yang tampak seperti sulur yang meneteskan bunga. Punggung rubah hanagitsune. Seluruh panjang ekor yang mekar terlihat.
Hanagitsune — pemelihara hutan yang memiliki ekor berbunga. Di jejak larinya, tumbuh tunas bunga dan tanaman, dan bahkan tanah yang gersang akan dipenuhi kehidupan baru. Sosoknya dianggap sebagai simbol hutan yang berkembang menuju masa depan.
Layar informasi Pokémon Hanagi2ne. Menampilkan tipe rumput, kemampuan Chlorophyll, sifat Berani, serta pertemuan di Hutan Touka pada level 7. Sprite adalah rubah hijau pucat dengan ekor berbunga. Layar pertarungan. Hanagi2ne dilihat dari belakang sedang menghadapi Poochyena liar. Tertulis 'Hanagi2ne menyerap!'
Kami mengimplementasikan 'Hanagitsune', yang didesain melalui dialog dan kerja tangan, sebagai ras dalam game.

Prototipe ini tidak menjawab pertanyaan, 'Apakah konten yang dihasilkan menimbulkan keterikatan?'. Pertanyaan yang ambigu itu dibagi menjadi dua elemen yang dapat sengaja diubah, yaitu kualitas hasil dan kedalaman keterlibatan. Dalam verifikasi selanjutnya, perlu menyertakan pemilihan, perbandingan, dan perbaikan dalam proses pembuatan, menyamakan kualitas hasil hingga tingkat tertentu, dan melakukan perbandingan oleh beberapa peserta.

Implementasi

Pipeline generasi, kerangka kerja pembatasan dan verifikasi, konversi data untuk GBA, serta perubahan pada sisi game telah dipublikasikan di Repositori GitHub.

pret/pokeemerald Berdasarkan dekompilasi, ini dibuat sebagai penelitian pribadi. Tidak ada ROM, patch ROM, atau aset dalam game yang dibagikan. Semua sprite yang ditampilkan di sini adalah asli dan dibuat oleh AI. Pokémon adalah merek dagang Nintendo, Creatures Inc., dan Game Freak Inc., dan proyek ini tidak memiliki hubungan dengan perusahaan-perusahaan tersebut serta tidak mendapat persetujuan dari mereka.