Python'da önemsiz olmayan 2d oyun geliştirmek iyi bir fikir mi? [kapalı]


10

2D uzay RPG geliştirmeyi planlıyorum ve seçim ile karşı karşıyayım: yazmak için en iyi dil nedir? Adaylarım C ++, Java ve Python. Açıkçası, etkileyici olması, gelişme hızı ve komut dosyası desteği eklemenin basitliği nedeniyle Python'da oyun yazmak istiyorum. Ama endişeliyim:

  • Python çok yavaş olmayacak mı? Oyun önemsiz olmayacak (örneğin Tetris gibi), evrendeki binlerce geminin görevlerini hesaplamak gerekebilir (ancak bu gemiler oyuncuya görünmezse AI'ları büyük ölçüde basitleştirilebilir). Elbette C'de bazı kritik parçalar yazabilirim, ancak bina ve konuşlandırmayı anında zorlaştıracaktır.
  • Diyelim ki oyun popüler oldu ve ben de süper star oldum. Windows kullanıcıları nadiren Python'a sahiptir (neyse ki py2exe var). Mac OS X'teki Python eski olabilir ve oyun karanlık istisna dışında çökebilir. Python'da oyun dağıtmak zor olmaz mıydı?
  • Python 3 için kütüphane eksikliği nedeniyle Python 2'de oyun yazmak zorunda kalacağım. Birkaç yıl içinde Python 3'e geçiş çok acı verici ve zaman alıcı olmaz mı?

İkinci sorunuz için, dağıtımı oldukça kolay hale getirmek için kullanabileceğiniz bir py2app olduğundan eminim.
thedaian

1
Bunu Python'da yapmaya karar verirseniz, "yavaş" parçalardan herhangi birini numpy kullanarak yapıp yapamayacağınızı görmek isteyebilirsiniz (ancak bu gerekli olmayabilir).
Brendan Uzun

Yanıtlar:


8

Python çok yavaş olmayacak mı? Oyun önemsiz olmayacak (örneğin Tetris gibi), evrendeki binlerce geminin görevlerini hesaplamak gerekebilir (ancak bu gemiler oyuncuya görünmezse AI'ları büyük ölçüde basitleştirilebilir). Elbette C'de bazı kritik parçalar yazabilirim, ancak bina ve konuşlandırmayı anında zorlaştıracaktır.

Söylemesi zor, ancak çoğu zaman performans için sınırlayıcı faktör, dil değil, bir geliştirici olarak yetenek / deneyimdir. EVE'nin Stackless Python kullandığını unutmayın ( ilgili bir sunumun indirilmesi için buraya ve buraya bakın ). Tam ayrıntıları hatırlamıyorum, ancak görünüşe göre sunucu kümelerinin çoğu Python çalıştırıyor . Bu nedenle, emin olmak için prototiplemenin iyi olmasına rağmen, ölçeklenebilirlik gereksinimlerinizi karşılayabileceğini hayal ediyorum.

Windows kullanıcıları nadiren Python'a sahiptir (neyse ki py2exe var). Mac OS X'teki Python eski olabilir ve oyun karanlık istisna dışında çökebilir. Python'da oyun dağıtmak zor olmaz mıydı?

Çoğu kullanıcı, oyunların hangi teknolojide yazıldığı ne olursa olsun, oyunlar için nadiren uygun ikili bağımlılıklara sahiptir (C bile bir çalışma zamanı bileşeninin dağıtılmasını gerektirir). Py2exe veya eşdeğeri aracılığıyla dağıtmak veya basitçe uygun bağımlılığı dağıtmak hayatın bir gerçeğidir. Asla en kolay şey olmasa da (çoğu kurulum teknolojisi ağrılıdır), bu yapılabilir ve dilden kaçınmak için bir neden olmamalıdır - dediğim gibi, büyük olasılıkla benzer bir şeyle başa çıkmanız gerekecektir.

Python 3 için kütüphane eksikliği nedeniyle Python 2'de oyun yazmak zorunda kalacağım. Birkaç yıl içinde Python 3'e geçiş çok acı verici ve zaman alıcı olmaz mı?

Bu hakkında pek bir şey bilmiyorum, Python 3'ü hiç kullanmamıştım. Ancak Python 2.X'in yakın zamanda yok olacağını sanmıyorum, bu yüzden oyununuzun ömrünün sizde olacağından şüphelenmiyorum bile 'd ihtiyaç değil mi eğer üzerinde geçişe olmayan bir konunun bu endişe bir şey yapar istiyorum.

Diğerlerinin söylediği gibi, projenizin dil seçimi yönü hakkında çok fazla endişeleniyorsunuz. Python oyunları geliştirmek için güçlü ve kullanışlı bir araçtır ve eğer biliyor ve beğendiyseniz onunla geliştirmelisiniz. Oyununuz hiç bitmezse ne kadar hızlı çalıştığı önemli değil çünkü dil hakkında çok fazla endişeleniyorsunuz.


Python 2.7'yi oldukça yaygın bir şekilde kullandıktan sonra, 2.7 ile yapamayacağınız python 3.2+ ile yapabileceğiniz çok fazla şey yoktur. Bu zamanla değişecek, aynı zamanda kütüphane desteği de değişecek. =)
Ken

14

İlk olarak, bir prototip oluşturmanız ve görmeniz yeterli. Bize bir şeyleri gerçekten değiştirmeyecek tüm detayları anlatmış olsanız bile.

Diğer iki noktaya gelince, at arabasının önüne atmış gibi hissediyorum. Sorunuzdan, oyun geliştirmede yeni gibi görünüyorsunuz, bu durumda gerçekten bir araç seçip onunla gitmeniz gerekiyor. Çoğunlukla eşit derecede yararlı araçların artıları ve eksileri üzerinde nitpick yapmak, gerçek zorluğunuzdan bir sapmadır: oyun geliştirme.


0

3 no'lu Python 2.x, en az 5-10 yıl daha distribütör desteği görecek. Oldukça yeni bir sürüm (2.7 veya muhtemelen 2.6) kullanıyorsanız, geleceğe yönelik kod (yeni stil nesnesi, her yerde unicode vb.) Yazarsanız geçiş yolu oldukça kolaydır. Acı çoğunlukla eski, kırık davranışlara dayanan şeyler içindir.


Sizi ısıracak eski davranışları belirlemeye yardımcı olmak için, oyununuzu çalıştırın ve python -3 filename.pyartık Python 3'te desteklenmeyen şeyler için uyarılar yazdıracak
spiffytech
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.