Hareket halindeyken tonlarca farklı ekipmanı kullanabilmek için 2D bir karakter yapmak için en iyi yaklaşım hangisidir?


14

Bir 2D oyun oluşturmak istiyorum, ancak RPG ya da benzeri farklı kombinasyonlarda tonlarca farklı ekipman giyecek karaktere sahip olmak istiyorum.

Diyelim ki kullanıcı omuzlarını ve pantolonunu değiştiriyor, bu oyuncuya gösterilmeli ve tüm bu farklı ekipmanlar farklı karakter hareketlerini izlemelidir (vurma, vurulma, büyü yazımı, vb.).

Çözmek için en iyi yaklaşım / algoritma / mimariyi bilmek istediğim birkaç problem görüyorum.

1 - Sprite veya Animasyon

Her aksiyon animasyonunda her ekipman için farklı sprite oluşturmalı mıyım?

Donatıyı doğrudan döndürmek ve çevirmek (Flash'ta ara doldurma gibi bir şey kullanarak) gibi kod üzerine doğrudan serpmek ve canlandırmak daha mı iyi?

Başka daha iyi bir seçenek var mı? (Yukarıdaki fikirleri gerçekten sevmiyorum)

2 - Pozisyonlar

Karakterin hamlelerinden biri sırasında oyuncunun görüşüne doğrudan önünden bakmaya başladığını, ancak sağ tarafını oyuncuya gösteren hareketini sona erdirdiğini (kılıcını bir taraftan diğerine sallıyormuş gibi) diyelim.

Kullanıcının bir bölümünü, örneğin kafası gibi düşünürsek, önden başlar ve sola döner.

Her kafa ekipmanı için en az 3 farklı pozisyon anlamına gelir (kask, kapak, ne olursa olsun).

Bu kesinlikle 1 numaralı sorunun cevabını etkiler. Bunu başarmanın en iyi yolu nasıl?

3 - Katmanlar

Kolları açıkken 360 derece döndüğü bir karakter hareketini düşünelim. Animasyonun başında, sağ eli kullanıcının görüşüne yakın ve daha sonra, hareketin ortasında, bu muhtemelen karakterin animasyondaki vücudunun arkasında.

# 1 sorusundaki seçenek ne olursa olsun, bu sprite veya animasyonu oyuncunun görüşüne daha yakın başlatmak ve daha sonra oyuncunun görüşünden uzağa değiştirmek için mutlaka bir çeşit katman modeli kullanmanız gerekir.

Bunu yapmanın iyi bir yolu var mı?

Sorunun oldukça uzun ve anlaşılması zor olduğunu biliyorum. Hangisini açıklamaya çalışmak için bazı çizimlerinizin daha iyi olduğunu düşünüyorsanız bana bildirin ve bunu yapmaya çalışacağım.


Sanatınızın ne düzeyde olmasını düşünüyorsunuz? Retro piksel sanatı gibi mi? Ya da bu HD spritelar, eğer yanıtımı uyarlamama gerçekten yardımcı olacak mevcut bir sanatınız varsa.
Jesse Dorsey

Selam Noctrine. Aslında bunu "sanattan bağımsız" bir soru olarak görüyorum. Anlaşmayı kolaylaştırmak için bu hafta sonu daha sonra bazı açıklamalar yapmaya çalışacağım. Thank you
homemdelata

Yanıtlar:


8

Sanırım belki bir 2D iskelet animasyon sistemi mi arıyorsunuz? Ne yazık ki bunun için hazır herhangi bir sistem bilmiyorum, çünkü çoğunlukla 3D-gfx-ama-2D-oyun trendinin yerini aldı.


+1 Sadece karakteri 3D yaparsanız bunu yapmak çok daha kolaydır.
knight666

ama "3D-gfx-ama-2D-oyun" için yine de bahsettiğim çözümlerden birini düşünmeliyim, aksi takdirde herhangi bir ürün kombinasyonu için bir sprite almam gerekecek, örneğin, 10 farklı parantez ile aynı göğüs parçası parçaları 10 animasyon üretecek :(
homemdelata

Gerçekten değil, sadece iskelet üzerinde bağlantı noktalarınız var ve ihtiyacınız olan her şeyi bırakabilirsiniz.
coderanger

2
XNA için iyi bir editör de dahil olmak üzere (açık kaynak) basit bir 2d iskelet animasyon kütüphanesi yaptım. Check out youtube.com/user/srekel#p/a/u/0/46LIoFNdG_4 ve youtube.com/user/srekel#p/a/u/1/8sYkeu5k7XE
Srekel

Bu neredeyse doğru cevap. Aslında aradığım şeyin 2D animasyon için 3D İskelet sistemi olduğunu anladınız. Bunun için algoritmalar bulmam gerekiyor (varsa)
homemdelata

8

Zorba'nın dediği gibi, çoğu retro oyun bunu özellikle yapmadı çünkü her ekipman için çok kareli animasyonlara (spritelarla) ihtiyacınız olacaktı.

Bazı "tembel" alternatifler:

  • Tamamen farklı sprite yapmak yerine vitesi paletle değiştirin.
  • Karakteri, vücutlarının canlandırdığı tek parçaları dişliye bağlı olmayan parçalar olacak şekilde çizin. Örneğin, karakter yine de sadece tek bir zırh kıyafeti giyebiliyorsa, bunun yerine bir Kask yapın ve sonra başınızı sabit tutarken tüm vücudu canlandırabilirsiniz.
  • Ana oyun ekranındaki karakter için tek bir hareketli grafik kullanın, ancak ekipmanı statik bir resme sahip bir alt ekranda gösterin. O zaman animasyon hakkında endişelenmenize gerek yok.

2

Ultima serisi gibi eski oyunlarda, gerçekten mümkün olan her karakter pozunda bir parça ekipman çizeceklerdi. Oklüzyon, ya dişli çizmeyerek (sol eldiven oyuncu sprite arkasındaysa, endişelenmenize gerek yoktur) ya da sadece dişliyi arkadan öne doğru çekerek ele alınacaktır.

Açıkçası bu çok emek yoğundu ve sonuç olarak nispeten az sayıda benzersiz dişli vardı, bu dişlinin çok sayıda paletle değiştirilmiş ve palet değiştirilmiş versiyonu vardı.

Modern bir oyunda, 3d karakterler yapmanızı şiddetle tavsiye ederim. 2d görünümlü sanat istiyorsanız veya platformunuz gerçek 3d için beygir gücüne sahip değilse, her şeyi 3d olarak modellemek, oluşturmak ve daha sonra nihai sonucu el ile ayarlamak daha iyi olacaktır.

Alternatif olarak, çimdiklemeye ihtiyacınız olmadığına karar verirseniz, tam 3d için beygir gücünüz yok, ancak büyük bir sprite kütüphanesi göndermek istemiyorsanız, 3d modelleri paketleyebilir ve bunları bildiğinizde gerçek zamanlı olarak bir dokuya dönüştürebilirsiniz. model oyunda göstermek üzere.


Diğer cevapta bahsettiğim aynı şey burada: Yine de bahsettiğim çözümlerden birini düşünmeliyim, aksi takdirde herhangi bir ürün kombinasyonu için bir sprite almam gerekecek, örneğin, 10 farklı parantez parçasıyla aynı göğüs parçası 10 animasyon üretecek :(
homemdelata

2
Çalışma zamanında "bitiş hareketli grafiği" ni birleştirirsiniz. "Oyuncu" için bir hareketli grafiğiniz yok, her bir animasyon karesi için oluşturulan hareketli grafiklerin bir listesi olurdu. Eğer oyuncu sağa bakarsa, "sol eldiven", "sol kolluk", "oyuncu karakteri", "bot", "pantolon", "vücut zırhı", "dümen", "sağ kolluk" , "sağ eldiven" sırayla. Daha sonra, her bir dişliyi bağımsız olarak, havada havada hareket ettirirsiniz.
ZorbaTHut


0

Bu harika bir soru ama bence bunu kendiniz cevapladınız - kemik değiştiren katmanları destekleyen bir 2D kemik sistemine ihtiyacınız var, böylece karakter döndükçe farklı uzuvlar birbirinin arkasına ve önüne geçebilir. Ayrıca spritelarınızı 4 veya 8 açıyla (veya ihtiyacınız olan pek çok açıdan) çizmeniz gerekir. Ekibinizde hangi becerilerin bulunduğuna bağlı olarak, bu varlıkları 3D olarak oluşturmak ve bunları ihtiyaç duyduğunuz açılardan çıkarmak daha kolay olabilir.

Bir 3D motor kullanmak da iyi bir çözümdür, ancak bu kendi zorluklarını getirecektir.


Evet, neredeyse bu kadar. Diğer yanıtı doğru olarak aldım ama bu da geçerli.
Diğerine
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.