2.5D'de bir 3B ortam hissi vermek için 2B varlıklar / görüntü oluşturma teknikleri kullanılır.
Şimdi, bu tanımla, aşağıdaki potansiyel olarak belirsiz senaryoda, biraz detaylandırılması gerekir:
Oyun bir
3D grafikler kullanılarak, GPU hızlandı ve sabit bir kamera açısına sahip (oyun nesneleri kafes değil, görüntüler). Daha da kötüsünü yapalım, çıkıntı ortografik, klasik 63.43 derece. İlk bakışta grafiklerin 2B olmadığını fark etmenin tek yolu, 3DGC'nin, onları aşırı özenle göstermeniz dışında, bunları oluşturmak için kullanılan projeksiyondan bağımsız olarak, elle çizim spritlerinden kolayca ayırt edilmesidir. Farklı render teknikleri, parametreler, gölgelendiriciler, vb. İle deneyler yapabilirsiniz ve bunların 3B kafes oldukları gerçeğini gizlemeye çalışırken çok zorlanacaksınız.
Oyun b
A Oyunu limanı, ancak 3D grafikleri çok iyi kullanmayan veya hiç kullanmayan donanıma sahip olduğu bilinen platformları hedefleme. Sonra liman kafesleri sprite ile değiştirir. Örneğin, çarpışmalar için 3B Sınırlayıcı Kutuları kullanır ve oyun mantığına çoğunlukla dokunulmadığı veya hiç dokunmadığı için nesneler, x, y ve z değerlerine sahip bir konum özelliğine sahiptir, yalnızca oluşturma kodu değiştirildi.
B oyununun spriteları, A Oyununun 3B varlıklarını oluşturduğundan ve işleri daha belirsiz hale getirmek için, A Oyunu karmaşık gölgelendiriciler gerektiren herhangi bir şey yapmaz; Oyun A'dan bir karenin B
2.5D'de, oyun nesneleri arasındaki etkileşim, 3B illüzyonunun tehlikeye atılamayacağı durumlar ile sınırlıdır. Sarılma iki karakteri temsil etmek için, örneğin, iki karakterin etkileşimi olan tek bir görüntü dosyası oluşturmanız gerekecektir, çünkü sarılma eylemini yalnızca karakter başına tek bir görüntü kullanarak göstermeye çalışmak çok zor veya imkansız olurdu. Belki parçalara ayrılmış bir karakter gövdesi ile gelip bunları doğru sırayla çizebilirsiniz. 3B'de bu sorun yoktur (başka bir karakter var, iki karakteri doğru poz veriyorlar, böylece diğer karakterin ağına girmiyorlar).
Şimdi, bunu görselleştirmek için, Oyun A ve B'nin bazı durumlarda oyuncu karakterinin başka bir oyun nesnesinden geçmesine izin vererek, 2.5D olanı ile 3D olanı kolayca ayırt etmemize izin verdiği bir hata olduğunu hayal edin.
Oyun B, 2.5D Render, sprite pozisyon vektörünün z değeri ile sıralanır. Bu örnekte pozitif z aşağı ve negatif z ise yukarı. z ekseni ve y ekseni paraleldir ancak z, y'nin 0,5 faktörü ile ölçeklenir. Görünen alan 10y'den -10y'ye kadarsa, aynı bölgede 20z'den -20z'ye kadar. Daha büyük z'ye sahip nesneler daha sonra çizilecektir, bu nedenle daha düşük z'ye sahip nesnelerin önünde oldukları görülecektir. Oyuncu karakterinin gölgesi garip görünüyor çünkü gölgeler zeminden daha üstün bir katmana sahip, ancak diğer tüm nesnelerin olduğu gibi daha düşük bir katmana sahip, yani oyuncu karakter gölgesi asla küpün tepesinde değil.
Oyun A, 3D Render. Derinlik tamponu (aynı zamanda z tamponu olarak da bilinir) piksel hassasiyetinde derinlik testi için kullanılır. Bu nedenle, bir nesnenin diğerini tamamen kapatması gerekmez, bir üçgenin bile diğerini tamamen kapatması gerekmez, piksel hassasiyeti derinliği testimiz vardır. Oyun nesnelerini herhangi bir şekilde döndürebilir ve etkileşime girdiklerinde gerçekçi sonuçlar elde edebiliriz.
Özgeçmiş: 2.5D'de bir sprite ya diğer sprite ya önünde ya da arkasındadır. 3B'de, bir kafes üçgenlerden oluşur, ancak üçgen derinliği test ederken minimum birim değildir, piksel hassasiyetine sahip olabilirsiniz. Tabii ki, sabit bir kamera açısı için varlıklar oluşturulduğundan, 3D'nin doğal olması durumunda, kameranın açıları bir 3D oyunda tasarımla sınırlandırılmışsa başka bir konudur.
Sadece 2B grafikler oluşturabildiğiniz bir 3B dünyada olma hissini vermek için farklı hileler var, yalnızca terk edilmiş bir projemin bazı varlıklarını kullanarak hızlı bir şekilde hazırlanmış bir örnek verdim.
Neden sadece 3D'yi her zaman kullanmıyor ve 2.5D'yi unutmuyorsunuz?
Bir geliştiricinin neden 2.5D yaklaşımını tercih edebileceğinin bazı örneklerinde düşünebilirim:
- Belki 3D API'leri bilmiyorlar veya sevmiyorlar (Direct3D, OpenGL, başkaları da var).
- Belki hedef platform 3D grafikleri iyi işlemez (eski masaüstü bilgisayarlar, 2D konsollar).
- Ekibiniz inanılmaz spritler yapabilir ancak 3D modeller yapamaz.
2.5D kullanarak 3B grafiklerin sonuçlarına ne kadar yaklaşabilirsiniz?
Bir performans ve programlama karmaşıklığı ufku var. Bu ufka yaklaştığınızda, projenizin 2.5D'de gerçekten mümkün olup olmadığından veya tam 3B gitmek zorunda kalmayacağınızdan şüphe etmeye başlarsınız. Örneğin, 2.5D'de z-arabelleği kullanabilirsiniz (teoride), ancak video belleği maliyetini ödeyebilirsiniz (yerleşik masaüstü bilgisayarlı eski masaüstü bilgisayar, güçlü mobil cihazlardan değil)? Her sprite z maskesini korumak için fazladan bir görüntünün depolama maliyetini ödemek ister misiniz?
2.5D için iyi adaylar RPG oyunlarıdır, Baldur'un Gate serisini veya RTS'yi düşünürler, Age of Empires 1 ve 2'yi düşünüyorlar (AoE 3 tamamen 3D ve farklılaşmak için kolay).
Yararlı referanslar:
Z-Tamponlama: http://en.wikipedia.org/wiki/Z-buffering
Ortografik projeksiyonlar: http://glasnost.itcarlow.ie/~powerk/GeneralGraphicsNotes/projection/orthographicprojection.html