Oyun yapmak için kütüphaneleri, motorları ve çerçeveleri değerlendirirken nelere dikkat etmeliyim?


10

Bir oyun yapacağım. Orada çok fazla oyun motoru, kütüphane ve çerçeve olduğunu fark ettim ve hangisini kullanacağım konusunda biraz sorun yaşıyorum.

Bazı programlama dillerinde zaten çok iyiyim, ama bilmediğim başka diller de var. Yeni programlama dilleri öğrenmeye karşı değilim, eğer yardımcı olacaksa, ama asıl amacım sadece oyunumu yapmak.

Motorları, kütüphaneleri ve çerçeveleri birbiriyle karşılaştırmak için hangi kriterleri kullanmalıyım, böylece hangisinin oyunumu bitirmek için en verimli olmamı sağlayacağına karar verebilirim?


11
Değeri için, iki aşamalı bir yaklaşım kullanıyorum: (1) keyfi olarak bir tane seçin; (2) karardan sonra pişman olur. Avantajı, ilk adımı hızla atlatmanızdır.
Cameron Fredman

2
Bu bir Topluluk Wiki sorusu olmamalı mı?
Marton

Bunun bir Topluluk Wiki sorusuna gönderilmesinden memnunum, ancak bunu yapmam için herhangi bir seçenek yok. Sorulardaki CW'nin bugünlerde sadece moderatörlü bir şey olduğunu varsayıyorum.
Trevor Powell

@Marton Neden bir CW olması gerektiğini düşünüyorsunuz?
MichaelHouse

1
@ Byte56 Çünkü bu soru her zaman ortaya çıkıyor, birisi oyun geliştirmeye başlamak istediğinde. Zaten çok sayıda çerçeve / motor var ve böyle genel bir "ne dikkate alınmalı" Wiki girişi gerçekten yararlı olacaktır. Bence bu sitede görünecek birçok "hangi motoru kullanmalıyım" sorularını cevaplayacaktır. İkinci ifade aslında bu tür soruları 'yapıcı değil' yapar.
Marton

Yanıtlar:


14

Bir araba veya bilgisayar seçmek gibi. Ya da bazıları çok önem verdiğiniz, bazıları umursamadığınız ve hatta istemediğiniz bazı özellikleri içeren hemen hemen her şey.

  1. İlgilendiğiniz özelliklerin bir listesini yapın. Örn. 2D / 3D desteği, aydınlatma, fizik, iyi bildiğiniz bir dil kullanır vb.
  2. Mevcut projenize göre bunları sizin için önemine göre sıralayın.
  3. Seçeneklerinizi araştırın ve her seçenek için destek özelliklerini proje hedeflerinize ne kadar iyi uyum sağladıklarına göre sıralamaya çalışın.
  4. Hedeflerinize en uygun olanı kullanın. Alternatif olarak ilk birkaçını seçebilir ve onlara bir test sürüşü yapabilirsiniz. Oyununuzun bazı basit özelliklerini uygulayın ve hangisini daha çok sevdiğinizi görün.

Bence bunların çoğu aslında ne istediğini bilmekle ilgilidir. Bu, yaptığınız oyun hakkında oldukça iyi bir fikre sahip olmanız gerektiği anlamına gelir. Bu, muhtemelen oyununuzu nasıl uygulayacağınız ve neleri içereceğine dair oldukça ayrıntılı bir plana ihtiyacınız olacağı anlamına gelir. Bonus olarak, tüm bu ayrıntılı bilgilere sahip olmak aslında oyununuzu tamamlamanıza yardımcı olacaktır. Bir planı takip etmek ve bir liste dışı şeyleri kontrol etmek, bir oyun hakkında fikir sahibi olmak ve sadece kod yazmaya başlamaktan çok daha kolaydır.


3

Öncelikle en azından oyununuzun ne olacağı ve neye ihtiyacı olacağı hakkında kabaca bir fikriniz olmalı. Oyununuzun fiziğe ihtiyacı olup olmayacağı gibi olağan sorular var. Ardından, çoğunlukla oyununuzun geliştirileceği ve çalıştırılacağı ortam ve oyununuzun ne kadar ticari olup olmadığıyla ilgili olan birbiriyle ilişkili sorular vardır.

  • Hangi platformları destekleyeceksiniz? Oyununuzu hangi platformda geliştiriyorsunuz?
  • Oyununuzu hangi programlama dillerinde uygulamak istiyorsunuz?
    • Bu, desteklemeyi düşündüğünüz platformlardan etkilenir.
  • Oyununuzda nasıl bir grafik, ses ve giriş olacak?
  • Oyununuz ücretsiz veya açık kaynak mı, yoksa ticari mi?
    • Açık kaynak kodluysa, daha sonra ya oyununuzla mı yoksa ilk oyununuzun motorunu kullanan başka bir oyunla mı ticari yapmak istersiniz?

