มีหลายวิธีในการทดสอบเกมส่วนใหญ่ใช้สองวิธีคือ: การทดสอบหน่วยและการรวม
สำหรับการทดสอบหน่วยคุณกำลังทดสอบการทำงานภายในของเกมโดยไม่ต้องเรียกใช้งานจริง คุณสามารถทำสิ่งนี้สำหรับโมดูลเฉพาะที่มีการพึ่งพาแยกออกไป (เช่นตรรกะที่คำนวณ Quest XP ที่คุณได้รับโดยพิจารณาจากปัจจัยที่กำหนด; คุณสามารถทดสอบได้มากขึ้น แต่เพื่อความเป็นเอกภาพโดยเฉพาะมันอาจจะยากขึ้นเมื่อวิธีที่สถาปัตยกรรมเกมนั้นเสร็จสิ้น (เช่นสืบทอดจาก monobehaviour) อย่างไรก็ตามการใช้รูปแบบ OOP เช่นองค์ประกอบคุณสามารถแยกบิตของตรรกะที่สามารถทดสอบในลักษณะที่กำหนดขึ้นมา (เช่นฟิสิกส์) แม้ว่าบางครั้งมันจะถูกมองว่ารุนแรงมาก ทุกอย่างขึ้นอยู่กับว่าคุณมีเวลามากแค่ไหนไม่ว่าคุณจะเริ่มต้นจากโครงการหรือไม่ประสบการณ์ที่คุณมี ฯลฯ โดยทั่วไปแล้ว ไม่เห็นการทดสอบหน่วยในเกมมากเมื่อเทียบกับโครงการซอฟต์แวร์อื่นที่ไม่ใช่เกม การทดสอบประเภทนี้ค่อนข้างง่ายที่จะทำให้เป็นอัตโนมัติเมื่อคุณแสดงพฤติกรรมที่เย้ยหยันที่คุณจำลอง
สำหรับการทดสอบบูรณาการคุณโต้ตอบกับเกม "ทั้ง" ในเวลาที่กำหนดเมื่อทุกส่วนทำงาน ขึ้นอยู่กับความลึกของสิ่งที่คุณต้องการทดสอบฉันเห็นว่ามันอาจเป็นไปไม่ได้เลย
หนึ่งความคิดที่จะให้มีการทดสอบ "บูรณาการ" สร้างซึ่งบันทึกทุก (ส่วนใหญ่) การกระทำมันไม่ (เช่นพล่านมอนสเตอร์เล่นเสียงเริ่มต้นผลพล่านอนุภาค) หลังจากรันตามเวลาที่กำหนดคุณสามารถตรวจสอบบันทึกเพื่อดูว่าตรงกับรูปแบบที่กำหนดหรือไม่ (ขึ้นอยู่กับว่าเกมนั้นสุ่มขึ้นอยู่กับอินพุต) ตอนนี้ฟังดูง่าย แต่คำถามคือคุณบอกให้เกมทำสิ่งที่ต้องการได้อย่างไร ซึ่งนำฉันไปสู่ความคิดที่สอง
ความคิดอื่น ๆ ก็คือจะมีเซิร์ฟเวอร์ในเกมอีกครั้งเพื่อวัตถุประสงค์ในการทดสอบซึ่งสามารถประมวลผลคำขอ (เช่นผ่าน REST API) และดำเนินการตามเอนทิตี การร้องขออาจเป็นสิ่งที่ต้องการ: เลื่อนไปทางซ้าย, กระโดด, หมุน X องศา, เปลี่ยนวิวพอร์ต, ฯลฯ ด้วยวิธีนี้คุณยังสามารถทำการ "ตรวจสอบ" ว่าเกมทำหน้าที่ได้ตามที่คาดหวังโดยตรวจสอบสถานะโดยตรงหรือตรวจสอบสถานะเสมือน บันทึกเหตุการณ์ที่เกิดขึ้น วิธีการนี้ใช้โดยเครื่องมือทดสอบ UI อื่น ๆ สำหรับโทรศัพท์มือถือ (เช่น Xamarin Test Cloud)
ในส่วนของการควบคุมหากเกมของคุณใช้ระบบสัมผัส / เบราว์เซอร์คุณสามารถจำลองการกระทำผ่านอุปกรณ์สัมผัส / อินพุตเสมือนได้ แต่สิ่งนี้จะยากขึ้นอยู่กับความซับซ้อนของการกระทำ
อีกแนวคิดหนึ่งที่เกี่ยวกับมุมมองของภาพคือการจับภาพหน้าจออ้างอิงภาพในช่วงเริ่มต้นและเปรียบเทียบมันหลังจากลำดับการกระทำเดียวกันที่เกิดขึ้นในงานสร้างใหม่ การเปรียบเทียบสามารถมีค่าเผื่อเบี่ยงเบนเฉพาะเพื่อป้องกันการเปลี่ยนแปลงเล็กน้อย ในระหว่างการทดสอบคุณสามารถบันทึกหน้าจอที่ไม่ตรงกันและเห็นความแตกต่าง อาจเป็นกรณีที่หน้าจอการอ้างอิงจำเป็นต้องได้รับการปรับปรุงเนื่องจากการเปลี่ยนแปลงที่แตกต่างกัน ในกรณีดังกล่าวเกมสามารถทำงานได้อีกครั้งพร้อมการกระทำที่กำหนดไว้ล่วงหน้าและภาพอ้างอิงจะได้รับการปรับปรุง สิ่งนี้อาจทำงานได้ไม่ดีนักกับระบบอนุภาคหรือฉากที่สร้างแบบสุ่มเว้นแต่คุณจะใช้ความคิดก่อนหน้านี้เพื่อตั้งค่าเมล็ดพันธุ์บางชนิดที่ใช้ในการสร้างอนุภาค
สำหรับเสียงมันอาจจะยากขึ้นเล็กน้อยเพราะมันจะเกี่ยวข้องกับ "การฟัง" กับอุปกรณ์ OUT (ซึ่งไม่ได้เป็น IIRC ที่เป็นไปได้เสมอไปเพราะขึ้นอยู่กับฮาร์ดแวร์ของระบบ) แต่ถ้าเป็นไปได้คุณสามารถทำการเปรียบเทียบแบบอ้างอิงเช่นเดียวกับภาพ
ฉันหวังว่าสิ่งนี้จะให้ความกระจ่างเกี่ยวกับวิธีการทดสอบเกมโดยอัตโนมัติ
แก้ไขภายหลัง: ฉันเพิ่งเห็นว่ามีคำถามอื่นที่เกี่ยวข้องซึ่งอาจให้คำแนะนำคุณเกี่ยวกับวิธีที่คุณทำบิตบางอย่าง: การทดสอบอัตโนมัติของเกม