2D Seviye tasarımı / soruları düzenleme / kaydetme [kapalı]


12

SuperMario gibi basit bir 2D Sidescroller oyunu yapmayı düşündüm. Sonra oyunun seviyelerini nasıl kaydedeceğinizi, yükleyeceğinizi veya oluşturacağınızı merak ettim. Düşündüğüm ilk şey, seviyeyi temsil eden basit bir bloklu png çizmekti, oyuncunun özel bir rengi (belki lila) yürüyebileceği tüm parçaları yapmaktı. Ben çarpışma için kontrol böylece seviye bloklar veya fayans almak istiyorsunuz.

benim sorularım:
bunun için daha iyi yöntemler var mı?
bunun için profesyonel yöntemler nelerdir?
Fayans ve fayans tabanlı bir Harita editörü ile yapmalıyım? (nedense ben böyle sevmiyorum, ama sanırım onun en iyi yöntem ben kullanmak istiyorsunuz)
bir kiremit tabanlı düzeyde, nasıl yamaçları gerçekleştirmek istiyorsunuz ve nasıl çarpışmalar için onları kontrol ediyorum?

Yanıtlar:


10

2D MMO için http://www.mapeditor.org/ adresini kullanırız . Arka plan, arka plan dekorasyonu, oyuncularla aynı seviyedeki nesneler ve oynatıcının önündeki nesneler için birkaç katman kullanıyoruz. Ve çarpışmaları işaretlemek için sadece bir kırmızı kare içeren ek bir katman.

Bu yaklaşımın veya yazılımın bir 2D yan kaydırıcı için çalışıp çalışmadığından emin değilim ama buna bir göz atmaya değer olabilir.


+1. Harika bir araç. Ayrıca açık kaynak kodludur, böylece ihtiyacınız olduğunda genişletebilirsiniz.
Janis Kirsteins

bu gerçekten iyi bir araç, ben test ve benim oyun içine alma tek bir sorun yoktu.
Simiil

1
ok öyleyse şimdi solucanlardaki dünyalar gibi kiremit tabanlı olmayan seviyeler yapmayı bilmek istiyorum, ama sanırım bunu bir gün yeni bir soruda soracağım
Simiil

6

Ortak bir yol, örneğin sadece bir dizge olabilir

0,0,0,0,0,0,1,1,1,0,0,0,2

0, 1 üzerinde yürüyebileceğiniz bir blok olur sivri olabilir ve 2 bitiş çizgisi olabilir

bunu bir metin dosyası aracılığıyla okuyabilir (veya oyuna sabit olarak kodlayabilirsiniz) ve numarayla ilişkilendirilmiş göreceli bloğu çizebilir ve kurulum mantığıyla işlemek için mantık mantığınıza sahip olursunuz.

Açıkçası istediğiniz formatı seçebilirsiniz ve belki de 0, yürünebilir 5 blok çizmek anlamına gelir.

Bu başarmanın sadece bir yoludur.

http://www.smudgedcat.com/tut_tiledlevel.html bu bağlantı XNA çerçevesi kullanılarak c # içinde bir örnektir. size kaba bir fikir verecektir (eğim İÇERMEZ, ancak bu tür bir durumu tanımlamak için benzer bir şey kullanılabilir)

Saygılarımızla Mark


Bu "Excite Bike" ın Nintendo'daki özel haritalarını tam olarak nasıl yaptığını gösteriyor. vc.nintendolife.com/games/nes/excitebike
Stephen Furlani

5

alternatif metin

Birçok oyun Mappy adlı açık kaynaklı bir uygulama kullanır . Birden çok katmanı ve diğer özellikleri destekleyen kendi biçimine sahiptir. Muhtemelen çeşitli veri türlerini belirli bir döşemeyle ilişkilendirmek istersiniz.


Oyun içi editör yaklaşımının çok yaygın olduğunu düşünüyorum. Geliştirici Modu , çok popüler bir oyun olan Braid'in seviyelerinin nasıl tasarlandığının içsel bir hesabıdır. Oyun, seviyelerin inşa edilebileceği / değiştirilebileceği bir geliştirme moduna sahiptir. Seviyelerin kendileri grafik fayanslarla kaplı bir çarpışma katmanına sahiptir:

alternatif metin


Ben şahsen bunu tavsiye etmiyorum, ancak Allegro için bir 2D demo programı bazı 3D modelleme formatını kullandı ve özel bir oyun içi formata dönüştürdü. Avantajı, çok pürüzsüz, sürekli yüzeyleri modelleyebilmesiydi. (2D fizik tabanlı bir paten yatılı oyunuydu.)

Allegro demo oyununun seviye verilerini düzenlemek için, ücretsiz ve açık kaynak aracı Blender'ı kullanıyoruz. Buradan edinebilirsiniz:

http://blender.org

İşte nasıl çalıştığını adım adım talimatlar:

1) ademo_export.py dosyasını Blender komut dosyaları klasörünüze yerleştirin. Demo oyunu tarafından kullanılan .blend biçiminden .txt biçimine dönüştürecek olan ihracat betiğidir. Unix altında yol şöyle olacaktır:

~ / .Blender / komut / ademo_export.py

2) .blend dosya blenderını yükleyin. Unix altında, level.blend dosyasıyla dizinden şunu yazın:

blender -w seviye. parlak

(-W tercih ettiğim pencereli modları kullanmaktır.)

3) Seviyeyi düzenleyin. Menüde, altında

Yardım -> Komut Dosyaları Yardım Tarayıcısı -> Dışa Aktar -> Allegro Demo Oyun Seviyesi

bazı yararlı ipuçları bulacaksınız.

4) Dosyayı kaydedin (işlemeden önce sıkıştırmayı kullanın). Allegro Demo Oyun Seviyesi'ni seçerek dışa aktarma menüsünden .txt olarak dışa aktarın.

5) level.tdat kullanarak level.dat dosyasını güncelleyin, yeni seviye oyunda görünmelidir.


2

'Profesyonel' yöntemler, muhtemelen C # 'da, her şey üzerinde tam kontrol sahibi olacak çok ayrıntılı bir harita editörü içerecektir.

İki ana yaklaşım vardır; birinin yapılması daha kolaydır, ancak o kadar etkili değildir.

  • Bir harita düzenleyici kullanabilirsiniz; ya kendi yazınızı ya da nhnb bahsettiğim mapeditor gibi önceden var olanı bulmak. Kendiniz yazmak bir öğrenme deneyimi için iyi olurdu, ancak bitmiş bir ürün için çok fazla değil.
  • Bir metin dosyasına veri yazabilirsiniz. Bu daha basit, ama tekrar okumak kolay değil. Aynı şeyi harita düzenleyiciden de alabilirsiniz, ancak bu otomatik olacaktır. Bunun dezavantajı, özel fayanslar yapmak için belirli fayanslar (fayans türleri değil , fayans (13,45) gibi) gibi özel efektler ekleyememenizdir .

2

Benzer düşüncelerim vardı (yani oyunlara hobi - iş ve diğer taahhütler yazmaya geri dönün ...)

'Harita Editörü'nü oyunun / uygulamanın bir parçası olarak geliştirme rotasını ciddiye alırım.

Oyununuz kendi PC'nizin ötesine geçerse, Topluluk İçeriği harika bir nimet olacaktır.

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.