Yalnızca Windows olacaksanız, DirectX ve C # tabanlı kütüphaneler güçlü adaylardır. Çok platformlu olmak istiyorsanız OpenGL ve C / C ++ tabanlı kitaplıklara veya oyununuz 2D ise ve Adobe'nin araçlarını satın alabiliyorsanız Flash'a bakmak istersiniz. Platformunuz gibi, programlama diliniz de mevcut kitaplıklarınızı etkileyecektir. C ++ ile yazılmış bir program Java kütüphanesini çağırmakta zorlanır.

Oyununuz ticari ise Unity gibi bir motor satın almayı düşünebilirsiniz. Oyununuz ücretsiz veya açık kaynaksa, aynı zamanda açık kaynak olan veya en azından ticari olmayan projeler için ücretsiz olan özgürlüklere odaklanmak isteyeceksiniz. Açık kaynak kütüphaneler ticari projeler için de elbette faydalıdır. Açık kaynaklı kütüphanelere bakarken lisanslarını kontrol ettiğinizden emin olun. Bazı lisanslar, kitaplığı nasıl kullandığınıza bağlı olarak kendi yazılımınızın bazı bölümlerini açık kaynak haline getirmenizi gerektirir. Kendinizi açık kaynak kitaplıklarla sınırlamak, hangi kitaplıkları kullanabileceğinize başka bir sınır getirecektir.

Bir kütüphaneye bakarken, gelişiminin ve topluluğunun ne kadar aktif olduğunu kontrol ettiğinizden emin olun. 1999'dan beri güncellenmemiş bir kişinin üniversite web sayfasında barındırılan ve tanınmış ve aktif olarak birden fazla kütüphaneye sahip bir kütüphaneye güvenirim.

Son bir soru, özellikle bu ilk oyun projeniz değilse, oyununuzun kendiniz yapmaya çalıştığınızda mücadele edeceğinizi bilmeniz gereken yönleri olup olmayacağıdır . Çünkü bu yönler özellikle kütüphane bulma adaylarıdır. Oyununuz çarpışma algılamaya ihtiyaç duyuyorsa ve çarpışma algılamayı kendiniz uygulayamayacağınızı biliyorsanız (yapamadığım gibi), bir fizik motoru almayı düşünün ve içindeki çarpışma algılama özelliklerini kullanın.


1
  • Kütüphane ihtiyacınız olanı yapıyor mu?
  • İhtiyacınız olanı yapmak için uzman mı? Ne kadar dağınıklık var?
  • Nasıl tasarlanır? Gördüğün zaman kusmak ister misin? Evet ise, muhtemelen hem sağlığınız hem de akıl sağlığınız için en iyi seçim değildir.
  • İhtiyaçlarınız için yeterince esnek mi? Kodunuzun yarısını onunla yazdıktan sonra kütüphanenin çalışmadığını fark etmek iyi değildir.
  • Kütüphanenin gelecekteki kanıtı nedir? Geliştirici zaman içinde özellikler ekliyor mu? Bir şeyleri tamir ediyor mu? Bir şeyler geliştiriyor mu? Bu, oyununuzun gelişiminin birkaç yıl sürmesi muhtemel ise oldukça fark yaratabilir. Bir ay içinde sahip olacağınız küçük projeler için o kadar önemli değil.
  • Boyut uygun mu? Küçük projeler için, oynatıcının 20 MB veya 200 MB indirmesi gerekip gerekmediği büyük bir fark yaratabilir. Büyük projeler muhtemelen ara katman boyutunun çok az fark yaratacağı kadar büyüktür.

1

İnsanların yorumladığı oyuna özgü özelliklere ek olarak, bazı genel soruları da göz önünde bulundurmalısınız.

  1. destek yapısı - oyun motoru mükemmel olsa bile, belki de destek çok pahalıdır veya yoktur.
  2. Öğrenmek ne kadar kolay - çok büyük bir şey istemeyebilirsiniz, çünkü öğrenme zamanı engelleyici olabilir.
  3. gelecekteki planlarınızı kapsıyor - şimdilik mükemmel bir motoru öğrenmek için zaman harcamak istemeyebilirsiniz, sadece yeni bir motoru bir sonraki proje için sıfırdan yeniden öğrenmek için. Ya da belki bunu istiyorsun.
  4. lisans - kapalı kaynaklı bir oyun yapıyorsanız, motor lisansının açık kaynak yapmadığından emin olun.

