ในกรณีส่วนใหญ่ปัญหาเหล่านี้จะตกอยู่ในหมวดหมู่ของ "พฤติกรรมที่ไม่ได้กำหนด" (ไม่ใช่ในแง่ของ C ++ แต่เป็นความเข้าใจที่กว้างขึ้น)
สิ่งที่คุณต้องทำคือหลีกเลี่ยงสิ่งที่เป็นนามธรรมโดย MonoGame (เป็นตัวอย่างแน่นอนว่าสิ่งนี้ใช้กับ API ระดับสูง ๆ เช่นนั้น) ในการทำเช่นนี้คุณสามารถทำให้การรับประกันคงที่ในชั้นเรียนถูกละเมิดซึ่งหมายความว่าสมมติฐานที่ผู้เขียน MonoGame สามารถเขียนรหัสได้ภายใต้อาจไม่เป็นจริงอีกต่อไปและรหัสอาจทำงานโดยไม่คาดคิด รหัสของคุณเองไม่สามารถพึ่งพาการรับรองค่าคงที่ของสิ่งที่เป็นนามธรรมได้อีกต่อไปตั้งแต่คุณทำลายมัน
พฤติกรรมที่ไม่คาดคิดนี้จะรวมถึงขอบเขตทั้งหมดของพฤติกรรมดังกล่าวตั้งแต่การเรนเดอร์แบบธรรมดาไปจนถึงการล่มหรือหน่วยความจำเสียหาย
ตัวอย่างเช่นหากคุณเล่นซอกับสถานะการเรนเดอร์ API บางตัวโดยเรียกใช้รอบ ๆ โมโนเกมตัวเองมันอาจไม่สามารถตรวจจับการเปลี่ยนแปลงสถานะนั้นได้ (เพราะมันอาจจะไม่สำรวจ API พื้นฐานสำหรับการเปลี่ยนแปลงมันมีประสิทธิภาพมากกว่า สมมติว่าเป็นตัวควบคุม API และติดตามการเปลี่ยนแปลงเหล่านั้น) ดังนั้นในการตัดสินใจครั้งต่อไปว่าอาจไม่จำเป็นต้องอัปเดตสิ่งที่ควรได้รับการอัปเดตและฉากของคุณอาจไม่ถูกต้อง
หรือคุณอาจยุ่งกับ API พื้นฐานและเปลี่ยนแปลงจำนวนการอ้างอิงของวัตถุอุปกรณ์บางอย่าง (สมมติว่า D3D) ซึ่งหมายความว่ามันอาจได้รับการปล่อยตัวก่อนกำหนดจากภายใต้ MonoGame หรือไม่ได้ตั้งใจปล่อยออกมาทำให้เกิดความผิดพลาดหรือทรัพยากรรั่วไหล
หรือคุณสามารถทำสิ่งที่ใช้งานได้ แต่เนื่องจากคุณล้อเล่นในลักษณะที่ไม่ได้รับการสนับสนุนและด้วยคุณสมบัติที่ไม่มีเอกสารหรือรูปแบบการเข้าถึงที่ไม่คาดคิดคุณสามารถค้นหารหัสของคุณได้อย่างไม่น่าเชื่อในรุ่นถัดไป
หรือคุณสามารถทำอะไรบางอย่างมันใช้งานได้ดีสำหรับบางรุ่น แต่ต่อมาคุณพบข้อผิดพลาดอื่น ๆ และมีปัญหาในการติดตามดังนั้นคุณจึงขอความช่วยเหลือจากโมโนเกมคนอาจส่งรายงานข้อผิดพลาดเพราะคุณแน่ใจ ปัญหาในรหัสของพวกเขา พวกเขาไม่สามารถสร้างข้อผิดพลาดได้แน่นอนและในที่สุดมันก็ออกมาว่าคุณกำลังทำการแฮ็กข้อมูลการเข้าถึงโดยตรงที่แปลกและ ณ จุดนั้นไม่ว่าแฮกเกอร์ของคุณจะเป็นสาเหตุของข้อผิดพลาดหรือไม่ก็ตาม คุณอาจหยุดการใช้ทรัพยากรในการแก้ไขของคุณเพียงเพราะคุณกำลังทำสิ่งที่ไม่ได้รับการสนับสนุน (หรืออย่างน้อยพวกเขาก็จะยกเลิกการจัดลำดับความสำคัญของคุณ)
แน่นอนในบางกรณีคุณอาจต้องหลีกเลี่ยง API อย่างแน่นอนบางทีอาจมีข้อบกพร่องในซอฟต์แวร์การจัดส่งซึ่งแพทช์อย่างเป็นทางการจะไม่ถูกปล่อยออกมาทันเวลา หากคุณต้องทำสิ่งนี้จริงๆคุณควรใช้วิธีการที่นุ่มนวล: พยายามกำหนดขอบเขตการเข้าถึงโดยตรงของคุณให้แคบที่สุดเท่าที่จะทำได้และให้แน่ใจว่าคุณพยายามออกจากสถานะของ API พื้นฐานที่ไม่เปลี่ยนแปลงเท่าที่จะเป็นไปได้ . มันไม่ได้รับประกันความสำเร็จ แต่สามารถช่วยได้
เป็นการดีที่คุณจะหลีกเลี่ยงสิ่งนี้อย่างสิ้นเชิงแม้ว่า