it-swarm.asia

Oyun programlama: C # veya C ++?

Gerçekten istediğim şey oyun programlaması yapmak. Yani soru şu ki, kendi kendine öğretilen programlamayı öğrenmek isteyen 18 yaşında, C # ve C++ arasında en uygun programlama dili nedir? (Unix'i umursamadığımı belirtmeliyim çünkü pencerelerin hala en çok kullanılan işletim sistemi olacağına inanıyorum)

C++ temellerini biliyorum, ama C # hakkında hiçbiri. C++, daha fazla öğretici kılavuzları, dll ve bunun gibi şeyler olduğunu biliyorum, C # olmasa da, öğrenmek ve bir program geliştirmek için tek bir kişi için kullanmak çok daha kolay, ama program şaşırmış olsa bile okudum kaynağını almak kolaydır.

İlk başta biraz temel odaklanmak istiyorum, sadece kendimi daha uygun hissettiği için C++ tercihim olduğunu söylemeliyim, ama yalnız çalıştığımı düşünmeliyim. Bu yüzden sevsem bile, yapılacak en iyi şey olmayabilir.

Gerçekten hangisi için gitmek emin değilim, çeşitli web sitelerinde çok konu okudum ve C # C++ daha popüler hale geliyor gibi görünüyor. Ama evet, bu da oyun programlama yapmak istediğimi belirttim. Bu yüzden sadece bulamadım çünkü sadece "C # .net bellek kullanımı nedeniyle C + değil" çünkü daha iyi bazı noktaları bilmek gerekir.

15
Chronix

Bir oyunu programlayarak C++ öğreniyorum. Bu çok keyifli bir deneyimdi. Sizleri de aynısını yapmanızı şiddetle tavsiye ediyorum!

Ancak şimdi bir C # programcısıyım, o zaman C # mevcut olsaydı çok daha verimli olurdum.

C # oyun geliştirmeyi öğrenmek için mükemmel bir seçimdir. Çerçevelerden kitaplara başlamak için ihtiyacınız olan her şeye sahiptir ve dil şaşırtıcıdır.

Ben gördüm onlarca kitap özellikle yazdı C # Oyun Programlama ve Microsoft dahil olmak üzere kendi çerçevelerini geliştirmek için çok çaba sarf ediyor DirectX ve [~ # ~] xna [~ # ~] .

[~ # ~] güncelleme [~ # ~] : b da ilginizi çekebilir. Miguel de Icaza 'dan gelen son blog yazısı.

GÜNCELLEME 2013-02-22 Microsoft XNA desteğini durdur planlıyor.

21
user2567

Çoğu oyun şirketi C++ kullanıyor olabilir, belki python betikler veya arka planda çalışan diğer diller. Direct3d şeyler C #) ama oyun programlama için ya, C++ ANA dildir.

Gerçi size adil bir uyarı vereceğim (ve bunun sizi caydırmasına izin vermeyin) ama 3D grafikler son derece karmaşık olabilir. Yeni Direct3D, eskisinden daha kolay hale getirdi, ancak yine de iyi bir matematik (oldukça kafa karıştırıcı olabilir) ve sadece kütüphanelerin kendileri kafa karıştırıcı olabilir.

İlk önce çok basit bir şeyle başlardım. 2d şeyler için SDL (Simple Directmedia Layer), 3D'ye girdikten sonra kullanımı çok daha kolaydır (yukarıdan aşağıya oyun gibi bir şey için). MS, DirectX SDK belgelerinde bazı Öğreticiler/Örnekler içerir, bu yüzden göz atmaya değer. Nehe öğreticiler biraz modası geçmiş olmasına rağmen hala güzel.

ama sorunuzu cevaplamak için, hepsi genellikle C++ ile yapılır.

12
user6791

Öncelikle bazı öncelikler belirlemek isteyeceksiniz. Önce bir oyun yapmak, daha sonra programlamanın daha gelişmiş yönlerini öğrenmek mi yoksa tam tersini mi yapmak istiyorsunuz? Her iki yaklaşımın da avantajları ve dezavantajları vardır, ancak her ikisi de benim görüşüme göre meşrudur.

Oyun yapmaya başlamak istiyorsanız C # öğrenmenizi tavsiye ederim. Zaten C++ temellerini biliyorsanız, o zaman C # seçmek hiç sorun olmamalıdır. C # aracınızın avantajları vardır. Dili öğrenmesi kolaydır (C++ ile karşılaştırıldığında) ve "yönetilen bir dildir", bu da sizin için otomatik olarak bellek tesisatını yaptığı anlamına gelir (C++ yeni başlayanların ve hatta yeni başlayanların bile) ). Ayrıca, Microsoft'un sizin için sıkıcı su tesisatının daha fazlasını yapan XNA Framework'e erişmenizi sağlar. Bu da sizi oyun döngüsü ve tasarımı gibi şeylere odaklanmanızı sağlar, işe koyma konusunda endişelenmenize gerek kalmadan (çok fazla). Doğru, tüm bu insta-sıhhi tesisatın ek yükü var, bu muhtemelen endüstri sınıfı 3D oyunlar yapmayacaksınız, ancak sadece oyun programlamaya giriyorsunuz, bu yüzden birkaç ilk denemede bir sonraki Halo yapacağınızdan şüpheliyim . :)

İşte başarılı bir XNA oyunu (Weapon of Choice) geliştiren adam tarafından yapılan bir ölüm ipi. C #/XNA kullanmanın, C++ kullanmak zorunda kalmadan geliştirme zamanından nasıl tasarruf ettiğini detaylandırıyor. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php

Bununla birlikte, en azından şeylerin arka planda nasıl çalıştığını bilmek için biraz zaman ayırmalısınız. Bir C++ programcısı bunu nasıl yapar? İstediğiniz şey oyun endüstrisinde temel almaksa, C++ 'da bir oyun yapmayı öğrenmek başka bir oyun geliştirme ekibine katılmayı kolaylaştırabilir (çoğu C++' da çalışır). Ancak hiçbir zaman C++ kullanmasanız bile, hangi dili kullanırsanız kullanın, dahili araçların nasıl çalıştığını bilmek sizi daha iyi bir programcı yapabilir.