0

Kütüphaneleri, çerçeveleri, motorları ve SDK'ları değerlendirmek ve en iyisini seçmek için kısa bir hile sayfası

  • Kütüphaneler, çerçeveler, motor SDK'ları ve benzerleri sizin için sorunları çözmeyi amaçlayan veya sorunları çözmenize ve belirli gereksinimleri karşılamanıza yardımcı olan araçlardır.
  • Değerlendirme, hangisinin en çok gereksinimi karşıladığını bulmak anlamına gelir.

Bu nedenle, değerlendirmeye başlamadan önce hangi senaryoda olduğunuzu ve hangi gereksinimlere sahip olduğunuzu / sahip olmak istediğinizi netleştirmeniz gerekir, çünkü bu değerlendirme tarafından cevaplanması gereken sorulardır.

Senaryo, gereksinimlerin nereden geldiğini tanımlar (bir gereksinimin neyin hangisinin neyin olmadığına karar verir).


Tipik senaryolar:

En hobbi proje senaryosu

Kendi başınıza veya bazı arkadaşlarınızla birlikte (belki de ilk) oyununuzu oluşturmak istiyorsunuz. Mükemmel, her şeye kendi başınıza karar verebilirsiniz ve sadece temel teknik kararlar ve teknik gereksinimlerle sınırlısınız (bir mobil oyun, bir PC oyunu, bir konsol oyunu, bir web oyunu, ....). Ne istersen karar verebilirsin.

Örtük gereksinimler, belirli bir şeyi (bir dil, belirli bir çerçeve / motor) öğrenmek isteyebileceğinizdir

Öğrenci senaryosu

Gereksinimler öğretmeninizden gelebilir. Bu durumda sahip olduğum tipik gereksinimler: oyunun bazı fizik unsurlarına ve çok oyunculu ağ desteğine sahip olması gerekiyor. Veya C ++ ile yazılmalıdır. Böylece değerlendirme kolaylaşır. C ++ 'da kod yazmanıza izin veren ve zaten bir ağ ve fizik motoru içerebilen bir oyun motoru arıyorsunuz.

Daha kötü (gerçek hayat) bir gereklilik: her şey sıfırdan yazılmalıdır (ancak kütüphanelerin kullanımına izin verilir). Dolayısıyla hiçbir editör kullanılamaz (örn. Unity3D). Yani motorları / SDK'ları değil, kütüphaneleri arıyorsunuz.

Bağımsız oyun senaryosu

Daha sonra oyunla para kazanmak istiyorsunuz. Bu nedenle, bir şekilde satmanız gerekecek, bu da oyununuzu satmak istediğiniz mağazadan hangi gereksinimlerin geldiğini kontrol etmenizi sağlar.

Java oyunlarına, HTML5 oyunlarına izin veriyor mu?)

Belirli kitaplıkları dahil etmenizi gerektiriyor mu (evet ise, bu kitaplıkların hangi dillerde mevcut olduğu)

Google Playstore, oyununuzu Android oyunu olarak yazmanızı gerektirir, Apple AppStore ise oyununuzu iOS uygulaması olarak yazmanızı gerektirir. Veya çok platformlu bir motor seçmek zorundasınız.

Profesyonel senaryo

Yalnızca gereksinimler sağlayan bir mağazanız değil, büyük olasılıkla kendi gereksinim immaginasyonlarına sahip bir yayıncı veya müşteriniz vardır. Bu senaryoda ayrıca daha büyük bir çalışan geliştirici ekibiniz olacaktır. Beceri setlerine bağlı olarak yeni gereksinimler ortaya çıkar (programcılarımız sadece c ++ yazabilir, böylece yeni bir şey öğrenmek için (çok) zamana ihtiyaç duymadan saf bir Java / Android oyun motoru kullanamayız).

Bu senaryo için detaylara girmiyorum, bir iş ekibi oluşturmayı ve bir müşteri / yayıncı bulmayı başardıktan sonra, şeyleri değerlendirirken ne aradığınızı zaten biliyorsunuz.


Bir hobbiest veya indi olduğumda ve başka hiç kimse bana söylemediğinde, taleplerimin ne olduğuna nasıl karar verebilirim?

