Herhangi bir yöne bakabilecek önceden oluşturulmuş 2B sprite'ları nasıl uygulayabilirim?


28

Ben Clash of Clans gibi oyunların birliklerini nasıl yarattıklarını Googling'dim ve görünüşe bakmadan önce 3B modelleri 2D sprite sayfalarına önceden hazırladıkları ve çalışma zamanında bu 2d görüntüleri oluşturdukları görülüyor. Bununla birlikte, Klan Çatışmasındaki birlikler herhangi bir yöne dönük olabilir.

Benzer oyunumda, her birlik için her oryantasyon için (0-360 derece) bir görüntü oluşturacak olsaydım (18 tür) animasyonlarında her karede büyük miktarda görüntü üretmek zorunda kalacaklardı . Bunun diğer geliştiricilerin ne yaptığını hayal edemiyorum, bu yüzden bunu nasıl başarabilirim?


2
Bahsettiğiniz teknik bu arada, "Billboarding" olarak adlandırılır.
Weckar E.

Yanıtlar:


45
  1. Genellikle 360 ​​yönden daha az olur. Genel durum 8 veya 16'dır. Animasyonlar da oldukça kısadır.

  2. Otomasyon senin arkadaşın. Listeden bir model yüklemek, görüntüyü istediğiniz her karede ve yönde oluşturmak için bir Blender / 3DMax / etc betiği yazın. Görüntüleri içeriğe göre etiketleyin ve bunları oyundan adresleyin.

  3. Daha hızlı erişim için her şeyi doku atlaslarına (aka sprite levhaları) yerleştirin.

Sonunda, sadece bir düzine atlasın içine özenle paketlenmiş birkaç külçe ve bit ile biteceksin. Bu kadar büyük bir anlaşma değil;)

CoC'dan bir resim bulamadım, ancak karakter animasyonlarına aynı yaklaşımı kullanan Diablo II. Örneğin Amazon yakın muharebe saldırısı:

görüntü tanımını buraya girin


4
Depolama gücü ve indirme süresi ile işleme gücü / zamanı arasındaki denge.
M. Mimpen

3
"Atlas" nedir? Bağlantı var mı?
BЈовић

7
@ BЈовић "Doku Atlası" arayın. Bu çok yaygın bir kavram.
Kromster Monica

2
Bu tekniğin Blizzard North geliştiricileri tarafından tartışılmasında, temel olarak PC grafik yeteneklerinde garip bir anı ele almanın tuhaf bir durma boşluğu ölçütü olduğu sonucuna vardıklarına dikkat etmek doğru olabilir. sonunda buna değer olmak. Bu konuda bir röportaj yapıldı ve sonuçta her şeyi yeniden yapmak çok uzun sürdü ve genel sonucun harika bir yaklaşım olmadığı (ve bir sonraki oyunlarının kesinlikle 3B olacağı) oldu.
KRyan

1
@KRyan iyi ek! D2'deki VAST miktarındaki NPC ve donanım nedeniyle olduğunu tahmin ediyorum. CoC ve mobil platformlar için farklı bir denge.
Kromster Monica

8

Ayrıca bu görüntülerin düşük çözünürlüğünü aklınızda bulundurun. Yer kazanmak için yapabileceğiniz birkaç şey var, ancak bunlardan hangisinin Klan Çatışması tarafından kullanıldığını bilmeme rağmen:

  • Birliklerin konumlandırmasını standart yönlere (N, E, S, W, NE, SE, SW, NW) yüz yüze gelmeden daha sık ya da sadece standart yönler için optimize edebilirsiniz.

  • Yalnızca bazı yönleri önceden oluşturduğunuzda birleşik bir yaklaşım yapabilirsiniz. Çerçeve sırasında, varolan bir görüntüyle eşleşmeyen birlikleri oluşturabilir veya zamanınız tükenirse en yakın görüntüyü kullanabilirsiniz.

  • Saklanan karelerin sayısını yarıya indirmek için mümkün olduğunda sol / sağ simetrileri kullanın.

  • Yürüme ve dinlenme, bazı yönleri ve kareleri kaydetme gibi animasyonlara öncelik verebilirsiniz. Ardından, daha az yön ve kare sakladığınız bir kılıcın sallanması gibi diğer animasyonları dağıtın (salınmanın ilk ve son karesi için daha fazla yön tutmanızı öneririm).

  • Kalan yol tariflerini en yakın resmi kullanarak ve ardından esneterek taklit edebilirsiniz.

