Mevcut projem için çok benzer bir şey üzerinde çalışıyorum. Bu, nasıl yaptığımı hızlı bir şekilde bitiriyor, bazı şeyleri kendiniz üzerinde nasıl daha kolay hale getireceğinize dair bazı yan notlar.
Benim için ilk sorun, dünyayı anında yüklemeye ve boşaltmaya uygun daha küçük parçalara ayırmaktı. Döşeme tabanlı bir harita kullandığınız için, bu adım önemli ölçüde daha kolay hale gelir. Seviyedeki her 3B nesnenin pozisyonlarını göz önünde bulundurmak yerine, seviyeniz karolara güzelce ayrılmıştır. Bu, dünyayı Y karo parçalarıyla X'e ayırmanızı ve bunları yüklemenizi sağlar.
Bunu elle yapmak yerine otomatik olarak yapmak isteyeceksiniz. XNA kullandığınız için, içerik kanalınızı düzey içeriğiniz için özel bir dışa aktarıcıyla kullanma seçeneğiniz vardır. İhracat işlemini yeniden derlemeden çalıştırmanın bir yolunu bilmiyorsanız, buna karşı dürüstçe tavsiye ederim. C #, C ++ 'ın derlemesi kadar yavaş olmasa da, haritada her küçük değişiklik yaptığınızda Visual Studio'yu yüklemek ve oyununuzu yeniden derlemek zorunda kalmazsınız.
Buradaki bir başka önemli şey, seviyenizin parçalarını içeren dosyalar için iyi bir adlandırma kuralı kullandığınızdan emin olmaktır. Öbek C'yi yüklemek veya kaldırmak istediğinizi bilmek ve ardından çalışma zamanında bunu yapmak için yüklemeniz gereken dosya adını oluşturmak istiyorsunuz. Son olarak, yolda size yardımcı olabilecek küçük şeyleri düşünün. Bir parçanın ne kadar büyük olduğunu değiştirmek, yeniden dışa aktarmak ve daha sonra bunun performans üzerindeki etkilerini hemen görmek gerçekten güzel.
Çalışma zamanında, hala oldukça basit. Parçaları eşzamansız olarak yüklemek ve boşaltmak için bir yol bulmanız gerekir, ancak bu oyununuzun veya motorunuzun çalışma şekline bağlıdır. İkinci resminiz tam olarak doğrudur - hangi parçaların yükleneceğini veya boşaltılacağını belirlemeniz ve zaten değilse durumu yapmak için uygun istekleri yapmanız gerekir. Bir seferde kaç tane parça yüklediğinize bağlı olarak, bunu bir oyuncu bir parçadan diğerine sınır aştığında yapabilirsiniz. Sonuçta, her iki durumda da, en kötü (makul) yükleme süresinde bile, oynatıcıyı görmeden önce yığının yüklendiğinden emin olmak istediğinizden emin olmak istersiniz. Performans ve bellek tüketimi arasında iyi bir denge elde edene kadar muhtemelen bu sayı ile oynamak isteyeceksiniz.
Gerçek mimari gittikçe, verileri gerçekte yükleme ve boşaltma işlemini, neyin yüklenmesi / boşaltılması gerektiğini belirleme sürecinden soyutlamak isteyeceksiniz. İlk yinelemeniz için, yükleme / boşaltma performansı hakkında endişelenmiyorum ve sadece çalışabilecek en basit şeyi alıyorum ve uygun zamanlarda uygun istekleri oluşturduğunuzdan emin olabilirim. Bundan sonra, çöpü en aza indirmek için nasıl yüklediğinizi optimize etmeye bakabilirsiniz.
Kullandığım motor nedeniyle çok fazla karmaşıklık yaşadım, ancak bu uygulamaya özel. Yaptığım şey hakkında herhangi bir sorunuz varsa, lütfen yorum yapın, yardımcı olmak için elimden geleni yapacağım.