Hedefleriniz ve oyununuz hakkında kendi kendinize soru sorun.

  • Oyunum ne olmalı? mobil, pc, web (html / Js), hangi denetleyicileri kullanacağım (dokunmatik ekran, jiroskop, oyun pedi)

  • Oyunumdaki yenilikler ve diğer oyunlarda neler var. Diğer oyunların da sahip olduğu bu bölümler (oluşturma, ses, giriş işleme) bulabileceğiniz en çok (oyun motorları) araçlar tarafından yapılacak veya kendi oyununuzda veya oyun motorunuzda bu işlevselliğe sahip kütüphaneleri paketlemek kolaydır.

  • Projemin boyutu nedir: kızgın kuşlar mı yoksa skyrim mi? Angry Birds neredeyse her araçta yapılabilir ve skyrim (varsayılan) yıllarca ek kişiselleştirme ile yüksek performanslı araçlarla sınırlı olacaktır (yüksek performanslı arazi motorları kolay değildir)

  • Tek amacım sadece bir oyun yapmak mı? Evet? mükemmel, Unity, Unreal gibi son derece gelişmiş bir şey kullanabilirsiniz ... kullanışlı bir editör ve size öğreticiler sunan ve sorularınızı cevaplayan büyük bir topluluğa sahip. Kafes yükleme, kendi matematik işlevlerinizi uygulama gibi düşük düzeyli görevleri ele alma yükünü ortadan kaldırır ....

  • Hedefim belirli bir şey öğrenmek mi? Evet? Ne öğrenmek istiyorsun?

  • Hangi dili seçmeliyim? Eğer hedef hala oyununuzu bitirebilmekse sizin / ekibinizin en iyi bildiği birini seçin? Belirli bir dili öğrenmek istiyorsanız, o dilde bir araç seçersiniz.

  • X aracı oyunum için yeterli performansa sahip olacak mı? Belki asla bilemezsin. Büyük üretimlerde bile, optimizasyon ve parlatma aşaması uzun zaman alır ve bunu yapmak için büyük bir fırsattır. Performans sorunlarını vurduğunuzda performansı önemsemeye başlayın. Sınırlarına ulaşmadıkça aracın nasıl performans göstereceğini bilmiyorsunuz. Araçlar geliştiricinin web sitesindeki her şey sadece kaba bir tahmindir. Yıllarca süren araçları değerlendirdikten sonra, geliştiricilerin web sitesinden bir şeylere inanmayı bıraktım.


Bu tür soruları yanıtlamak sizi gereksinimlere getirir. Değerlendirme, bir araç listesi bulmak ve aracın sunabileceği veya yapamayacağı TEST (sadece ana sayfayı okumak değil).


Gereksinimler taşa kesilmez, dinamiktir. Gelişim sırasında gelip gidecekler. Oyunun fizik ihtiyacı olup olmadığı, örneğin tasarıma bağlıdır. Tasarım değişirse gereksinim de değişebilir.

Sahip olduğunuz gereksinimleri alın ve başlayın. Değişen gereklilikler, proje büyüklüğünden ve deneyim seviyesinden bağımsız olarak acı çekmenin, ahm, mutlu geliştiricilerin günlük ekmeğidir.


0

Buraya git .

Rağmen sayı orada oyun motorları, aslında yok birçok seçenek var.

  1. lisans kısıtlamaları. Bazı motorlar, örneğin iOS için derlemek için ek bir ücret talep etmek amacıyla kullanılan Unity gibi büyük lisans ücretleri ödemeden ürününüzü serbest bırakma yeteneğinizi engelleyecektir (örneğin, bu 2016'da değişti )
  2. platformlar. Birden çok platformu hedeflemeyi önemsiyor musunuz? Hangileri?
  3. 2D mi yoksa 3D mi? Bazı motorlar 2D'ye hitap eder.
  4. Fizik mi gerekiyor? Bazı motorlar fizik sağlar
  5. FPS, RTS? Oluşturduğunuz oyun türü için uzmanlaşmış bir motor kullanmak akıllıca olabilir.
  6. Açıkçası en sevdiğiniz dilde çalışmak istersiniz. C sever misiniz? O zaman Allegro'yu kullanma!
  7. Büyük bir tasarım deseni misiniz, OOP hayranı mısınız? Tanınmış OGRE kalıpları "aşırı kullanır"
  8. Aktif gelişme? Kanama kenarı özelliklerinin (DX11 / OGL 4) kullanılabilirliği ile gelişimi birkaç yıl önce azalan bir motorun stabilitesi arasındaki dengeyi düşünmelisiniz.
  9. Kullanıcı tabanı? Geniş bir kullanıcı tabanı genellikle daha iyi forumlar anlamına gelir, bu nedenle sorularınızı cevaplamak daha kolaydı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.