2D oyunları programlamanın en kolay ve eğlenceli yolu mu? Flaş? XNA? Başka bir motor mu? [kapalı]


20

Bu, bir hobici oyun programcısı için boş zamanlarını bir oyun yaparak tatlandırmanın en keyifli yolunu araştırmamı detaylandıran bir yazı.

Gereksinimlerim: Önce Flash'a baktım, birkaç küçük oyun yaptım ama performanstan şüpheliyim. Yüzlerce ünitenin aynı anda savaşması, patlamalar ve animasyonlar dahil oldukça büyük bir strateji oyunu yapmak istiyorum. Ayrıca yakınlaştırılabilir haritalar. Adobe'nin Flash için yeni bir 3D API'sı olduğunu gördüm, ancak bunun 2D performansını da iyileştirip iyileştirmediğini bilmiyorum, MAX10 oturumlarında bu soru ile ilgili hiçbir şey bulamadım. Flash'ın büyük 2D oyunları kolayca yapmak için iyi bir teknoloji olduğunu söyleyebilir misiniz? Actionscript'i çok seviyorum ve Flash'ta her şeyin ne kadar kolay olduğunu seviyorum. Daha da kolaylaştıran birkaç motor mevcuttur.

Bunu sadece eğlence için yapıyorum ve uygun animasyon / parçacık editörleri varsa ve kullanacağım motor birden fazla platform için mevcut olsaydı daha da iyi olurdu. (böylece oyun bittikten sonra daha fazla kişi oyunumu oynayabilir). Birçok mobil platformda da kullanılabilir olmasını istiyorum. (çünkü bir sebepten dolayı dokunmatik girişi seviyorum)

