Blog Metlivi

Cara Menjaga Alur Cerita Game Bercabang Tetap Dapat Diuji

Ketika cerita bercabang semakin meluas, uji keputusan dan perubahan status yang membuat jalur berperilaku berbeda—bukan setiap kemungkinan rute sebagai skrip menyeluruh yang terpisah. Modelkan narasi sebagai sebuah graf, tentukan kondisi dan hasil pada setiap keputusan, lalu bangun rangkaian pengujian ringkas yang mencakup transisi penting, titik temu kembali, dan kegagalan. Kemudian gunakan pengambilan sampel rute berbasis risiko dan playtest manusia untuk menangkap masalah yang tidak dapat dinilai oleh pemeriksaan terstruktur. Cara ini memberikan desainer naratif dan tim QA metode yang dapat diulang untuk menemukan bug tanpa perlu mengklaim cakupan jalur yang menyeluruh.

27 September 20267 menit membacaMembaca, seni, dan budayaOleh Metlivi Editorial Team
Bagian 1

Mulai dengan graf yang merekam perilaku

Representasikan setiap bagian atau adegan yang dapat dimainkan sebagai sebuah simpul (node) dan setiap pilihan sebagai tepi terarah (directed edge). Berikan anotasi pada tepi dengan kondisi dan dampaknya: misalnya, `has_key = true` mengaktifkan "Buka gerbang", yang menetapkan `gate_open = true`. Tandai akhir cerita, perulangan, dan titik temu kembali secara eksplisit. Titik temu kembali adalah tempat bertemunya kembali rute-rute yang berbeda; ini adalah titik yang berguna untuk memeriksa apakah cerita dapat berlanjut dari berbagai riwayat tanpa membawa status yang tidak diinginkan.

Graf tersebut harus mencerminkan apa yang dievaluasi secara nyata oleh game, bukan hanya struktur prosanya. Catat variabel mana yang dibaca oleh suatu pilihan, variabel mana yang ditulisnya, dan simpul lanjutan mana yang bergantung padanya. Cantumkan nilai bawaan (defaults), aturan pengaturan ulang, dan efek satu kali apa pun. Jika suatu penanda (flag) diaktifkan di satu cabang dan tidak pernah dihapus, hal itu mungkin disengaja; mendokumentasikannya membuat konsekuensi tersebut terlihat jelas untuk ditinjau dan diuji.

