Özel bir oyun motorları için çekirdek verilerim bozuk veya eksikse ne yapmalıyım?


27

Bir oyun için özel bir motor yazıyorum. Bu oyuna neden ara katman yazılımı kullanmam gerektiğini anlamamdan önce başladım ve yeniden yazmak için çok ileride.

Verilerimin büyük çoğunluğu dış dosyalardan geliyor ve ben sadece varlıklara değinmiyorum; Tüm oyun nesnelerimi .JSON aracılığıyla tanımlarım. Ama, ne yazık ki ben insanım; zaman zaman veri dosyalarım geçersiz ya da formatı değiştiriyorum ancak dosyayı güncellemeyi unuttum, ya da yükleyicinin kendisi düz çıktı.

Herhangi bir nedenden ötürü, özel bir motorda bir tür varlık yükleme denemesi başarısız olursa, hangi seçeneklere sahibim?

Bu, eksik kaynakları nasıl ele almalıyım'ın bir kopyası değil. Bu soru, modeller veya dokular gibi kullanıcının karşılaştığı varlıklarla ilgilidir. Kötü dokular bir dama tahtası, sessiz sesler ve "ERROR" ile kötü metinler ile değiştirilebilir. Sorunum, seviyeler, oyun nesnesi tanımları ve GUI mizanpajları gibi oyunda bile çalışan kritik veriler.


7
Oyunum için de benzer bir yaklaşım kullanıyorum. Aslında insan hatalarından kaçınmak için oyun veri dosyalarımı oluşturmak için küçük bir yardımcı program yaptım - bu yolla dosyaları değiştirebilirsem, 100.000 satır JSON yazmalıyım.
JDSweetBeat

Verilerinizi yüklemeden önce bir doğrulayıcı aracılığıyla da çalıştırabilirsiniz .
JDSweetBeat

JSON'um, onu otomatik olarak üretmek işe yaramaz olacak kadar küçüktür. Ayrıca, bir doğrulayıcı JSON eksikse yardımcı olmaz veya okuması gereken şeyde bir hata vardır. Yine de, düşünce için teşekkürler.
JesseTG

Yanıtlar:


44

Bir hata günlüğü ve incelikle çıkın.

İdeal olarak, ekranda insan tarafından okunabilen bir hata görüntüleyebilirsiniz. Bu veri dosyaları olmadan çalışan, kodlanmış bir fonksiyonelliğin temel boru hattı olmalıdır. Veri dosyalarını ilk etapta yükleyen aynı boru hattıdır. Bu çekirdek veri dosyalarının ne zaman bozuk veya başka şekilde hatalı olduğunu tespit edip uygulamayı sonlandırabilir. Kullanıcıların bu dosyaları değiştirmesi isteniyorsa, yapılacak çok fazla şey yoktur. Aksi takdirde, bu tür bozulmaların olmamasını sağlamak için bir test stratejisi uygulamanız gerekir. Ardından, yalnızca geçerli veri dosyalarını serbest bıraktığınızdan emin olabilirsiniz.


12

Bayt56, bir seçenekten bahsetti. En az bir tane daha var:

Varsayılan değerleri kabul edin ve bir Uyarı gösterin.

Verilerinizin niteliğine bağlı olarak, bazı varsayılan değerler almanız ve kullanıcıyı "xxx dosyası yüklenemediğinden, genel bir yyy nesnesi kullandığımızdan" uyarısı kabul edilebilir.


6

Bu geliştirme veya sürüm sırasında olup olmamasına bağlıdır.

Geliştirme sırasında sürekli olarak her zaman tüm eksik şeyler, hatalar ve karışıklıklara sahip olacaksınız ve hatta talep üzerine varlıkları “sıcak” hale getirmek veya oyun çalışırken bir varlığın yerine geçmek isteyebilirsiniz. Bir AI'nın daha iyi performans gösterdiğini veya benzeri şeyleri test etmek için oyun çalışırken komut dosyalarını düzenleyebilirsiniz.

Öyle En sinir bozucu bir program gösterileri bir hata iletişim ve çıkışlar her zaman eğer ve 2-3 dakika sürer yeniden başlatılması gerekir. Gelişimdeki amaç, sizi (en değerli varlık olan zamanı) mümkün olduğunca az oyalamak.
Bu nedenle, örneğin bir doku eksikse, kırmızı-beyaz bir dama tahtası gibi bir şey görmek istersiniz, belki de "eksik" kelimesi yerine bir doku olarak yazıldığından, bir şeyin garip olduğu hemen bellidir . Ancak oyunun zarifçe çıkmasını, hatta çarpışmasını istemiyorsunuz. Günlük dosyanızda eksik olanlarla ilgili ayrıntılı bilgiler son derece yararlıdır.

Öte yandan, bir sürümde, tam bir varlık dosyaları kümesi ideal olarak [1] otomatikleştirilmiş varlık hattınızdan geçmelidir . Bunun, tüm JSON'larınızda okuyan ve daha sonra her modülün kendi içinde tutarlı olduğunu kontrol eden ve referans verdiğiniz her öğenin gerçekte orada olduğunu doğrulayan ve ardından tüm dosyaları sıkıştırdığını doğrulayan basit bir ayrıştırıcıdan daha fazlası olması gerekmez. Motorunuzun okunması kolay, isteğe bağlı olarak birkaç sağlama toplamı ekleyen, bilinen (ancak mutlaka standart değil) bir yolla.

Sen biliyorsun senin boru hattı Eğer son kullanıcıya paketi yayımlandı önce her şeyin yoktu kontrol çünkü hiçbir başarısızlık olamayacağını. Bu nedenle, bir arıza olursa, bir iletim hatası olmuş veya kullanıcının aldatmaya çalıştığı ihtimal daha yüksek. Her iki durumda da, program, varlık dosyalarının zarar gördüğünü belirten bir mesaj göstermeli ve çıkmalıdır.

Alternatif olarak, İnternet'ten varlıkların bozulmamış bir kopyasını (bir indirme sunucunuz varsa) indirme seçeneğini sunabilirsiniz. Ancak bir müşteri desteği kabusundan kaçınmak için, gigabayt veri indirmeden önce sormayı unutmayın .


[1] Gerçeklik hatta kimin yapımcıları "bilmeli" AAA başlıklarda varlıklarını eksik bulabilir, farklı görünebilir, ancak genellikle çok gerçekçi olmayan süreler ve büyük, değişen ekipleri var. İdeal olarak, gönderdiğiniz her şey otomatik boru hattından geçmiştir ve eksiksiz olması garantilidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.