Takafumi Horiuchi

Menghasilkan Pokémon milik sendiri: Prototipe penelitian di dalam permainan

Gambaran umum

Saya membangun prototipe penelitian yang menghasilkan spesies Pokémon baru dari enam kata yang dipilih saat bermain. Beberapa menit kemudian, Pokémon tersebut muncul di rerumputan tinggi, tempat pemain dapat menjumpai, menangkap, dan memberinya nama panggilan. Prototipe ini menghasilkan penampilan, nama, tipe, statistik dasar, jurus, serta data yang diperlukan untuk memasukkannya ke dalam permainan.

Prototipe ini menghubungkan percakapan di dalam permainan, pemilihan kata, proses pembuatan di latar belakang, pertemuan di alam liar, penangkapan, dan pemberian nama tanpa menghentikan permainan. Setiap spesies yang dihasilkan didaftarkan dalam format yang dapat digunakan oleh sistem permainan yang sudah ada.

Fokus saya adalah kerangka pembuatan, bukan modelnya sendiri: menentukan persyaratan yang mempertahankan keseimbangan permainan dan konsistensi visual, lalu membiarkan AI mengeksplorasi di dalam batas tersebut. Saya juga memainkan prototipe ini sendiri untuk menilai secara awal apakah karakter yang unik saja sudah cukup untuk menimbulkan keterikatan.

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

Permainan memungkinkan pemain memilih, membesarkan, dan memberi nama karakter hingga terasa benar-benar milik mereka sendiri. Namun, titik awalnya tetap berupa pilihan yang telah disiapkan pengembang. Jika AI generatif memungkinkan pemain membentuk karakter sejak awal, apakah keterikatan mereka akan lebih kuat?

Gambar yang dihasilkan saja tidak cukup untuk menelaah pertanyaan ini. Karakter perlu masuk ke dunia permainan, dijumpai dan ditangkap, lalu tetap dapat dimainkan sesudahnya. Saya membuat dua jalur dengan tingkat keterlibatan pemain yang berbeda: berbicara dengan lelaki tua memicu pembuatan tanpa masukan, sedangkan berbicara dengan perempuan tua memungkinkan pemain memilih enam kata. Tokoh yang diajak bicara pertama kali menentukan metode pembuatan untuk permainan tersebut.

Prototipe ini belum menghasilkan kesimpulan tentang keterikatan. Tujuannya adalah mengintegrasikan konten yang dihasilkan ke dalam pengalaman bermain biasa dan mengidentifikasi kondisi untuk perbandingan mendatang.

Alur permainan

Urutan berikut menunjukkan jalur dengan arahan pemain. Di kawasan hutan dalam permainan (Petalburg Woods), pemain berbicara dengan perempuan tua dan memilih enam kata dari kosakata Easy Chat yang sudah tersedia. Proses pembuatan berlanjut di latar belakang sementara pemain terus bermain. Suara Pokémon menandakan bahwa spesies baru sudah siap; memasuki rerumputan tinggi memicu pertemuan, dan pemain dapat menangkapnya dengan kendali yang biasa digunakan. Setiap proses menghasilkan nama, tipe, statistik dasar, jurus, sprite pertarungan tampak depan dan belakang, serta ikon tim. Video demonstrasi memperlihatkan seluruh urutannya.

Sepasang lansia berdiri di depan pemain di kawasan hutan dalam permainan (Petalburg Woods). Percakapan menanyakan jenis makhluk yang dibayangkan pemain.
Pemain memulai dengan berbicara kepada perempuan tua.
Layar Easy Chat dengan judul “Picture the creature:”, berisi kata BEAUTIFUL, ATTACK, dan FIRE.
Pemain menjelaskan idenya melalui enam kata dari kosakata Easy Chat yang sudah tersedia dalam Pokémon Emerald.
Pemain berdiri di samping rerumputan tinggi di hutan. Kotak percakapan bertuliskan “The tall grass is rustling... Something is in there!”
Proses pembuatan di PC memerlukan beberapa menit. Suara Pokémon menandakan bahwa spesies baru telah siap.
Layar pertarungan dengan kadal merah berkepala berapi menghadap pemain. Teksnya berbunyi “Wild FLAMEREL appeared!”
FLAMEREL, kadal bertipe Fire, muncul dari rerumputan yang bergoyang.
Sebuah Poké Ball dilemparkan ke FLAMEREL selama pertarungan.
Seperti spesies lain, Pokémon ini dapat ditangkap dengan Poké Ball.
Layar nama panggilan untuk FLAMEREL, dengan masukan “GGG”.
Seperti Pokémon lain, spesies baru ini dapat diberi nama panggilan.
Layar tim. Spesies yang dihasilkan memiliki ikon sendiri dan muncul bersama tiga Pokémon yang sudah ada.
Spesies baru mendapat ikon khusus dan muncul dalam tim pemain.
Layar ringkasan FLAMEREL: tipe Fire, kemampuan Blaze, sifat Naughty, dan pertemuan pada level 7 di Petalburg Woods.
Data yang dihasilkan berfungsi pada layar ringkasan yang sudah tersedia dalam permainan.

