Nói chung, bạn không xử lý hết bộ nhớ. Tùy chọn lành mạnh duy nhất trong phần mềm lớn và phức tạp như một trò chơi là chỉ cần sập / xác nhận / chấm dứt trong bộ cấp phát bộ nhớ của bạn càng sớm càng tốt (đặc biệt là trong các bản dựng gỡ lỗi). Các điều kiện hết bộ nhớ được kiểm tra và xử lý trong một số phần mềm hệ thống lõi hoặc phần mềm máy chủ trong một số trường hợp nhưng không thường ở nơi khác.
Thay vào đó, khi bạn có nắp bộ nhớ trên, bạn chỉ cần đảm bảo rằng bạn không bao giờ cần nhiều hơn số lượng bộ nhớ đó. Chẳng hạn, bạn có thể giữ số lượng NPC được phép tối đa tại một thời điểm và chỉ cần ngừng sinh ra các NPC không thiết yếu mới sau khi giới hạn đó được thực hiện. Đối với các NPC thiết yếu, bạn có thể yêu cầu chúng thay thế các NPC không thiết yếu hoặc có một nhóm / nắp riêng cho các NPC thiết yếu mà các nhà thiết kế của bạn biết để thiết kế xung quanh (ví dụ: nếu bạn chỉ có thể có 3 NPCsa thiết yếu, các nhà thiết kế sẽ không đặt nhiều hơn 3 một khu vực / khối - công cụ tốt sẽ giúp các nhà thiết kế thực hiện điều này đúng cách và tất nhiên việc kiểm tra là điều cần thiết).
Một hệ thống truyền phát thực sự tốt cũng rất quan trọng đặc biệt đối với các trò chơi hộp cát. Bạn không cần phải giữ tất cả các NPC và vật phẩm trong bộ nhớ. Khi bạn di chuyển qua các khối của thế giới, các đoạn mới sẽ được truyền vào và các đoạn cũ được truyền ra ngoài. Chúng thường bao gồm các NPC và vật phẩm cũng như địa hình. Cần thiết lập giới hạn thiết kế và kỹ thuật cho các giới hạn vật phẩm với hệ thống này, vì biết rằng hầu hết các khối X cũ sẽ được giữ xung quanh và các khối Y mới được tích cực tải sẽ được tải, do đó trò chơi cần có không gian để giữ tất cả dữ liệu của các khối X + Y + 1 trong bộ nhớ.
Một số trò chơi cố gắng xử lý các tình huống hết bộ nhớ bằng cách tiếp cận hai lượt. Hãy nhớ rằng hầu hết các trò chơi có nhiều dữ liệu được lưu trong bộ nhớ cache không cần thiết về mặt kỹ thuật (giả sử, các đoạn cũ được đề cập ở trên) và phân bổ bộ nhớ có thể làm một cái gì đó như:
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)
Đây là một biện pháp cuối cùng để xử lý các tình huống bất ngờ khi phát hành nhưng trong quá trình gỡ lỗi và kiểm tra có lẽ bạn nên ngay lập tức gặp sự cố. Bạn không muốn phải phụ thuộc vào loại công cụ này (đặc biệt là vì việc bỏ bộ đệm có thể gây ra một số hậu quả nghiêm trọng về hiệu suất).
Bạn cũng có thể xem xét việc bỏ các bản sao có độ phân giải cao của một số dữ liệu, ví dụ, bạn có thể kết xuất các mức kết cấu mipmap có độ phân giải cao hơn nếu bạn sắp hết bộ nhớ GPU (hoặc bất kỳ bộ nhớ nào trong kiến trúc bộ nhớ dùng chung). Điều này thường đòi hỏi rất nhiều công việc kiến trúc để làm cho giá trị nó, mặc dù.
Lưu ý rằng một số trò chơi hộp cát không giới hạn có thể dễ dàng bị sập, ngay cả trên PC (hãy nhớ rằng các ứng dụng 32 bit thông thường có giới hạn 2-3 GB không gian địa chỉ ngay cả khi bạn có PC có 128GB RAM; 64- HĐH bit và phần cứng cho phép nhiều ứng dụng 32 bit chạy đồng thời nhưng không thể làm gì để nhị phân 32 bit có không gian địa chỉ lớn hơn). Cuối cùng, bạn có một thế giới trò chơi rất linh hoạt, sẽ cần không gian bộ nhớ không giới hạn để chạy trong mọi trường hợp hoặc bạn có một thế giới rất hạn chế và bị kiểm soát, luôn hoạt động hoàn hảo trong bộ nhớ bị chặn (hoặc một cái gì đó ở giữa).