Bagaimana cara melaporkan bug yang ditemukan pada level yang dihasilkan secara prosedural?

8

Ada banyak topik tentang cara kerja pembuatan prosedural, tetapi saya tidak dapat menemukan info tentang cara menguji dan - yang lebih penting - bagaimana melaporkan bug yang mungkin terjadi pada level yang dihasilkan secara prosedural. Apa cara terbaik untuk menggambarkan bug, misalnya terkait dengan desain level, pada peta yang akan terlihat berbeda setiap kali Anda memainkan game baru? Informasi apa yang harus dimasukkan dalam laporan bug sehingga mereproduksi itu akan lebih mudah bagi desainer tingkat, artis tingkat, dll. Dan kemudian juga selama proses regresi?

EDIT: Perlu disebutkan bahwa permainan, saya sedang bersiap untuk menguji, sedang dalam tahap awal pengembangan dan terus berubah seiring dengan sistem yang bertanggung jawab untuk menghasilkan level. Tujuan dari penelitian ini adalah untuk mempelajari cara mendeskripsikan bug (info apa yang harus dimasukkan dalam laporan) sehingga regresi dalam lingkungan yang berubah akan memakan waktu lebih sedikit dan seefektif mungkin.

Boiler
sumber
2
Siapa audiens target Anda? Maksud saya, siapa yang akan mengisi laporan bug ini?
Vaillancourt
1
Salah satu solusi yang mungkin adalah menambahkan fungsionalitas "hemat", atau setidaknya beberapa mekanisme hashing. Dengan cara itu tester dapat memasukkan seluruh level ke dalam laporannya atau setidaknya menyertakan hash tekstual yang nantinya dapat dibalik ke sekelompok level yang mirip. Opsi pertama adalah langsung tetapi makan lalu lintas / ruang. Opsi kedua membutuhkan beberapa brainstorming serius untuk diterapkan. Ps saya mungkin salah, tapi sejauh yang saya ingat Diablo 2 menggunakan hashing. Jadi level (dan level lain yang terlihat kurang lebih seperti itu) dijelaskan oleh hash.
Sergey.quixoticaxis.Ivanov
Jenis permainan apa? Teknik IE yang digunakan dalam game berbasis giliran mungkin tidak cocok untuk game real-time & sebaliknya.
Pikalek
@ Alexandre Vaillancourt: Penguji akan melaporkan bug menggunakan alat otomatis yang akan mengumpulkan beberapa informasi sederhana seperti jumlah benda fisik, jumlah AI, dll. Saya ingin tahu apa lagi yang bisa dimasukkan tidak hanya dalam laporan otomatis tersebut tetapi juga dalam konvensional laporan yang ditulis oleh penguji. @Pikalek: Ini adalah game aksi FPP dengan dunia terbuka dan gameplay waktu nyata.
BoYLER

Jawaban:

18

Ini juga bisa sangat berguna ketika algoritma pembuatan peta Anda bersifat deterministik dan dapat diulang berdasarkan nilai seed awal. Jadi saat Anda memasukkan nilai seed yang sama, Anda mendapatkan peta yang sama. Ini mungkin lebih mudah diterapkan daripada yang Anda pikirkan. Sebagian besar API pembangkitan angka acak dapat diinisialisasi dengan nilai seed dan kemudian selalu menghasilkan urutan nomor acak yang sama untuk seed yang sama. Jika Anda menggunakan salah satu dari beberapa platform di mana ini tidak terjadi (seperti JavaScript berbasis browser), Anda dapat mengimplementasikan generator nomor acak Anda sendiri. Ada banyak algoritma di sekitarnya yang tidak terlalu sulit untuk diterapkan dan biasanya selalu membutuhkan nilai seed.

Penguji Anda kemudian dapat menyebutkan peta unggulan dalam laporan bug mereka. Sebuah laporan bug seperti "Pohon tumbuh di tengah danau" dapat memiliki instruksi reproduksi "Hasilkan peta dengan seed a4f6dd32 dan pergi ke posisi 4321500: 1269100". Setelah Anda memverifikasi ini, Anda dapat mengatur breakpoint debugger bersyarat dalam algoritma pembuatan peta Anda yang memicu pada potongan peta yang terpengaruh dan memeriksa apa yang sebenarnya terjadi.

Algoritma pembuatan peta deterministik juga memungkinkan Anda untuk menerapkan tes otomatis. Anda dapat memiliki berbagai benih uji dengan output yang diketahui dan kemudian melakukan tes otomatis Anda untuk memeriksa apakah output itu masih sama setelah Anda melakukan beberapa peningkatan kinerja dalam algoritma generasi Anda.

Philipp
sumber
Terima kasih atas gagasannya. Saya belum bisa mencoba dan menggunakannya untuk digunakan, karena gamenya tidak dalam kondisi yang dapat dimainkan / diuji. Sebenarnya ini akan membutuhkan lebih banyak waktu untuk siap untuk pengujian. Untuk saat ini saya hanya melakukan penelitian dalam hal ini.
BoYLER
Ini jawaban yang bagus. Saat ini saya sedang membuat game yang menggunakan Dungeon Architect untuk menghasilkan level secara acak berdasarkan seed. Saya telah melangkah lebih jauh dan menciptakan kelas singleton acak yang membagikan nilai acak ke SEMUA subsistem, baik DA dan milik saya. Keuntungannya adalah jika saya mengetahui nilai seed dan nilai level itu sendiri (mis. Dungeon 1-1 atau forest 3-6), saya bisa menciptakan level yang sama persis, dengan massa yang sama, di tempat yang sama dengan yang sama menjarah meja dan segalanya. Karena nilai ini dicatat, akan mudah bagi saya untuk mengurai laporan bug dan membuat ulang skenario.
Jesse Williams