XNA çerçevesini oldukça iyi biliyorum, ancak bunun için iyi bir motor yok ve sadece Windows'da çalışacak, bu da büyük bir dönüş. Daha da büyük olanı, oyunu birine her vermek istediğinizde yeniden dağıtılabilen XNA'yı yüklemeniz gerektiğidir. XNA kullanırsam, tüm araçları kendim yapmak zorunda kalırdım ve muhtemelen bunları WPF ile yapmak zorunda kalırdım. (Adobe AIR ile araçlar yapmak isterdim, ancak maalesef görüntü işleme vb. İçin API'ler Flash'ta XNA / WPF'de olduğundan çok daha kötü.) Şimdi, kendi motorumu yapabileceğimin farkındayım bu platformların her birini destekliyor, ancak açıkçası API'lerle çok fazla çalışma olacak. Sonuçta, bir oyun yapmak istiyorum, motor değil.

Yani soru şu: 2B geliştirme için kullanabileceğim bir çapraz platform (ücretsiz veya geliştirilmesi ücretsiz mi?) Var mı? Tercih ederim: C #, Actionscript. Ben araç ortalamanın üzerinde ise c ++ kullanarak sakıncası yok, ama orada böyle bir şey olduğundan çok şüphe. Lütfen bana yanlış olduğunu kanıtlayın :) Yani özet: Flash kullanmak istiyorum, ama yeterince iyi ölçeklendirilip bilmediğini bilmiyorum. Ben bir betik değilim, uygun bir IDE içinde çalışabileceğim bazı gerçek API'ler istiyorum.

Sadece bilgi için, birkaç alternatife baktım, aslında uzun zamandır arıyorum. Sonunda bir karar vermem için bana çok yardım ederdin.

  • Özellik açısından Flatredball motoru ideal olacaktır. Ama aletlerini denedim ve açıkçası korkunçlar. Kesinlikle kullanılamaz, kesinlikle kendiminkini yapmam gerekecekti. API'larına bakmadım, ancak araçları çok kötüyse, daha fazla bakmaya meyilli değilim.

  • Unity3D. Bu oldukça hoş, ama gerçekten 3D'ye ihtiyacım yok ve oldukça ... öğrenilecek çok iş var. Ayrıca farklı platformlar için kullanmanın çok pahalı olduğunu ve sadece komut dosyası aracılığıyla kodlayabildiğimi sevmiyorum. Her platformu ayrı olarak satın almalısınız. Editör kullanılabilirliği ortalama, ürün genel olarak çoğu amaç için yeterince iyi, ama kendim öğrenmek aşırıya kaçacaktı.

  • Shiva 3D. Yeterince iyi görünüyor, ama tekrar: Gerçekten 3D'ye ihtiyacım yok. Editör kullanılabilirliği bence Unity3D'den biraz daha kötü ve bana programlamaya nasıl başlayacağım açık değildi. Kodlama için C ++ gerektirir, bu yüzden bu da olumsuz. Eğlenmek istiyorum ve c # eğlenceli;)

  • SDL. Açıkçası, hala tüm bu farklı SDL uygulamalarına geçmem gerekiyordu. Ve OpenGL tarzı programlamayı sevmiyorum, sadece çirkin. Ve c ++ gerekir, bazı sarmalayıcılar olabilir biliyorum, ama sarmalayıcılar kullanmak sevmiyorum, çünkü ...

  • Irrlicht. Birçok özellik, ancak destek düşük gibi görünüyor ve meraklıları hedefliyor. C # bağları tekrar tekrar düşüyor. Ben bir motor meraklısı değilim, sadece bir oyun yapmak istiyorum. Bunun Irrlicht ile olduğunu görmüyorum.

  • Ogre3D. Çok fazla iş, sadece bir grafik motoru. Ayrıca çoklu platform desteği ve c ++.

  • Torque2D. Kullanmanın bir maliyeti var ve destek ve dokümantasyon hakkında çok iyi şeyler duymadım. Ayrıca her platform için ekstra maliyet.


FRB SDK Araçları kötü (özellikle Tutkal, kullanmıyorum) ama bunları yazmak için size zaman kazandırır ve kendi araçlarınızı yazmak bir zorunluluksa dosya formatları basittir. API o kadar da kötü değil ve bu kapsam için uygun görünüyor, şu anda en büyük sorun PC ve Xbox için bir XNA 4.0 portunun olmaması. Ayrıca, XNA redist ve diğer önkoşullar kurulumun bir parçası olabilir - ve clickonce kullanarak otomatik güncelleme ve dağıtım hazır olabilir.
Oskar Duveborn

Demek istediğim, onları kullanmam. Bu nedenle araçlar işe yaramaz. Onlar kötü UI / genel hissediyorum yanı sıra beni çökmesini devam ediyor. Belirli bir özelliği kaçırdıkları ortaya çıkarsa ne olur? Açık kaynak olsalar bile, bu kod tabanlarının yakınında hiçbir yere gitmek istemezdim. Sert görünüyor, ama gerçekten sadece rahat bir programlama istiyorum ve FRB hayal kırıklığı meyveli kek gibi görünüyor. Düşünün: Parçacık düzenleyicisini denedim ve bir görüntü dosyasını açma düğmesini bile bulamadım. Muhtemelen her şeyin üzerine inşa edildiği en önemli tek özelliktir.
Maxi

Tam bir cevap değil, ancak Flash düşündüğünüzden daha iyi ölçekleniyor. Ekran yığınını kullanmak yerine bir bitmapdata tuvaline yapışırsanız ve başka basit optimizasyonlar yaparsanız, daha saf bir çözümle göründüğünden çok daha fazlasını sıkıştırabilirsiniz.
Gregory Avery-Weir

Parçacık Düzenleyicisi'ndeki listitem, basitçe yayıcı özellikleri panelinde "doku" olarak adlandırılır ^^ Tüm araçlarda kodlayıcı olmayan içerik oluşturucuların yardımcı olabileceği öğreticiler vardır. Ancak evet, arayüzler etkileşim tasarımı açısından gerçekten korkunç.
Oskar Duveborn

1
XNA'nın yalnızca Windows olmasıyla ilgili olarak, XNA'nın API'sının MonoGame adlı, Windows olmayan her türlü platformda çalışacak açık kaynaklı bir uygulaması var: cocoa-mono.org/archives/400/… Ben kullanmadım ama var.
chaosTechnician

Yanıtlar:


10

Pygame benim favorim. Python'da programlama hızlı programlayacağınız ve 2D şeylerin hızlı olduğu için pygame eğlenceli olacak ...


Bir bonus olarak, 3d dünyaya taşınmak istediğinize karar verirseniz, GL'yi yılan derisine saran bir pigme vardır;)
Wayne Werner

9

LÖVE'yi bir süredir kullanıyorum ve çok beğendim. Lua öğrenmek zorunda kalacaksınız, ama yine de öğrenmek eğlenceli küçük bir dildir. Forumdaki insanlar son derece yardımsever.


Performans nedir? hangi IDE'yi kullanabilirim?
Maxi

1
Bunu ikinciyim. Global Game Jam oyunumuz için Lua ve LOVE kullandık ve fevkalade çalıştı. Çok sayıda harika açık kaynak kütüphanesini tek bir ortak API altında bir araya getirdiler ve her sürüm daha da iyi hale geliyor. Performans harika (Lua hızlı yanıp sönüyor!) Ve FBO'lar gibi birçok gelişmiş OpenGL özelliği ortaya çıkıyor, bu da birçok 2D motor için nadir. Tüm bu iyiliğin yanı sıra, platformlar arası (Win / Mac / Linux). Kesinlikle iyi bir görünüm verirdim.
Bob Somers

1
@Maxi: Sevgiyle sadece bir editöre ve yazabileceğiniz bir konsola ihtiyacınız varlove .
egarcia

2
Ruslar bununla bir oyun yaptı mı? Rusya'dan Sevgilerle: P
Bart van Heukelom

5

Flash ile gitmeye karar verdim. Yeni Molehill 3D API, 3D uzayda 2D spriteları çok daha hızlı çizmek için kullanılabilir. Flash'ın daha önce açıkladığım oyun için yeterince hızlı olmaması için hiçbir neden göremiyorum. Araçları kendim inşa etmem gerekecek, ama muhtemelen bunu yapmam gerekecekti. Araçları oluşturmak için AIR kullanmak da bence oldukça düzenli. Flash, serin platformlarla da en geniş erişime sahiptir.



1
Flash, muhtemelen iyi bir seçimdir, çünkü orada flaş için çok iyi (olgun) araçlar ve kütüphaneler vardır. Molehill API, CPU'dan ağır bir yük alacaktır (daha önce her şey CPU tarafından işleniyordu). Oyunun dağılımını düşünmelisin. Flash genellikle tarayıcı tabanlı bir oyun anlamına gelir ...
bummzack

Mobil oyunlara dikkat edin, flaş ve cep telefonları çok kötü bir kombinasyon.
Gustavo Maciel

" Ve mobil oyunlara dikkat edin, flash ve cep telefonları çok kötü bir kombinasyon. " @Gtoknu, neden?
NemoStein

@NemoStein Mobil cihazlarda çalışan bazı flaşları youtube'da aramaya çalışın. Ayrıca, adobe android için flash geliştirmesini bıraktı ve iOS için flaş yok.
Gustavo Maciel

4

SFML'yi deneyin


Faydalı olsa da, SFML sadece bir grafik / ağ / ses API'sidir, tam özellikli bir oyun motoru değildir (oldukça yakın olmasına rağmen).
a_m0d


2

Actionscript'i beğendiğinizi ancak çapraz platform aradığınızı söylediğinden, HaXe + NME'ye bir göz atın . HaXe , Actionscript'e benzer bir dildir, ancak Flash, Javascript, PHP veya C ++ ile derlenebilir. NME, Flash'ın grafik kitaplığına benzer bir kitaplıktır, ancak diğer platformlarda da çalışır. Bu kombinasyon birçok farklı platforma derlemenizi sağlar.

Henüz NME kullanmadım ama HaXe + Molehill (sadece birkaç gün önce) ile yaptığım ilk test, dizüstü bilgisayarımda 10.000 16x16 dönen sprite oluştururken 60 fps üretti. Sadece birkaç gündür HaXe kullanıyorum ve sizin için doğru olandan emin olmak için yeterli deneyime sahip değilim, ama bir göz atmaya değer.


1

Ben şahsen Allegro 5 hayranıyım , ama bu bir C API. Yine de ve hepsi, yolunuzu çeken ve şunlara erişim sağlayan basit bir API'dir:

  • 2D grafikler (platfom'a bağlı olarak OpenGL veya D3D ile desteklenir)
  • Ses
  • Yazı tipleri (hem bitmap hem de TTF dahil)
  • Giriş (fare ve klavye)
  • PhysicsFS (dosya sistemi sanallaştırma)
  • Görüntü yükleme

5.1 de gölgelendirici desteği ekleyecektir.

SDL 1.3 de oldukça iyi şekilleniyor. Sam, büyük API değişiklikleri yapmak için yapılmış gibi görünüyor ve zaten olan şey oldukça kararlı. Yine de ... henüz beta bile değil ve Allegro 5.0 yayınlandı.

Daha karmaşık ve gelişmiş oyunlar için Allegro 5'i bir tür fizik kütüphanesiyle ( örneğin Box2D ) eşleştirmek isteyeceksiniz . Yine de, Allegro 5, C veya C ++ standart kütüphanesi ve kendi kodunuzdan başka bir şey olmadan çok uzun bir yol elde edebilir ve eğlenebilirsiniz.

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.