Tantangan desain: Menjaga agar karakter yang dihasilkan tetap dapat dimainkan

Menghasilkan karakter baru dan membuatnya berfungsi dalam permainan merupakan dua tantangan berbeda. Statistik yang terlalu tinggi dapat mengganggu keseimbangan tingkat kesulitan, sedangkan tipe dan jurus yang tidak cocok dapat menyulitkan pengembangan karakter. Desain yang terlalu rumit dapat menjadi sulit dikenali saat diperkecil menjadi sprite 64 × 64 piksel.

Menetapkan setiap detail secara kaku akan menghilangkan alasan untuk menghasilkan sesuatu yang berbeda setiap kali. Saya perlu membedakan unsur yang penting bagi permainan dari unsur yang boleh bervariasi.

Karena itu, saya berfokus pada perancangan ruang kemungkinan Pokémon, bukan satu karakter tertentu. Manusia menentukan tujuan, batasan, konten yang dilarang, dan metode validasi; AI mengembangkan kandidat dalam kerangka tersebut. Prototipe yang berfungsi ini menerapkan pendekatan desain berbasis batasan saya.

Pendekatan: Menentukan kondisi pembuatan

Sistem meminta model bahasa besar (LLM) mengisi bidang yang telah ditentukan, seperti nama, tipe, statistik dasar, jurus, bentuk tubuh, dan warna, alih-alih menulis prosa bebas. Validator memeriksa setiap respons sebelum diterima. Ketika respons melanggar aturan, sistem mengembalikan rincian pelanggarannya dan meminta model membuat ulang hingga persyaratan terpenuhi.

  1. Manusia menentukan batas. Persyaratan keseimbangan permainan, sprite yang mudah dikenali, dan konten yang diperbolehkan menjadi aturan eksplisit yang dapat diperiksa.
  2. AI mengembangkan kandidat. Model menggunakan kata-kata pemain untuk mengusulkan nilai pada bidang yang diizinkan.
  3. Sistem memeriksa keluaran berdasarkan aturan. Rentang angka, kombinasi jurus, dan konten yang dilarang diperiksa secara otomatis.
  4. Memberikan umpan balik hanya pada pelanggaran. Kandidat yang tidak memenuhi syarat dikembalikan dengan alasan dan dibuat ulang.

Batasan yang melindungi permainan. Saya menetapkan total statistik dasar pada rentang 280–360, dengan batas atas dan bawah untuk setiap statistik. Jurus diambil dari kode sumber permainan dan dibatasi pada jurus yang sesuai dengan tipe spesies atau jurus bertipe Normal. Jurus sekali serang KO, penghancuran diri, kerusakan tetap, dan jurus yang terlalu kuat dikecualikan. Validator juga memeriksa jumlah jurus serangan dan keberadaan jurus yang sesuai dengan tipe spesies. Tingkat penangkapan, laju pertumbuhan, dan faktor lain ditetapkan agar perbedaan hasil tetap berada dalam rentang yang layak dibandingkan.

Batasan yang menjaga kejelasan visual. Bentuk tubuh dipilih dari pilihan dengan siluet yang tetap mudah dikenali pada ukuran sprite kecil. Kosakata untuk warna dan ciri fisik juga dibatasi. Ciri menyerupai manusia, darah, senjata, dan teks dikecualikan. Instruksi pembuatan gambar selalu memuat ketentuan pencegahan kesalahan seperti “hanya satu makhluk”, “tampilkan seluruh tubuh”, dan “tanpa anggota tubuh tambahan”.

Dalam satu proses yang tercatat, model awalnya mengusulkan total statistik dasar sebesar 380. Validator mendeteksi pelanggaran dan meminta pembuatan ulang, hingga akhirnya menghasilkan spesifikasi dengan total 320. Kontribusinya adalah proses yang menolak keluaran di luar batasan yang telah ditetapkan, alih-alih mengandalkan hasil yang kebetulan berhasil.

Menyelesaikan pengalaman di dalam permainan