Struktur ini juga membantu menemukan titik keputusan yang mudah terlewat dalam skrip yang panjang. Makalah tahun 2024 oleh Alexey Tikhonov mempelajari deteksi titik keputusan karakter dalam narasi bercabang dan mengusulkan kumpulan data berdasarkan graf game Choose Your Own Adventure. Tugas penelitiannya berfokus pada pengidentifikasian titik keputusan naratif, bukan memvalidasi metode QA; ini dapat memberi wawasan tentang cara tim mendata pilihan, namun tidak membuktikan bahwa pendekatan pengujian di sini efektif. [Tikhonov, “Branching Narratives: Character Decision Points Detection”](https://aclanthology.org/2024.games-1.8/)

Bagian 2

Uji transisi status, bukan hanya kunjungan adegan

Pengujian yang hanya mengonfirmasi kemunculan sebuah simpul dapat melewatkan pilihan yang rusak. Untuk setiap pilihan penting, periksa tiga hal: apakah pilihan tersedia di bawah kondisi yang dimaksudkan, apakah memilihnya menerapkan perubahan status yang diharapkan, serta apakah simpul berikutnya dan hasil yang terlihat sesuai dengan status tersebut. Pemeriksaan ini memperlakukan cerita sebagai sistem transisi status: dengan status awal dan tindakan tertentu, verifikasi status hasil dan tujuannya.

Sebagai contoh, pengujian untuk memilih "Tunjukkan peta" dapat memastikan bahwa peta ditampilkan, nilai `trust` tetap tidak berubah, dan rute mencapai adegan observatorium bersama. Pengujian pasangannya dimulai dengan `has_map = false` dan memastikan bahwa pilihan ini tidak tersedia atau mengikuti alternatif yang telah ditentukan. Perilaku pasti yang diharapkan bergantung pada spesifikasi naratif; intinya adalah memastikannya secara eksplisit, bukan sekadar menyimpulkan kebenarannya dari judul bagian cerita.

Pada titik temu kembali, uji lebih dari sekadar kedatangan di titik tersebut. Bandingkan status yang harus dipertahankan, diubah, atau dibuang oleh masing-masing rute. Seorang penjaga yang berhasil dibujuk di satu cabang mungkin tetap menjadi sekutu setelah reuni, sementara penyamaran sementara harus kedaluwarsa. Jadikan aturan-aturan tersebut sebagai bagian dari status pasca-temu kembali yang diharapkan. Jika rute memang dimaksudkan untuk menyatu sepenuhnya, pastikan status bersama tersebut; jika rute harus mempertahankan perbedaan yang signifikan, pastikan perbedaan tersebut juga teruji.

Bagian 3

Gunakan contoh fiktif untuk memperjelas cakupan

Bayangkan sebuah misteri pendek memiliki keputusan di ruang arsip. Pemain dapat meminta bantuan, menyelinap masuk, atau menggunakan kunci pinjaman; setiap rute menuju koridor yang sama, kemudian pilihan berikutnya menentukan apakah pemain mengambil surat bersegel. Matriks fiktif berikut melacak sekumpulan kewajiban pengujian yang ringkas. "Tercakup" berarti pengujian telah direncanakan untuk kewajiban tertentu tersebut, bukan berarti seluruh rute atau setiap kombinasi telah diuji.

**A:** `trust = high`; minta bantuan arsiparis. Opsi bantuan muncul; `trust` tetap tinggi; rute mencapai koridor. Ketersediaan pilihan dan transisi

**B:** `trust = low`; minta bantuan. Opsi bantuan disembunyikan atau ditolak, sesuai spesifikasi. Kondisi negatif

**C:** `has_key = true`; buka pintu samping. Pintu terbuka; rute mencapai koridor; kunci digunakan hanya jika ditentukan. Efek status dan titik temu kembali

**D:** `has_key = false`; coba buka pintu samping. Pintu tidak dapat dibuka; tidak ada penanda keberhasilan yang aktif. Asersi negatif

**E:** Dari koridor, ambil surat bersegel. `has_letter = true`; adegan bukti selanjutnya menampilkan dialog khusus surat tersebut. Hasil hilir

**F:** Dari koridor, tinggalkan surat. `has_letter = false`; dialog khusus surat tidak muncul. Kontras hasil dan asersi negatif

Ini adalah alat bantu pengambilan keputusan, bukan persentase cakupan atau rangkaian pengujian minimum yang universal. Hal ini membuat hal-hal yang terlewatkan menjadi mudah dibaca: di sini, gerbang dengan trust rendah dan hasil "surat tidak ada" memerlukan pemeriksaannya masing-masing karena penelusuran alur utama yang lancar (happy path) tidak akan memverifikasinya. Setiap baris harus merujuk ke simpul atau transisi yang relevan dalam graf sehingga perubahan kondisi dapat dilacak ke pengujian yang terdampak.

Bagian 4

Prioritaskan cakupan cabang saat kombinasi bertambah

Jika sebuah cerita memiliki banyak penanda independen, jumlah kombinasi yang mungkin terjadi dapat meningkat dengan cepat. Jangan menyikapinya dengan mendaftarkan setiap rute teoritis sebagai permainan penuh yang wajib diuji. Pertama, identifikasi tepi berisiko tinggi: pilihan yang membatasi akhir cerita, menghabiskan item, menetapkan fakta hubungan yang persisten, atau menggabungkan riwayat. Uji transisi tersebut dan hasil penting di hilirnya secara langsung.

Kemudian ambil sampel kombinasi secara terencana. Sertakan kondisi batas (nilai minimum yang mengubah suatu pilihan), kedua sisi dari setiap kondisi kritis, kombinasi representatif dari penanda yang dapat berinteraksi, dan rute yang mencapai titik temu kembali melalui riwayat yang berbeda. Prioritaskan perubahan terbaru dan jalur dengan prasyarat yang rumit. Jika dua variabel berpotensi saling berinteraksi, tambahkan pengujian untuk pasangan tersebut alih-alih mengasumsikan bahwa pengujian variabel tunggal yang terpisah sudah membuktikan kombinasinya berfungsi.

Catat unit cakupan beserta batasannya. Tim dapat melacak apakah setiap tepi pilihan kritis telah dijalankan, apakah setiap kondisi telah diperiksa bernilai benar dan salah jika relevan, dan apakah setiap pemicu akhir cerita telah dicapai oleh setidaknya satu pengujian yang dirancang. Itu semua adalah laporan yang berguna tentang apa yang telah dijadikan sampel; tidak ada yang membuktikan bahwa setiap kemungkinan riwayat, kombinasi status, atau masalah pilihan kata telah dieksplorasi secara menyeluruh.

Penelitian tentang playtesting game dapat menawarkan gagasan terkait namun terbatas. Makalah arXiv tahun 2021 oleh Gordillo dan rekan-rekan menjelaskan agen reinforcement-learning yang diberi penghargaan atas tindakan baru guna mengeksplorasi cakupan status dalam skenario 3D yang kompleks. Penelitian tersebut berkaitan dengan eksplorasi dalam lingkungan game 3D, bukan pilihan narasi bercabang atau metode pengujian transisi spesifik yang dijelaskan di sini. Penelitian ini mendukung gagasan bahwa eksplorasi otomatis dapat menjadi pelengkap, namun baik studi tersebut maupun makalah Tikhonov tidak memvalidasi metode pengujian naratif yang tepat ini. [Gordillo et al., “Improving Playtesting Coverage via Curiosity Driven Reinforcement Learning Agents”](https://arxiv.org/abs/2103.13798)

Bagian 5

Tambahkan asersi negatif dan playtest manusia

Asersi positif mengonfirmasi bahwa pilihan atau hasil yang diharapkan memang ada. Asersi negatif mengonfirmasi bahwa sesuatu yang dilarang tidak terjadi: opsi yang terkunci tidak muncul, petunjuk yang sudah digunakan tidak diberikan dua kali, surat yang tidak ada tidak memicu dialognya, atau upaya yang gagal tidak mengaktifkan penanda keberhasilan. Pemeriksaan negatif sangat membantu di sekitar simpul bersama, di mana status usang dari rute lain dapat bocor ke adegan saat ini.

Pemeriksaan otomatis dapat memverifikasi logika rute dan perubahan status yang tepat, namun tidak dapat menilai secara andal apakah suatu transisi terasa koheren, apakah suatu dialog bertentangan dengan apa yang diingat pemain, atau apakah suatu pilihan dapat dipahami dalam konteksnya. Oleh karena itu, playtest manusia harus menggunakan rute terpilih dengan tujuan yang jelas: minta penguji mengikuti cabang yang kurang umum, tiba di titik temu kembali dengan riwayat tertentu, atau mencoba mencapai akhir cerita tanpa membawa kunci. Amati status yang dihasilkan dan interpretasi pemain terhadapnya.

Pastikan catatan playtest terhubung dengan pengenal simpul dan pilihan, serta status awal dan langkah yang diambil. Hal ini membuat masalah yang dilaporkan dapat direproduksi dan membantu membedakan antara masalah penulisan dengan kecacatan logika. Setelah perbaikan, jalankan kembali pengujian transisi yang terdampak dan setidaknya satu rute representatif melalui titik temu kembali atau hasil yang diubah.

Bagian 6

Siklus pengujian praktis untuk cerita yang terus berubah

Untuk setiap pembaruan cerita, ekspor atau tinjau kembali graf, identifikasi simpul, kondisi, dampak, dan titik temu kembali yang berubah, lalu perbarui matriks cakupan. Jalankan pengujian transisi status yang terarah terlebih dahulu; lanjutkan dengan sampel rute terpilih dan playtest manusia untuk bagian-bagian yang berdampak besar atau baru diubah. Ketika kegagalan muncul, catat status awal dan urutan pilihan agar tim dapat mereproduksinya, memperbaiki aturan atau bagian cerita yang relevan, dan menyimpan kasus tersebut sebagai pemeriksaan regresi.

Tujuannya adalah pertanggungjawaban yang dapat diuji mengenai apa yang telah diperiksa dan alasannya. Graf membuat struktur dapat diinspeksi, pengujian transisi memperjelas logika, pengambilan sampel cabang mengarahkan upaya ke variasi yang bermakna, asersi negatif menangkap kebocoran status, dan playtest manusia menilai interpretasi. Bersama-sama, mereka memberikan cakupan yang bermanfaat seiring bertambahnya jalur, sembari tetap menetapkan batas yang jelas di sekitar apa yang belum diuji.

Bacaan terkait

Lanjutkan topik ini