2010-05-13 12 views

cevap

4

Çok eski macera oyunları (Sierra'nın 80'lerdeki görevleri gibi), karakterinizin nereye gidebileceğini ve nerede saklanacağını belirlemek için z-derinliği ve malzemeleri temsil eden tüm ekranın ayrı bir bitmapini sürdürmek için kullanılırdı. Küçük sprite'ların nereye gideceğini kontrol etmek için piksel örneklemesi kullanırlardı.

Geçerli makineler daha hızlı olsa da, uzun kenar kaydırma seviyeleri bu tür bir yaklaşımı IMF yapar. Daha seyrek temsillerle gitmelisin.

Oyununuzu göstermeyi daha kolay olan görünmez döşemelere "küçültmek" bir seçenek. Bunun ana problemi tasarımınızı kısıtlayabilmesidir (örneğin, çapraz platformlar yapmak zordur) ve animasyonları çok şaşırtmış olabilir (ör., Karakterlerin ayakları aslında platforma dokunmuyor). Bu seçenek zelda benzeri macera oyunları için IMHO kullanabilir, ancak aksiyon oyunları için uygun değildir. İkinci bir seçenek oyun dünyasını bazı vektör temsili yoluyla temsil etmek ve bazı çarpışma tespitlerini uygulamaktır. Kişisel olarak ikinci çözümle giderim, özellikle de veri yapılarınızı erişim süresini en aza indirmek için nasıl düzenlediğiniz konusunda akıllı olursanız (ör., Karakterlerin geçerli konumunuza yakın olan dünya öğelerinin bir alt kümesine daha hızlı erişebilirsiniz).

Bu tür bir yetenek sağlayan 2D oyun motorları varsa, bunu yapan kesinlikle 3D motorlar olduğundan şaşırmam. Aslında, mevcut bir 3D oyun motorunu kullanmanın ve 2D oluşturmak için onu kullanmayı daha kolay bulabilirsiniz.

3

Dizzy oyun muhtemelen bir karo tabanlı sistem kullanıyor. Oyun dünyası, seviye boyunca tekrarlanan karoların bir paletinden oluşur. Her kiremit üç öğeye sahip olacaktır - ekrana çekilen görüntü, ana karakterin görüntünün parçalarını ve bir çarpışma haritasının arkasına geçmesine izin veren z-tamponu. Son iki monokrom görüntüler olarak uygulanacağına dair böyle: Bu monokrom görüntüler çok ram tasarrufu vardır saklanması

colour |  z map   | collision 
-------|--------------------|--------------- 
black | draw dizzy infront | collide 
white | draw dizzy behind | don't collide 

.

Döşemelerin sürüklenip bırakılabileceği bir ızgarayı görüntüleyecek bir seviye oluşturmak için bir düzenleyiciniz olur.

+0

tek renkli görüntü olarak saklamak için bir alternatif her kanal o pikselin ihtiyacınız bilginin biraz bir N-kanal görüntüsü, gibidir. Örneğin. Görünürlük, çarpışma ve diğer bilgileri küçük bir alana sığdırabilirsiniz, böylece tüm önemli bilgileri almak için tek bir arama vardır. –

1

Bu özel oyun, piksel mükemmel çarpışma ile karo tabanlı bir oyundur. Çatışma, kiremitin (parlaklık) renk baytında tek bir bit tarafından kontrol edildi ve aynı zamanda, rengin yanıp sönen bitini ayarlayarak döşemeyi de yansıtabilirsiniz.

fayans, ancak, sadece, hatta x yerleştirilen olabilir, y koordinatları (Bu çarpışma sistemi biraz yardımcı olmak için yapıldığını sanıyorum.)

çarpışma sistemi kahraman etrafında kalıcı bir çek içeriyordu. Kurallar kabaca şöyle: - Kahramanın altında çarpışma olmayan bir piksel satırı bulursa, kahramanı 1 piksel düşürdü. - Kahramanla bir çarpışma kesişiminde, kahramanı 1 piksel yükseltti. - Sola veya sağa hareket ederken, bu yönde kontrol eder ve eğer: - bir duvar bulursa (çarpışma yüksekliği 4'ten fazla piksel), bu yönde hareketi reddetme; - Bir tırmanabilir kutu (4 piksele kadar çarpışma yüksekliği) bulursa, bu yönde hareket etmesine izin verin. - Yeterli boşluk varsa, zıplamaya izin ver, diğer olası boş pozisyonda dur.

Bu basit kuralları birleştirirken, ekstra eğim olmadan keyfi eğimler bile yürütebilen çok yumuşak bir çarpışma anlaşması elde ettiniz.

Böyle bir oyun oluştururken, tek tek döşemeler kullanırdım, onları katmanlara (arka plan, ön plan vb.) Yerleştiririm ve bunları oluştururdum. Bir çarpma döşemesini belirten fayans özelliklerinden ayrı bir çarpışma haritası oluşturabilirim ve kahramanın çarpışması ve hareketi için bu ayrı haritayı kullanırdım. Bu demo benzer

: http://games.catevaclickuri.ro/