Pemain hanya menggunakan percakapan di dalam permainan, pemilihan kata, dan pertemuan di rerumputan; tidak ada layar pembuatan terpisah. Pekerjaan komputasi yang berat dijalankan oleh proses Python di PC, yang bertukar data dengan permainan melalui berkas. Skrip Lua dalam emulator mGBA menghubungkan keduanya, sehingga kendali permainan yang akrab tetap terjaga sementara pemrosesan AI berlangsung di luar permainan.

  1. Menghasilkan spesifikasi. Model bahasa yang dijalankan secara lokal mengubah enam kata menjadi data spesies, yang divalidasi sebelum digunakan.
  2. Menghasilkan visual. Model gambar membuat ilustrasi acuan, lalu sprite tampak depan dan belakang serta ikon tim dengan tampilan yang konsisten.
  3. Mengonversi menjadi data permainan. Warna gambar dikurangi menjadi 15, lalu gambar dikonversi dan dikompresi menjadi sprite serta palet yang kompatibel dengan Game Boy Advance (GBA).
  4. Memasukkan ke permainan yang sedang berjalan. Data ditulis ke area yang telah dicadangkan, sehingga spesies baru hadir tanpa memulai ulang permainan.

Data yang sama juga ditulis ke disk, sehingga spesies yang dihasilkan tetap tersimpan ketika permainan dimuat ulang. Pembuatan hanya terjadi sekali dan tidak dapat dibatalkan. Jika pemain melarikan diri atau kalah dalam pertemuan, Pokémon tetap berada di dunia permainan. Jika pemain mengalahkannya, Pokémon itu tidak muncul lagi. Sifat yang tidak dapat dibatalkan ini menjadikan “hanya satu dalam permainan tersebut” bagian dari pengalaman.

Hal-hal yang dapat dikonfirmasi dengan prototipe

Saya membangun prototipe ini sendiri untuk menguji kelayakan teknis. Prototipe ini bukan permainan yang sudah selesai maupun studi pengguna. Berikut adalah pemisahan antara hal yang telah saya verifikasi, yang telah saya implementasikan, dan yang masih belum diuji.

Pelajaran dari pengalaman bermain saya: Keunikan saja belum membuat saya merasa terikat

Saat memainkan prototipe ini sendiri, saya tidak merasakan keterikatan yang kuat terhadap Pokémon yang dihasilkan. Ini merupakan kesan pribadi saya sebagai pengembang, bukan hasil yang dapat digeneralisasikan kepada pemain lain. Namun, pengalaman tersebut memberi petunjuk tentang faktor yang dapat diubah dalam perbandingan mendatang.

Ada dua faktor yang tampaknya layak diteliti.

Sebaliknya, saya merasa terikat dengan Hanagitsune, karakter yang saya buat di luar alur otomatis permainan melalui percakapan berulang dengan beberapa alat AI generatif dan penyempurnaan manual. Saya membandingkan kandidat, memperbaiki detail, dan melanjutkan hingga puas. Menurut saya, kualitas hasil dan keterlibatan dalam proses berulang tersebut sama-sama berkontribusi pada keterikatan itu.

Tampak depan Hanagitsune, rubah hijau pucat dengan ekor menyerupai sulur menjuntai yang dipenuhi bunga. Tampak belakang Hanagitsune, memperlihatkan seluruh panjang ekornya yang berbunga.
Hanagitsune, penjaga hutan dengan ekor berbunga. Rumput dan bunga bertunas di setiap tempat yang dilaluinya, membawa kehidupan baru bahkan ke tanah gersang. Ia dipandang sebagai simbol pertumbuhan hutan yang terus berlanjut.
Layar ringkasan Hanagi2ne: tipe Grass, kemampuan Overgrow, sifat Brave, dan pertemuan pada level 7 di Petalburg Woods. Sprite-nya berupa rubah hijau pucat dengan ekor berbunga. Layar pertarungan yang memperlihatkan Hanagi2ne dari belakang, menghadapi Poochyena liar. Teksnya berbunyi “Hanagi2ne used ABSORB!”
Hanagitsune, yang dirancang melalui dialog berulang dan penyempurnaan manual, diimplementasikan sebagai spesies dalam permainan.

Prototipe ini belum menjawab apakah konten yang dihasilkan dapat menimbulkan keterikatan. Proyek ini menguraikan pertanyaan luas tersebut menjadi dua faktor yang dapat diubah secara sengaja: kualitas keluaran dan kedalaman keterlibatan. Studi mendatang akan menambahkan kesempatan untuk memilih, membandingkan, dan memperbaiki selama proses pembuatan, menyetarakan kualitas keluaran, serta membandingkan pengalaman beberapa peserta.

Implementasi

Alur pembuatan, kerangka batasan dan validasi, konversi data GBA, serta modifikasi pada sisi permainan dipublikasikan dalam repositori GitHub.

Proyek penelitian mandiri ini dibangun berdasarkan dekompilasi pret/pokeemerald. Proyek ini tidak mendistribusikan ROM, tambalan ROM, atau aset permainan. Pokémon adalah merek dagang Nintendo, Creatures Inc., dan Game Freak Inc.; proyek ini tidak berafiliasi dengan atau didukung oleh perusahaan-perusahaan tersebut.