C # oyun geliştirme konusunda bir geleceğe sahip mi?


18

Kısa bir süre önce MMO Minecraft'ın CVG.co.uk'deki son röportajdan Java ile güçlendirildiğini öğrendim. Röportajda Minecraft'ın kurucusunun bir Java kodlayıcısı olduğunu ve bir C veya C ++ kodlayıcısı olduğunu ve bu yüzden birbirleriyle uyumsuz olduklarını açıkça söyledi. Dolayısıyla gelecekteki projeler üzerinde işbirliği yapmak zor olacaktır.

Bu beni düşündürdü, Java bunu yapabilirse? Oyunlar veya ana akım oyun geliştirme söz konusu olduğunda, MS çok popüler C # dili ve .Net platformu için gelecek ne tutacak?



3
Her şey ihtiyacınız olan performanslarla ilgili, Minecraft yönetilen bir dilde iyi, ancak üst düzey grafik oyunları için C veya C ++ veya diğer yerel diller tercih edilir

19
Minecraft gerçekten bir MMO değil.
DeadMG

3
@ Guillaume86: Değişen kod şu anda yerel koddan daha iyi performans gösteriyor ve Jits her zaman daha iyi hale geliyor. Ayrıca, yönetilen diller çok daha sağlam programlar üretir. Sonuçta C ++, performans avantajını kaybeder ve (daha uzun geliştirme süreleri ve daha fazla maliyet anlamına gelir) içinde sağlam programlar yazmak çok daha zordur
Martin 15

4
Bir JIT, sıkı bir şekilde optimize edilmemiş ve ayarlanmış iç döngüler değil, kötü yazılmış yerel kodu yenebilir. C # ile bile olsa, bu hassas segmentleri gerçekten isterseniz C / C ++ 'da yazma seçeneğiniz vardır.
coderanger

Yanıtlar:


22

XNA'yı kontrol etmelisiniz . Windows, Xbox 360 ve Windows Mobile 7 için oyun oluşturmak için bir platform. Hepsi C # ve .NET'te.


11

5 yılı aşkın süredir profesyonel oyun geliştirmede çalışıyorum. Çoğu zaman C # 'ı neredeyse tamamen kullandım.

C # ve .NET yığını genel olarak sunucu tarafı teknoloji için mükemmeldir. C # ile yazılmış sunucu ile en az 4 MMO oyun üzerinde çalıştım. Ayrıca, Unity3D popülerlik kazandıkça, birçok tarayıcı VE mobil oyun C # gerektirir. XNA çerçevesini unutmayın: AAA konsol başlıkları için tercih edilen motor değildir, ancak onunla yapılan birçok harika oyun ve şu anda yapımda daha birçok oyun vardır.

Genel olarak, C # oyun geliştirmede kesinlikle bir geleceğe sahiptir.


bu eski bir soru, ama bir şey beni rahatsız ediyor. "sunucu tarafı teknoloji" - bununla tam olarak ne demek istiyorsun? .NET Framework kullanarak bazı Windows Server üzerinde çalışan bir WindowsService? Her zaman sunucuların c ++ ile yapıldığını ve unix işletim sisteminde çalıştığını düşündüm. Sadece merak ettim
Marshall

Evet, aynen öyle. Orada Windows üzerinde çalışan çok sayıda sunucu var - bu AFAIK sitesini çalıştıranlar da dahil.
Nevermind

bana geri döndüğün için teşekkürler. Sadece açıklığa kavuşturmak için - başsız Windows Hizmetleri veya WinForms gibi programlar (yerleşik yapılandırma ile veya benzeri bir şey olarak) "Windows üzerinde çalışan"?
Marshall

Başsız hizmet genellikle daha iyi bir fikirdir, ancak hiçbir şey sadece bir konsol uygulaması çalıştırmanızı engelleyemez. Veya bir GUI olanı bile, sunucuda adı geçen GUI'yi kullanacak kimse yok.
Nevermind

10

Daha önce de belirtildiği gibi, Mono C # 'ı çoklu platformlara getiriyor. Aynı alanda, Mono ve .NET için Cg, DevIL, FreeGLUT, GLFW, GLU, ODE, OpenAl, OpenGL, PhysicsFS, SDL ve WGL'ye erişim sağlayan çok platformlu bir kitaplık olan Tao'yu bulacaksınız . Açıkçası XNA (temel motor bileşenlerini doğrudan geliştiriciye sağlayan) gibi özellikler söz konusu olduğunda sağlam değildir; ama çok güçlü.

Bu nedenle, Microsoft kontrollü işletim sistemleri ve donanımlarının ötesinde çapraz platform kesinlikle mümkündür. Henüz bu kadar popüler indie oyunu bu yeteneği kullanmamıştı.

Daha önce de belirtildiği gibi, CNA ile birleştirilmiş XNA, bağımsız geliştiricilerin 360, PC ve Windows Phone 7'de yayınlamalarına izin verir.

Genel olarak, C # bir motor / oyun dili olarak canlı ve oyun geliştirmede iyidir.

Bir araç dili olarak her yerde kullanılıyor. EA, THQ ve şimdi Arkadium için C # kullanarak araçlar geliştirdim.


5

C # oyun geliştirmede sadece bir geleceğe sahip olmakla kalmayıp , bir hediyeye de sahip - XNA kullanılarak geliştirilen ve son zamanlarda piyasaya sürülen (ve iyi satan) bir oyun olan Magicka'yı kontrol edin . Ayrıca kazanan Dream.Build.Play girişlerine bir göz atın . C # oyun yapmanın uygun bir yoludur (şu anda tüm oyunlar için doğru seçim olduğuna inanmıyorum ).

