Cara Memastikan Cerita Permainan Bercabang Boleh Diuji
Apabila cerita bercabang berkembang, uji keputusan dan perubahan keadaan yang menyebabkan laluan berkelakuan berbeza—bukan setiap laluan yang mungkin sebagai skrip berasingan dari awal hingga akhir. Modelkan naratif sebagai graf, tentukan syarat dan hasil pada setiap keputusan, lalu bina suite kecil yang meliputi peralihan kritikal, titik pertemuan semula dan kegagalan. Kemudian gunakan pensampelan laluan berdasarkan risiko dan ujian permainan oleh manusia untuk mengesan isu yang tidak dapat dinilai melalui semakan berstruktur. Ini memberikan pereka naratif dan pasukan QA cara yang boleh diulang untuk mencari kecacatan tanpa mendakwa liputan laluan yang menyeluruh.
Mulakan dengan graf yang merekodkan tingkah laku
Wakilkan setiap petikan atau babak yang boleh dimainkan sebagai nod dan setiap pilihan sebagai sisi berarah. Anotasikan sisi dengan syarat dan kesannya: contohnya, has_key = true membolehkan “Buka kunci pintu pagar,” yang menetapkan gate_open = true. Tandakan pengakhiran, gelung dan titik pertemuan semula secara jelas. Titik pertemuan semula ialah tempat laluan berbeza bertemu semula; tempat ini berguna untuk menyemak bahawa cerita boleh diteruskan daripada pelbagai sejarah laluan tanpa membawa keadaan yang tidak diingini.
Graf itu patut mencerminkan perkara yang benar-benar dinilai oleh permainan, bukan sekadar struktur prosa. Rekodkan pemboleh ubah yang dibaca oleh sesuatu pilihan, yang ditulis olehnya, dan yang menjadi kebergantungan nod kemudian. Sertakan nilai lalai, peraturan tetapan semula dan sebarang kesan sekali sahaja. Jika bendera ditetapkan dalam satu cabang dan tidak pernah dipadamkan, hal itu mungkin disengajakan; mendokumentasikannya menjadikan kesannya jelas untuk semakan dan ujian.
Struktur ini juga membantu mencari titik keputusan yang mudah terlepas dalam skrip yang panjang. Makalah tahun 2024 oleh Alexey Tikhonov mengkaji pengesanan titik keputusan watak dalam naratif bercabang dan mengemukakan set data berdasarkan graf permainan Choose Your Own Adventure. Tugasnya berkaitan pengenalpastian titik keputusan naratif, bukannya pengesahan kaedah QA; makalah itu boleh membantu pasukan menyenaraikan pilihan, tetapi tidak membuktikan bahawa pendekatan ujian di sini berkesan. Tikhonov, “Branching Narratives: Character Decision Points Detection”
Uji peralihan keadaan, bukan sekadar kunjungan ke babak
Ujian yang mengesahkan nod telah dipaparkan boleh terlepas pilihan yang rosak. Bagi setiap pilihan penting, semak tiga perkara: sama ada pilihan itu tersedia apabila syarat yang ditetapkan dipenuhi, sama ada memilihnya menerapkan perubahan keadaan yang dijangka, dan sama ada nod seterusnya serta hasil yang dipaparkan sepadan dengan keadaan tersebut. Semakan ini menganggap cerita sebagai sistem peralihan keadaan: dengan keadaan awal dan tindakan tertentu, sahkan keadaan dan destinasi yang terhasil.
Contohnya, ujian untuk memilih “Tunjukkan peta” mungkin mengesahkan bahawa peta dipaparkan, trust kekal tidak berubah dan laluan menuju ke babak balai cerap bersama. Ujian berpasangan bermula dengan has_map = false dan mengesahkan bahawa pilihan ini tidak tersedia atau mengikuti pilihan alternatif yang ditetapkan. Tingkah laku tepat yang dijangka bergantung pada spesifikasi naratif; perkara penting ialah menyatakannya dengan jelas dan bukannya menyimpulkan ketepatan daripada tajuk petikan.
Di titik pertemuan semula, uji lebih daripada sekadar ketibaan. Bandingkan keadaan yang sepatutnya dikekalkan, diubah atau dibuang oleh setiap laluan. Pengawal yang telah dipujuk dalam satu cabang mungkin kekal sebagai sekutu selepas pertemuan semula, manakala penyamaran sementara sepatutnya tamat. Jadikan peraturan ini sebahagian daripada keadaan pascapertemuan semula yang dijangka. Jika laluan sepatutnya bercantum sepenuhnya, sahkan keadaan bersama; jika perbezaan bermakna patut dikekalkan, sahkan juga perbezaan tersebut.
Gunakan contoh rekaan untuk menjelaskan liputan
Katakan sebuah kisah misteri pendek mempunyai keputusan di arkib. Pemain boleh meminta bantuan, menyelinap masuk atau menggunakan kunci pinjaman; setiap laluan menuju ke koridor yang sama, kemudian pilihan seterusnya menentukan sama ada pemain mengambil surat bermeterai. Matriks rekaan berikut menjejak set ringkas kewajipan ujian. “Diliputi” bermaksud ujian dirancang untuk kewajipan khusus itu, bukannya seluruh laluan atau setiap gabungan telah diuji.
A: trust = high; minta bantuan daripada penjaga arkib. Pilihan bantuan dipaparkan; trust kekal tinggi; laluan menuju ke koridor. Ketersediaan pilihan dan peralihan
B: trust = low; minta bantuan. Pilihan bantuan disembunyikan atau ditolak, seperti yang ditetapkan. Syarat negatif
C: has_key = true; buka kunci pintu sisi. Pintu terbuka; laluan menuju ke koridor; kunci digunakan hanya jika ditetapkan. Kesan keadaan dan pertemuan semula
D: has_key = false; cuba buka pintu sisi. Pintu tidak dapat dibuka; tiada bendera kejayaan ditetapkan. Pengesahan negatif
E: Dari koridor, ambil surat bermeterai. has_letter = true; babak bukti kemudian memaparkan baris khusus untuk surat itu. Hasil seterusnya
F: Dari koridor, tinggalkan surat itu. has_letter = false; baris khusus untuk surat itu tidak dipaparkan. Perbandingan hasil dan pengesahan negatif
Ini alat bantu membuat keputusan, bukannya peratusan liputan atau set minimum yang sesuai untuk semua keadaan. Alat ini menjadikan perkara yang tertinggal jelas: dalam contoh ini, syarat kepercayaan rendah dan hasil “surat tiada” wajar disemak secara berasingan kerana kunjungan laluan lancar tidak akan mengesahkannya. Setiap baris patut merujuk kepada nod atau peralihan berkaitan dalam graf supaya syarat yang berubah dapat dijejak kepada ujian yang terjejas.
Utamakan liputan cabang apabila gabungan semakin banyak
Jika cerita mempunyai banyak bendera bebas, bilangan gabungan yang mungkin boleh meningkat dengan cepat. Jangan bertindak balas dengan menyenaraikan setiap laluan teori sebagai permainan penuh yang wajib. Kenal pasti dahulu sisi berisiko tinggi: pilihan yang menentukan pengakhiran, menggunakan item, menetapkan fakta hubungan yang berterusan atau menggabungkan sejarah laluan. Uji peralihan tersebut dan hasil penting selepasnya secara langsung.
Kemudian, sampelkan gabungan secara terancang. Sertakan syarat sempadan (nilai minimum yang mengubah pilihan), kedua-dua keadaan bagi setiap syarat kritikal, gabungan bendera yang mewakili dan mungkin saling berinteraksi, serta laluan yang mencapai titik pertemuan semula melalui sejarah yang berbeza. Utamakan perubahan terkini dan laluan dengan prasyarat yang rumit. Apabila dua pemboleh ubah mungkin berinteraksi, tambah ujian untuk pasangan itu dan bukannya menganggap semakan berasingan bagi setiap pemboleh ubah membuktikan gabungannya berfungsi.
Rekodkan unit liputan dan batasannya. Pasukan boleh menjejak sama ada setiap sisi pilihan kritikal telah diuji, sama ada setiap syarat telah disemak dalam keadaan benar dan palsu jika berkaitan, dan sama ada setiap pencetus pengakhiran telah dicapai oleh sekurang-kurangnya satu ujian yang dirancang. Semua itu ialah laporan berguna tentang perkara yang disampel; tiada satu pun membuktikan bahawa setiap sejarah, gabungan keadaan atau isu pemilihan kata yang mungkin telah diterokai.
Penyelidikan tentang ujian permainan boleh menawarkan idea berkaitan yang skopnya terhad. Makalah arXiv tahun 2021 oleh Gordillo dan rakan-rakannya menerangkan ejen pembelajaran pengukuhan yang diberi ganjaran untuk tindakan baharu bagi meneroka liputan keadaan dalam senario 3D yang kompleks. Kajian itu berkaitan penerokaan dalam persekitaran permainan 3D, bukannya pilihan naratif bercabang atau kaedah ujian peralihan khusus yang diterangkan di sini. Kajian itu menyokong penggunaan penerokaan automatik sebagai pelengkap yang mungkin, tetapi kajian itu mahupun makalah Tikhonov tidak mengesahkan kaedah ujian naratif khusus ini. Gordillo et al., “Improving Playtesting Coverage via Curiosity Driven Reinforcement Learning Agents”
Tambahkan pengesahan negatif dan ujian permainan oleh manusia
Pengesahan positif memastikan pilihan atau hasil yang dijangka wujud. Pengesahan negatif memastikan perkara yang dilarang tidak berlaku: pilihan terkunci tidak dipaparkan, petunjuk yang telah digunakan tidak diberikan dua kali, surat yang tiada tidak mencetuskan barisnya, atau percubaan yang gagal tidak menetapkan bendera kejayaan. Semakan negatif amat berguna di sekitar nod bersama, tempat keadaan lapuk daripada laluan lain boleh terbawa ke babak semasa.
Semakan automatik boleh mengesahkan logik laluan dan perubahan keadaan yang tepat, tetapi tidak dapat menilai dengan andal sama ada sesuatu peralihan terasa lancar, sama ada sesuatu baris bercanggah dengan ingatan pemain, atau sama ada pilihan dapat difahami dalam konteksnya. Oleh itu, ujian permainan oleh manusia patut menggunakan laluan terpilih dengan tujuan tertentu: minta penguji mengikuti cabang yang kurang lazim, tiba di titik pertemuan semula dengan sejarah tertentu, atau cuba mencapai pengakhiran tanpa memiliki kunci penting. Perhatikan keadaan yang terhasil dan tafsiran pemain terhadapnya.
Pastikan nota ujian permainan dikaitkan dengan pengenal pasti nod dan pilihan, serta keadaan awal dan langkah yang diambil. Ini menjadikan isu yang dilaporkan boleh dihasilkan semula dan membantu membezakan masalah penulisan daripada kecacatan logik. Selepas pembaikan, jalankan semula ujian peralihan yang terjejas dan sekurang-kurangnya satu laluan wakil melalui titik pertemuan semula atau hasil yang diubah.
Kitaran ujian praktikal untuk cerita yang berubah
Bagi setiap kemas kini cerita, eksport atau semak graf, kenal pasti nod, syarat, kesan dan titik pertemuan semula yang berubah, kemudian kemas kini matriks liputan. Jalankan dahulu ujian peralihan keadaan yang disasarkan; susuli dengan sampel laluan terpilih dan ujian permainan oleh manusia untuk bahagian yang berimpak tinggi atau baru berubah. Apabila kegagalan berlaku, rekodkan keadaan awal dan turutan pilihan supaya pasukan boleh menghasilkannya semula, membaiki peraturan atau petikan yang berkaitan, dan mengekalkan kes itu sebagai semakan regresi.
Matlamatnya ialah catatan yang boleh diuji tentang perkara yang telah disemak dan sebabnya. Graf menjadikan struktur mudah diperiksa, ujian peralihan menjelaskan logik, pensampelan cabang mengarahkan usaha kepada variasi yang bermakna, pengesahan negatif mengesan keadaan yang terbawa, dan ujian permainan oleh manusia menilai tafsiran. Bersama-sama, semuanya memberikan liputan yang berguna apabila laluan bertambah, sambil menetapkan batas yang jelas bagi perkara yang belum diuji.
