Eksik kaynakları nasıl ele almalıyım?


13

Oyununuz belirli bir varlığın yüklenmesini bekliyor ancak bulunamadı. Durum nasıl ele alınmalı? Örneğin:

Texture* grassTexture = LoadTexture("Grass.png"); // returns NULL; texture not found
Mesh* car             = LoadMesh("Car.obj");      // returns NULL; 3D mesh not found

Kullanıcı tarafından yanlışlıkla silinmiş, geliştirme sırasında bozulmuş veya yanlış yazılmış olabilir.

Bazı potansiyel yanıtlar:

  • İddialar (ideal olarak sadece geliştirme sırasında)
  • Oyundan zarifçe çıkın
  • Bir istisna atın ve bunu ele almaya çalışın.

Hangi yol en iyisidir?


Bunu yapmanın bir yolu, oyun verilerinin hala sağlam olup olmadığını doğrulamaktır. Değilse otomatik olarak eksik verileri yeniden indirin. hata> kullanıcıdan verileri doğrulamasını isteyin> indir. Bunun için küçük bir araç oluşturmanız gerekiyor.
Sidar

En çok cevabı olarak daha belki söylemeye çalışıyoruz ne iyi açıklayabilir daha söylediğiniz gibi @Sidar I
concept3d

Hataların çirkinliği bazen oyunu kırar ve insanların oynayamaması / başlatamamasıdır. Örneğin Steam'de oyununuz düzgün çalışmıyorsa oyun verilerini doğrulayabilirsiniz. Bir şey bozuk / eksik / değişmiş gibi göründüğünde Steam otomatik olarak bu dosyaları yeniden indirir. Nasıl yaptıklarını tam olarak bilmiyorum. Ama belli ki bazı verilere karşı kontrol ediyorlar. Belki karma kodlar? Gerçekten bilmiyorum. Ama her zaman standart bir yedek varlığa sahip olmalısınız (sadece üzerinde "hata" yazan doku)
Sidar

@ Sidar neden bir cevapta güzel biçimlendirmiyorsun?
concept3d

Çünkü tam olarak nasıl çalıştığını bilmiyorum ve bu konuda yanlış bilgi vermek istemiyorum. Bu yüzden size doğru bir cevap veremedim.
Sidar

Yanıtlar:


19

Birçok oyun genel bir "hata materyali" ve "hata ağına" sahip. Bunu günlüklerde bir uyarı ile eşleştirin elbette.


Bu gönderiye tamamen katılıyorum. Ancak bir sürüm / dağıtılmış derlemede farklı şeyler yapmak isteyebilirsiniz.
Jonkel

Sürüm derlemeleri için, eksik veya geçersiz dosyaları indirmek için karma kullanarak mevcut dosyaları doğrulamak için bir yaklaşım düşünülebilir. Bununla birlikte, geliştirme sırasında dikkatinizi çekmek için siyah ve kırmızı bir dama tahtası dokusu görüntülemek kesinlikle en iyi yaklaşımdır. Modeller için açık olması gereken devasa bir ERROR modeli kullanılabilir.
Christian Ivicevic

Bu Dokular için mantıklı. 3D Modeller için çok fazla değil. Çoğu 3D model eksikse ne olur? Oyun komik görünecek, ilk etapta oynanabilir olmalı. Mekansal veri yapınızı 3B Modellerin geometrik özelliklerine dayandırırsanız ne olur. Bununla sadece doku eksikliği gibi basit koşullarda yaşıyorum. Ancak veri bütünlüğü kontrolünün ticari oyunlar için daha iyi bir yaklaşım olduğunu düşünüyorum.
concept3d

1
@ concept3d - En azından Kaynak motorun büyük, bariz bir hata ağına sahip olduğunu biliyorum (ara sıra kahraman eklerken Dota 2 test istemcisinde ara sıra gördüm). Seviye verilerinin büyük bölümleri eksikse, muhtemelen sadece bir sürüm derlemesinde hata yapmanın en iyisi olduğunu kabul ediyorum, ancak hata ayıklama amacıyla büyük bir soru işaretinin dans etmesi çok kötü değil.
Robert Fraser

6

Eğer varsa farklı çözünürlük varlıklarını ait aynı doku , farklı bir çözünürlük kullanarak durumu kurtarmak için deneyebilirsiniz.

Texture* grassTexture;
try {
    grassTexture = LoadTexture("Grass.png");
} catch (WhateverExcaption e) {
    grassTexture = LoadTexture("Grass_512.png");
}

Hatta Eğer bu başarısız, kurtarmak için zaman olabilir.


2
Yakalamaya bir geçiş ekleyebilirsiniz, böylece Dev'de her zaman eksik mesh / tex'i gösterirsiniz, ancak Yayınlandığında önce kurtarmaya çalışır ve belki daha az belirgin bir eksik dokuya sahip olur.
DampeS8N
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.