Zaman geçtikçe bilgisayar oyun endüstrisinde daha popüler hale geldiğini göreceğiz, ancak hiçbir noktada C #'a ani bir geçiş beklemiyorum.


4

Java her zaman çok yönlü bir dil olmuştur ve insanların basit web tabanlı oyunlardan (Java eklentileri / tuval eklentisi ile GWT) tam 3D canavarlara ( JMonkey kasası ) kadar oyunları kodlama yeteneği her zaman olmuştur . Java'nın bu tür şeyleri yapabileceği gerçeğinin bir C # katili olduğunu söyleyemem, çünkü çoğu insan Java'nın bunu zaten yapabileceğini biliyor.

C #, Windows, Windows mobile ve Xbox ile Java'dan çok daha iyi bir şekilde bağlandığından hala popüler olmaya devam edecek (gerçekten tüm oyun geliştiricileri hedeflemeyi gerçekten önemsiyor, bu yüzden Java'nın sahip olduğu çapraz platform avantajı çoğunlukla kayboluyor.) oyun geliştirme açısından gerçekten de öne çıkan XNA da var.

Yani evet, eğer birisi bu rotadan gitmek istiyorsa Java, oyun geliştirme için mükemmel bir platformdur, ancak kesinlikle C # veya .NET katili yoktur.


4

Unity 3D'ye göz atın; Yüksek performanslı bir 3D motorda C # (ve JavaScript ve Boo) komut dosyaları.

Karışıma XNA ekleyin ve oyun geliştirme için C # kullanmak için birkaç harika platforma bakıyorsunuz.


Unity'nin ayrıca bir web oynatıcısı vardır, böylece tarayıcıda oynayabilirsiniz. Eklentinin flash veya java gibi büyük bir pazar penetrasyonu yok, ancak mümkün.
Michael Coleman

birlik için yay !!
Daniel Pendergast

1

Evet, C #, XNA çerçevesiyle bir geleceğe sahiptir. Çoğu hız nedeniyle C ++ tercih, ama C # artık o kadar yavaş değil ...


2
Hiç yavaş değil. Nadiren C ++ hızının yaklaşık% 70'inden daha kötüdür ve bazen daha da hızlı olabilir!
Noldorin

4
C #'daki CPU bağlı işlemler oldukça hızlıdır, bazı küçük performans hitleri pahasına kod güvenliğini büyük ölçüde artıran bazı ekstra kontroller yapar, ancak C ++ 'dan bellek tüketiminde ve yönetiminde çok daha kötüdür. Bu C # çok daha kolay ve daha az sızıntı eğilimli bir heck ama GC performans hit mutlak bir köpek olabilir.
justin.m.chase

Yine de Xbox360'ı hedeflerken dikkatli olun. Buradaki XNA çalışma zamanı, bazı önemli optimizasyonlardan yoksundur ve performansa duyarlı bölümleri yönetilmeyen koda kaydırmanızı önler.
drxzcl


1

Bu örnekte Java ile yaptığı şey, siteye giriş yapabilmeniz ve işletim sisteminin kullanıldığı tamamen şeffaf çok yaygın bir eklenti ile oynayabilmeniz için bir uygulama oluşturmasıydı. Düşüncesinin, Java'nın bu şekilde kullanıldığında oldukça şeffaf olduğunu ve hayranların yapmasını sağladığı hızlı yinelemeli geliştirme / test etmeyi kolaylaştıracağını hayal ediyorum. Bunu sadece XNA ile yapabileceğinize inanmıyorum çünkü genellikle test cihazının oyunun yanı sıra her şeyin yüklü olması ve bunun nasıl derlenip çalıştırılacağı hakkında genel bilgi sahibi olması gerekir.

Bu yüzden bundan herhangi bir paradigma kayması olmadığını söyleyebilirim, o sırada ihtiyaç duyduğu şeylere uygun ve açık bir şekilde iyi çalıştı.


1

Elbette, birçok programlama dilinin oyun geliştirmede bir geleceği vardır. Bilgisayar basında sıkça kullanılan bir yanlış ikilemdir, sadece bir tip X aracı olabilir ve herkes bunun olmasını ister.

Hiçbir şey gerçeklerden daha uzak olamaz.

C # ve Java oyunlarda uzun süredir kullanılmaktadır. C ve C ++ daha da uzun süredir var ve hala var. Lua, C / C ++ ile yazılmış motorla, inanılmaz derecede popüler olan bazı oyunlarda komut dosyası dili olarak kullanılır.

Açıkçası, hiçbir programlama dili Oyun Programlama Dili olarak diğer programlama dillerini sudan dışarı atmaz. Aslında, önde gelen oyunların motorları geliştirmek için yüksek performanslı derlenmiş bir programlama dilinden ve daha sonra UI ve şeylerin nasıl davrandığını betimlemek için daha üst düzey bir dinamik programlama dilinden oluşma eğilimi görüyoruz.

Şu anda anahtar performans. Kullanılan programlama dillerinden / kitaplıklarından herhangi biri uygulamada öngörülemeyen / kontrol edilemeyen duraklamalara neden olursa, o zaman bir aksiyon oyununda, bu yüzüne düz olarak düşecektir. Metin tabanlı bir macera oyununda bu doğru olabilir.

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.