8
System Down

Ham oyun programlama sizi oldukça soğuk bırakacak. C # veya C++ 'da düşük seviyeli grafik çağrıları ile çalışmak küçük bir kabustur ve 3D modelleri yalnız 2D modellerini oluşturma tekerleğini yeniden oluşturmak istemezsiniz. Kendi başınıza olduğunuz ve programlamayı öğrenmek istediğiniz için, en iyi seçeneğiniz sizi biraz öne çıkarabilecek bir çerçeve bulmaktır.

C-tabanlı dile aşina olduğunuz için önerim nity 3D 'a bakmak olacaktır. Ticari oyun geliştirici mağazalarından benimsemede ciddi bir artış yaşıyor ve bazı ilginç platform seçeneklerine (PC, Android, iPhone ve web çalışma zamanları dahil) sahip olmakla kalmıyor, aynı zamanda kullanımı çok kolay olan ücretsiz bir sürümü ve çok sayıda öğretici de var. konseptten uygulamaya nasıl geçileceğini göstermek için. En iyisi (IMO) desteklenen komut dosyası dillerinden biri C #.

3
Jacob Proffitt

Oyun geliştirme için C++ 'ı tanıtırım. Çeşitli artıları ve eksileri olan birkaç ekstra engel var, en iyi nedenlerden biri taşınabilirlik.

C # ile bu günlerde biraz daha geliştirebilirsiniz ve orada kesinlikle programlanmış bazı şaşırtıcı büyük motorlar var. Her ikisi de oyun programlama için iyi dillerdir, sadece Windows/Xbox platformlarını hedefliyorsanız, özellikle C # 'a yaslanmak için nedeniniz olacaktır.

Öğrenmeniz gerektiğini düşündüğüm dil, bazı GPGPU dili olan OpenCL veya CUDA olacaktır. Şahsen ben OpenCL'yi tercih ediyorum, çünkü daha fazla büyümeye ve daha fazla büyümeye benziyor, temelde sadece C tarzı. C++ veya C # için güzel bir sarmalayıcı olan OpenTK vardır.

Ben her zaman donanım hızlandırma ile Ruby oyun programlama gibi olacağını merak ettim ...

3
Garet Claborn

İki yıl önce bir sınıf için bir oyun yaptım (o zaman 18 yaşındaydım) ve C # 'da yaptık. Büyük C # programlarının genellikle büyük C++ programlarından daha yavaş çalıştığını gözlemlerken, C # da sizin tarafınızdan çok daha az çalışma gerektirir. Bellek yönetimi otomatik olarak yapılır ve ilk oyunun kapsamı için yeterince hızlıdır. (Oyunumuz tam teşekküllü bir 2D çok oyunculu Starcraft benzeri RTS.)

Yönetilmesi daha kolay olması gerektiği için C # için root alırdım. Ancak, profesyonel bir oyun geliştiricisi olmak istiyorsanız, sadece Microsoft platformlarında çalıştığını unutmayın. (Yine de, C #, C++ için iyi bir adım taşı olabilir ve iki dili yeniden öğrenmem gerekirse, önce C # öğrenmeye çalışırdım.)

2
zneak

Öncelikle çapraz platform olabileceğinden (elbette kodunuzu nasıl yazdığınıza bağlı olarak) ve ayrıca bellek yönetimi hakkında size daha fazla bilgi verdiğini düşündüğüm için C++'a oy vereceğim - çünkü gerek önemsiyorum. Ancak linux/unix'i umursamadığınız için, şu an için bellek karmaşıklığını dışarıda bırakmak istiyorsanız, neden şu anda C #'a odaklanıp C++ öğrenmiyorsunuz?

1
Mauren