2011-01-02 13 views
7

Bazı PC oyunlarının geliştirilmesinde elimi denemek isterim. Python'un C++ ile karşılaştırıldığında yavaş olduğunu duyuyorum. Endişelenmem gereken bir şey mi?Oyun gelişimi için "yavaş" python nasıl?

Python'u C++ 'dan daha tanıyorum. Eğer bazı oyunlar yapmak istersem, C++ öğrenmeye zaman ayırmalı mıyım yoksa sadece Python'la uğraşmalı mıyım?

+5

Ne tür bir oyun? Sudoku veya 3d FPS gibi basit bir şey mi? –

+1

Ayrıca, bir takım oyunların * kullanın * python (veya LUA gibi başka bir "komut dosyası" dili) altında olsun. Yani, ağır grafik/render/fizik (CPU/GPU çatırdamasının gerçekten önemli olduğu), C/C++ ile yazılmış bir motorda yapılabilirken, bu oyun mantığı/mekaniği (ve genellikle) dağıtılabilir. –

cevap

5

Yirmi yedi.

Hayır, gerçekten, çoğu şey için yeterince hızlı ve gerçekten hıza ihtiyacınız olduğunda C'ye düşebilir. Profile iki kez, bir kez optimize edin.

+2

Yazım hatası - size katılıyorum, sadece "On yedi-yedinci" – Steve314

12

Çalışma zamanında yavaş gelişmekte ve yavaş olmakta bir fark var. İki kafası karışmamamaya dikkat edin.

Çoğu oyun zamanlarının çoğunu kullanıcı girdisini beklerken veya bir zamanlayıcıyı işaretlemeyi bekleyerek geçirir. Bu gibi durumlarda, çalışma süresi hızı genellikle çok az önem taşır ve daha da önemlisi geliştirme hızıdır - oyununuzu mümkün olduğunca hızlı ve mümkün olduğunca hızlı bir şekilde pazara sunma ve oyunu verilen bütçeyle olabildiğince iyi hale getirme. Bu tür bir oyun için yüksek seviye diller uygun bir seçimdir.

Yüksek performans gerektiren oyunlar için genellikle C++ gibi bir dilde yazılır, ancak komut dosyası hala yüksek bir dilde yapılabilir. Python tek seçenek değil. Lua muhtemelen oyunlarda bir betik dili için en popüler seçimdir.

+0

, "Brezilya'daki Rio de Janeiro'nun Papalık Katolik Üniversitesi" kitabını okumak beni hiç bir zaman tavsiye etmiyor, ama bu: yığınsız piton! – StefanNch

+0

@StefanNch İçtiğin her ne ise ... –

+0

@Steve amen ... hic! – StefanNch

4

Oyunun türü çok önemli. Büyük isim PC ya da konsol oyunları gibi yüksek performanslı oyunlar neredeyse sadece C++ alanının alanıdır.

Casual oyunlar, Python gibi daha yavaş gibi hemen hemen her dilde yazılabilir.

Eğer bu ilk kez basit bir oyun geliştirme ile ellerini ıslak bir garaj türü geliştiricisiyseniz, Python fazlasıyla yeterli olurdu. Eğer bir oyun geliştirici stüdyosunda çalışma isteğiniz varsa, C++ öğrenmeyi kesinlikle tavsiye ederim.

2

Çoğu üst düzey ticari oyun olmasa bile, günümüzde oyun mantığı için bir çeşit komut dosyası altyapısı bulunur. Oyun mantığı ile ilgili kararlar, çoğunlukla, örneğin, örn. oluşturma motoru.

BTW - Oyun geliştirme hakkında herhangi bir içeriden bilgi istemiyorum - bu endüstri dışında oldukça iyi bilinmektedir. Bazı oyun yayıncıları, kullanıcılara kodlama araçları ve oyun modları için diğer araçlara erişmelerine bile izin verdi - yıllardır.

Python'da kullanılmak üzere sarılmış bir oyun motoru bulursanız, aynı temel prensiplerle uğraşacaksınız. Python'da oyun mantığını yaz ve muhtemelen iyi olacaksın.

PyGame temel olarak, temel 2B oyunlarını destekleyen (çoğunlukla OpenGL, SDL'de 3D için kullanılabilir - PyGame için emin değil) Python için sarılmış bir SDL'dir.

Bu iyi bir başlangıç ​​noktasıdır. Oyun nesnelerini yöneterek ve blit döngüsünü çalıştırarak bir performans sorununa varabilirsin, çünkü sadece çok basit grafikler SDL tarafından işleniyor, ancak bunun çoğu şey için iyi olduğunu bulmalısın.

Ignacio'nun ima ettiği gibi - performans sorunlarınız olduğunu bildiğinizde daha önce değil, performans sorunları konusunda endişelenmeyin.Bazı performans sorunları önceden tahmin edilebilir, ancak Python'da gerçek oyun motorunu yazmıyorsanız, OK olmalısınız - IOW, erken optimizasyon tuzağına düşmeyin.

-4

C++, nesne yönlendirmesi için çok daha kolay. Bir şeyleri yaptığınızda, her şeyi takip etmek daha kolaydır, çünkü C++ için çoğu IDE daha çok projeye dayanmaktadır, IDLE tek dosyalara dayanmaktadır.

Sonuç olarak oyun geliştirme, kullanmakta olduğunuz şeyi kullanın. Demek istediğim, oyun geliştirme yapmak istediğiniz şey hakkındadır, daha iyi ne olurdu, çünkü daha iyi == ne istiyorsunuz.

İlgili konular