Genel olarak, bellek yetersiz kalmaz. Bir oyun kadar büyük ve karmaşık yazılımda tek aklı başında seçenek sadece bellek ayırıcı (özellikle hata ayıklama yapılarda) en kısa sürede çökmesini / onaylamak / sonlandırmaktır. Yetersiz bellek koşulları bazı çekirdek sistem yazılımları veya sunucu yazılımları için test edilir ve bazı durumlarda işlenir, ancak genellikle başka yerlerde kullanılmaz.
Bir üst bellek kapağına sahip olduğunuzda, sadece bu kadar fazla belleğe ihtiyacınız olmadığından emin olursunuz. Örneğin, bir kerede maksimum izin verilen NPC'yi tutabilir ve bu sınır düşüldüğünde yeni zorunlu olmayan NPC'lerin üretilmesini durdurabilirsiniz. Temel NPC'ler için, ya temel olmayanları değiştirmelerini ya da tasarımcılarınızın tasarlayacağını bildiği temel NPC'ler için ayrı bir havuz / başlık alabilirsiniz (örneğin, yalnızca 3 temel NPC'niz varsa, tasarımcılar 3'ten fazla bir alan / yığın - iyi araçlar tasarımcıların bunu düzgün yapmasına yardımcı olacaktır ve test elbette önemlidir).
Özellikle kum havuzu oyunları için gerçekten iyi bir akış sistemi de önemlidir. Tüm NPC'leri ve öğeleri hafızada tutmanıza gerek yoktur. Dünyanın parçaları arasında ilerledikçe yeni parçalar akacak ve eski parçalar akacak. Bunlar genellikle arazinin yanı sıra NPC ve öğeleri de içerecektir. En fazla X eski parçanın saklanacağını ve proaktif olarak yüklenen Y yeni parçanın yükleneceğini bilerek, öğe sınırları üzerindeki tasarım ve mühendislik sınırları bu sistem göz önünde bulundurularak ayarlanmalıdır. hafızadaki X + Y + 1 parçalarının verileri.
Bazı oyunlar, iki geçişli bir yaklaşımla bellek dışı durumları ele almaya çalışır. Çoğu oyunun teknik olarak gereksiz önbelleğe sahip çok sayıda verisi (örneğin, yukarıda belirtilen eski parçalar) olduğunu ve bellek ayırmanın aşağıdaki gibi bir şey yapabileceğini unutmayın:
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)
Bu, sürümdeki beklenmedik durumlarla başa çıkmak için son bir önlemdir, ancak hata ayıklama ve test sırasında muhtemelen hemen çökmelidir. Bu tür şeylere güvenmek istemezsiniz (özellikle önbellekleri boşaltmanın bazı ciddi performans sonuçları olabileceğinden).
Ayrıca bazı verilerin yüksek çözünürlüklü kopyalarını dökmeyi de düşünebilirsiniz; örneğin, GPU belleğinde (veya paylaşılan bellek mimarisindeki herhangi bir bellekte) azalmışsanız, yüksek çözünürlüklü mipmap doku düzeylerini dökebilirsiniz. Bununla birlikte, buna değer olmak için genellikle çok fazla mimari çalışma gerektirir.
Bazı çok sınırsız sanal oyun oyunlarının PC'de bile kolayca çökebileceğini unutmayın (128 GB RAM'e sahip bir bilgisayarınız olsa bile ortak 32 bit uygulamaların 2-3 GB adres alanı sınırı olduğunu unutmayın. bit işletim sistemi ve donanım, daha fazla 32 bit uygulamanın aynı anda çalışmasına izin verir, ancak 32 bit ikilinin daha büyük bir adres alanına sahip olmasını sağlamak için hiçbir şey yapamaz). Sonunda, ya her durumda çalıştırmak için sınırsız bellek alanına ihtiyaç duyacak çok esnek bir oyun dünyasına sahipsiniz ya da sınırlı bellekte (veya arada bir yerde) her zaman mükemmel çalışan çok sınırlı ve kontrollü bir dünyaya sahipsiniz.