Genel olarak, yaklaşık 18 birim, 8 yöne, saniyede 20 kare hızında 2 saniyelik animasyon, ortalama 64x64 piksel ve piksel başına yaklaşık 2 bayttan bahsediyor olabiliriz. Bu 18x2x20x64x64x2 = 50 MB’dir. Ayrıca cihazın özelliklerine ve harita üzerinde kullanılan birim sayısına bağlı olarak yön sayısını, çözünürlüğü ve kare sayısını ölçeklendirebilirler.


2
Belirli bir nesneye yakınlaşırsanız, reklam panolarından 3B modellere geçebilirsiniz - bu yüzden 3B yaklaşıyor ve daha sonra arka planda dolaşan çok kişi varken daha hızlı olan 2d'yi kullanabilirsiniz. Geçişin sorunsuz bir şekilde ele alınması zor olabilir.
Tim B,

@TimB Bu özellikle iyi, çünkü yüksek çözünürlükler veriyor ve düşük çözünürlüklerde görüntüler kullanıyorsunuz.
Peter,

2

@Kromster cevabına ek olarak, görüntülerin sık sık önemli ölçüde sıkıştırıldığını ve birçok yinelenen öğenin (örn. Boş arkaplan) olduğu büyük "atlas" görüntülerde sıkıştırmanın önemli olduğunu unutmayın. Bu nedenle, görüntülerin son “boyutu” sadece bireysel görüntü boyutunun düz bir çarpımı değildir.


5
Sıkıştırma GPU'lar için jpe'lerden farklı olarak çalışır, özellikle de Clash of Clans'ın yazdığı cihazlardaki mobil GPU'lar. en.wikipedia.org/wiki/S3_Texture_Compression olarak diğer kelimeler: Boş arka plan doku sıkıştırma% 100 önemsizdir.
Peter

-2

Klasik bir örnek için, sözde-3D ortamında 2D sprite kullanan orijinal Doom'u indirmenizi öneririm. Sprite'lar 8 yüz yönüne (oyuncunun bakış açısına göre) ve yaklaştıkça bellekten yaklaşık 8 farklı boyuta sahipti. Bu çok görünürdü, ama oyun için yeterince kabul edilebilirdi. Clash veya diğer izometrik oyunlarda elbette mesafeyi düşünmeye gerek yoktur.


Farklı boyutlar yoktu. Render, ihtiyaç duyulduğunda yukarı / aşağı ölçeklendirme yaparak en yakın komşunun saf kalmasına neden oldu.
R. ..

@R .. Düzeltme için teşekkürler. Oynadığımdan bu yana birkaç yıl geçti! :)
Graham

1
Üzgünüz, ancak bu "Nasıl uygulayabilirim?" Sorusunu yanıtlamaz.
Kromster,

@Kromster Peki, "bunu nasıl uygularım?" Diye soran bir soru için, soruyu uyguladığı klasik oyuna (360 yerine 8 açı) hızlıca genel bir bakışla cevaplayamıyorum ve özellikle bunun nasıl yapıldığını belirttim. Oynarken görünmesi kolay, çünkü OP görünüşe göre Çatışmada söyleyemedi mi? Ve bu genel durum ile izometrik bir görüşün spesifik durumu arasındaki farkları not etmek? Serbestçe kabul ediyorum ki, cevabınız kadar neredeyse hiç iyi değil, fakat daha düşük kaliteli bir cevapla soruyu cevaplamamak arasında bir fark var.
Graham
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.