โดยทั่วไปคุณไม่ได้จัดการกับหน่วยความจำไม่เพียงพอ ตัวเลือกที่มีเหตุผลเพียงอย่างเดียวในซอฟต์แวร์ที่มีขนาดใหญ่และซับซ้อนเช่นเดียวกับเกมคือการชน / ยืนยัน / ยุติในตัวจัดสรรหน่วยความจำของคุณโดยเร็วที่สุดเท่าที่จะทำได้ เงื่อนไขหน่วยความจำไม่เพียงพอได้รับการทดสอบและจัดการกับซอฟต์แวร์ระบบหลักหรือซอฟต์แวร์เซิร์ฟเวอร์ในบางกรณี แต่มักจะไม่ได้อยู่ที่อื่น
เมื่อคุณมีฝาปิดหน่วยความจำส่วนบนคุณเพียงแค่ให้แน่ใจว่าคุณไม่ต้องการหน่วยความจำมากกว่านั้น คุณสามารถรักษาจำนวน NPC ที่อนุญาตได้สูงสุดต่อครั้งและเพียงแค่หยุดการวางไข่ NPC ที่ไม่จำเป็นอีกครั้งเมื่อการโจมตีสูงสุด สำหรับ NPC ที่สำคัญคุณสามารถให้พวกมันแทนที่อันที่ไม่จำเป็นหรือมีพูล / หมวกแยกต่างหากสำหรับ NPC ที่จำเป็นที่นักออกแบบของคุณรู้ที่จะออกแบบรอบ ๆ (เช่นถ้าคุณสามารถมี NPC ที่จำเป็น 3 ชิ้นเท่านั้นนักออกแบบจะไม่ใส่มากกว่า 3 ใน พื้นที่ / ชิ้นส่วน - เครื่องมือที่ดีจะช่วยให้นักออกแบบทำสิ่งนี้ได้อย่างถูกต้องและการทดสอบเป็นสิ่งจำเป็นอย่างยิ่ง)
ระบบสตรีมที่ดีจริงๆก็มีความสำคัญเช่นกันโดยเฉพาะเกม Sandbox คุณไม่จำเป็นต้องเก็บ NPC และรายการทั้งหมดไว้ในหน่วยความจำ ในขณะที่คุณเคลื่อนผ่านช่องว่างของโลกชิ้นใหม่จะถูกสตรีมเข้าและชิ้นส่วนเก่าจะถูกสตรีม โดยทั่วไปจะรวม NPC และรายการเช่นเดียวกับภูมิประเทศ ต้องตั้งค่าการออกแบบและวิศวกรรมขีด จำกัด ของรายการโดยคำนึงถึงระบบนี้เนื่องจากรู้ว่าจะต้องเก็บชิ้นส่วนเก่า ๆ ไว้รอบ X และโหลดชิ้นใหม่ Y เชิงรุกอย่างต่อเนื่องดังนั้นเกมจะต้องมีพื้นที่เพื่อให้ทั้งหมด ข้อมูลของ X + Y + 1 ชิ้นในหน่วยความจำ
เกมบางเกมพยายามจัดการกับสถานการณ์ที่ไม่อยู่ในความทรงจำด้วยวิธีการส่งผ่านสองทาง โปรดทราบว่าเกมส่วนใหญ่มีข้อมูลแคชที่ไม่จำเป็นในทางเทคนิคมากมาย (เช่นก้อนเก่าที่กล่าวถึงข้างต้น) และการจัดสรรหน่วยความจำอาจทำสิ่งต่อไปนี้:
allocate(bytes):
if can_allocate(bytes):
return internal_allocate(bytes)
else:
warning(LOW_MEMORY)
tell_systems_to_dump_caches()
if can_allocate(bytes):
return internal_allocate(bytes)
else:
fatal_error(OUT_OF_MEMORY)
นี่เป็นมาตรการสุดท้ายที่จะจัดการกับสถานการณ์ที่ไม่คาดคิดในการเปิดตัว แต่ในระหว่างการดีบักและการทดสอบคุณควรจะพังทันที คุณไม่ต้องการที่จะพึ่งพาสิ่งนี้ (โดยเฉพาะอย่างยิ่งเนื่องจากการทิ้งแคชอาจส่งผลต่อประสิทธิภาพที่ร้ายแรง)
คุณอาจลองถ่ายสำเนาข้อมูลที่มีความละเอียดสูงบางตัวอย่างเช่นคุณอาจถ่ายโอนข้อมูลระดับพื้นผิว mipmap ความละเอียดสูงกว่าหากคุณใช้หน่วยความจำ GPU ต่ำ (หรือหน่วยความจำใด ๆ ในสถาปัตยกรรมหน่วยความจำที่ใช้ร่วมกัน) ซึ่งมักจะต้องใช้งานสถาปัตยกรรมจำนวนมากเพื่อสร้างความคุ้มค่า
โปรดทราบว่าเกมแซนด์บ็อกซ์ที่ไม่ จำกัด จำนวนมากสามารถชนกันได้อย่างง่ายดายแม้กระทั่งบนพีซี (โปรดจำไว้ว่าแอพ 32 บิตทั่วไปมีพื้นที่ที่อยู่ 2-3 GB จำกัด แม้ว่าคุณจะมีพีซีที่มี RAM ขนาด 128GB หรือ 64- ระบบปฏิบัติการบิตและฮาร์ดแวร์ช่วยให้แอปแบบ 32 บิตเพิ่มเติมสามารถทำงานพร้อมกันได้ แต่ไม่สามารถทำอะไรได้เลยเพื่อให้ไบนารีแบบ 32 บิตมีพื้นที่ที่อยู่ที่ใหญ่กว่า) ในท้ายที่สุดคุณมีโลกแห่งเกมที่ยืดหยุ่นอย่างมากซึ่งจะต้องใช้พื้นที่หน่วยความจำที่ไม่ จำกัด เพื่อให้ทำงานได้ในทุกกรณีหรือคุณมีโลกที่ จำกัด และควบคุมได้ซึ่งทำงานได้อย่างสมบูรณ์แบบในหน่วยความจำที่มีขอบเขต