Apakah industri game menggunakan pengujian otomatis untuk bagian visual dari game / render? Bagaimana?

10

Beberapa bagian gim mudah diuji secara otomatis (logika, matematika, penanganan input); tetapi ada juga banyak yang murni visual dan tidak mudah diuji.

Saya akan terkejut jika industri game meninggalkan semua ini ke pengujian manual; ada cukup uang di dalamnya yang saya kira upaya telah dilakukan untuk dapat menguji setidaknya beberapa aspek visual permainan.

Apakah ini benar? Jika demikian, apa saja cara yang memungkinkan agar rendering game dapat diuji? Mengambil keluaran dan membandingkan gambar (dapatkah ini diandalkan?)? Menyadap data dari kartu grafis pada level rendah? Menangkap informasi titik (dll.) Dalam perjalanan ke kartu grafis? Sepertinya ada banyak kemungkinan; tapi saya tidak dapat menemukan informasi tentang ini :(

Catatan: Pertanyaan ini ditandai sebagai tiruan dari pertanyaan ini , tapi saya tidak bertanya tentang teknologi / kerangka / alat khusus tentang cara melakukan ini, tetapi lebih luas ide-ide seputar praktik ini, dan apa yang dilakukan industri game sebenarnya (jika mereka lakukan sama sekali).

Danny Tuppeny
sumber
Saya akan mengatakan bahwa mungkin mereka hanya menggunakan perpustakaan grafis yang sudah teruji (baik pihak ketiga atau dikembangkan di rumah). Ketika mereka mendesain level game, mereka tidak memeriksa bahwa setiap objek tepat pada koordinat X, Y, Z, atau jika perspektifnya benar, tetapi hal-hal sederhana seperti memastikan bahwa objek ada di sana dan tidak terhalang oleh dinding, dll. Dan jika perpustakaan grafis di rumah dikembangkan, tes otomatis dan lebih mendasar.
SJuan76
@ SJuan76 Saya kira jika Anda membangun di atas mesin, pertanyaannya berlaku untuk pengujian mesin
Danny Tuppeny
Bukankah pertanyaan ini agak lebih luas cakupannya daripada yang ditandai sebagai duplikat? OP tidak menyebutkan C ++ atau OpenGL. Industri game lebih besar dari itu.
toniedzwiedz
Mungkin lebih mudah untuk membuktikan secara formal bahwa kode tersebut benar mengingat API grafis bebas bug daripada menguji apakah perangkat keras melakukan tugasnya. Karena driver AMD dan NVidia adalah hak milik, saya membayangkan protokol apa pun yang terlibat dalam berkomunikasi dengan kartu grafis adalah 1) hak milik, 2) dapat berubah, dan 3) bervariasi dari kartu ke kartu. Selain itu, bahkan jika data yang dikirim ke kartu grafis sudah benar, bagaimana Anda tahu kartu grafis tidak memiliki cacat perangkat keras?
Doval
2
Saya mencoba membuka kembali ini karena target dupe lebih khusus tentang strategi dalam pengujian otomatis grafis OpenGL. Ini bukan spesialisasi saya tetapi saya percaya umpan balik dari orang lain yang mengenal industri game dengan sangat baik sehingga saya ingin memberikannya kesempatan lain. Untuk referensi ke pertanyaan serupa lihat di sini: programmers.stackexchange.com/questions/150688/…
maple_shaft

Jawaban:

1

Perusahaan mana pun akan melakukannya dengan cara yang berbeda, bahkan permainan yang berbeda akan diuji secara berbeda.

  • Mungkin kurangnya informasi tentang grafik adalah karena rendering memang cukup "berulang-ulang" (saya tidak bisa memikirkan kata yang lebih baik, maaf) dan dalam adegan kompleks yang khas akan ada kombinasi primitif yang cukup sehingga kebanyakan orang biasanya dapat dengan mudah melihat sebagian besar gangguan ( dengan pengecualian shader yang kurang digunakan, tetapi level / demo khusus stress-shader dapat digunakan). Ingatlah bahwa manusia adalah pemburu selama ribuan tahun :) jadi mungkin kita direkayasa untuk melihat gangguan.
  • Juga kebebasan bergerak hadir di sebagian besar gim dan pengacakan elemen lain pada gim tipikal yang menjadikannya terasa lebih "realistis" biasanya merupakan mimpi buruk untuk menerapkan tes otomatis murni: bahkan tester manusia akan menemukan lebih cepat dan lebih banyak lagi kesalahan daripada tes otomatis. Anda dapat membuat kode logika untuk mencatat waktu, statistik dan posisi / sudut / variabel lain setiap kali tester diputar ... sehingga bahkan pada tes tanpa-otomatis Anda akan mendapat umpan balik seperti-tes-otomatis. Biasanya bermanfaat untuk dapat membuat pemutaran ulang setiap sesi rekaman penguji beta (dan biasanya juga merupakan fitur yang baik untuk pertandingan final).
  • Tentang rendering stats, misalnya Anda bisa mendapatkan: statistik draw-call count untuk masing-masing shader (karena Anda akan melakukan panggilan, cukup untuk mempertahankan beberapa counter), jumlah unggahan (sama, Anda akan mengontrol kapan buffer gpu diperbarui), timing (tidak hanya fps, juga penyimpangan antara setiap panggilan), dll. Jika perlu (tapi saya percaya itu tidak direkomendasikan kecuali ketika mencari kesalahan tertentu) Anda bisa mendapatkan statistik dari kartu grafis itu sendiri (misalnya Anda bisa mendapatkan tingkat pengisian dan lainnya dengan menggunakan kueri oklusi).
  • Akhirnya, alasan lain untuk menggunakan penguji beta adalah bahwa kartu grafis yang berbeda mungkin memiliki perilaku yang berbeda ... Anda mungkin perlu memiliki kebun mesin pengujian o_O. Penguji beta manusia tercinta akan melunakkan semua kekacauan itu.

Semoga ini bisa membantu!

Penafian: Saya bukan pengkhianat, saya seorang pengembang XDDD.

pengguna1039663
sumber
Saya sepenuhnya setuju dengan manusia yang dirancang untuk melihat pola, gangguan, ... Kita memang makhluk visual.
Trilarion