Oyun geliştirmede C ++ “hala” tercih ediliyor mu? [kapalı]


17

Ben bir 2D Oyun Programcısıyım. İyi olduğum bazı programlama dilleri C, Java, C #. Ben de Actionscript 2.0,3.0 ve bazı javascript biliyorum. 3D Oyun programlamayı öğrenmekle ilgileniyorum. Araştırmadan çok farklı oyun geliştirme forumları ve makaleler okuyarak ve okuyarak biriktirdim. Çoğu programcı C ++ tercih eğilimi fark ettim Ayrıca bir online oyun programlama öğretim kursu başlangıç ​​kursu olarak C ++ ve Visual C ++ öğretmek için tercih fark ettim. Ben 3d oyun programlama için C ++, C # ve Java "gücü" farkını bilmek istiyorum bu soruyu soruyorum nedeni.

Ayrıca zaten 2d oyun programcısı için iyi 3d oyun programlama makalelerine bağlantılar içerir .

PS: IMHO, ben de C ++ şifreli buluyorum.


Bunu da çok anlıyorum. Bu yüzden toplulukta profesyonel bir oyun programcısının hangi becerilere sahip olması gerektiği hakkında bir soru sordu. Oyun geliştirmek için daha iyi bir dil olarak C ++ 'a odaklanan bazı güzel cevaplar aldım. check .. gamedev.stackexchange.com/questions/5552/…
GamDroid

@GamDroid: Profesyonel bir 2d oyun programcısı yapan şeyi bilmekle ilgilenmiyorum. Visual C ++ hakkında bilmek ve neden bu kadar konuşulur ilgileniyorum.
Vishnu

2
Btw: Visual C ++? Sadece düz C ++ değil mi?
hız

Visual C ++ düzenleyicisi serin, ancak Visual C ++ dili (yani: Win32 GUI API ile C ++ ve bunun gibi şeyler, hem MS Visual C ++ veya Borland C ++ Builder ile) oldukça kafa karıştırıcı ve oyunlar için kullanılmamalıdır (çok şişirilmiş ve GDI kullanmak, pencereyi kontrol etmek için
SDL'yi

1
@ Vish, özür dilerim, şimdiye kadar yorumları akılda tutarak daha kesin olacak şekilde düzenlemekten çekinmeyin. Win32 programlamanın kafa karıştırıcı olduğunu düşünüyorsanız, bunu söyleyin.
Tetrad

Yanıtlar:


30

Evet, C ++ en sık kullanılan dildir (bazı insanlar hala C kullanıyor olsa da).

Bunun birçok nedeni var. Sırf momentum birdir - sadece yıllardır kullanılan dil, çok fazla teknoloji zaten var ve insanlar ondan rahat, bu yüzden bir gecede değişim olmayacak.

Sonra kontrol konusu var. Oyun geliştiricileri kontrol düşkünleri ve kodumuzda olup biten her şeyi bilmek istiyoruz. C ++ bize kontrol sağlar, C # ve Java (bahsettiğiniz iki alternatifi seçmek için) kontrolü ortadan kaldırır. Birçok yönden bu iyi bir şey olabilir, ancak oyun kodlayıcıları bundan hoşlanmıyor :)

Son olarak, çeşitli platformlar için SDK'ların çok C ++ merkezli olması pratik bir meseledir. Başka bir dil kullanmak kaçınılmaz olarak sarmalayıcılar yazmayı, VM'lere çapraz derlemeyi içerir ve muhtemelen (bazı konsol geliştirme durumunda) platform sahibi tarafından izin verilmez (bir başlangıç ​​için JIT derlemesi yapan insanların gerçekten hoşuna gitmez).


2
Ana geliştirme endüstrisinde, evet.
JasonD

2
Diller açısından, C ++, öncelikle - yakında herhangi bir yere gitmeyecek. Vb Lua, Python, - Ben de script dilleri aşina olmak incitmez öneririm
JasonD

8
Visual C ++ bir dil değildir, bir IDE'dir.
SurvivalMachine

2
Evet, muhtemelen en çok kullanılan IDE olmasına rağmen, C ++ öğrenmekle aynı zamanda bunu bilmeye değer.
JasonD

1
@SurvivalMachine Teknik olarak bir lehçedir (standartta bulunmayan çok sayıda MSVC ++ uzantısı vardır)
bobobobo 21:02

4

Oyun geliştirme konusunda hemen hemen her yayında görebileceğiniz gibi C ++ hala tercih ediliyor. Şahsen şu anda C ++ kodunu yazdığım C ++ kodunun cazip özellikleri kötüye kullanması, RAII'yi yoğun olarak kullanması, dinamik bellek tahsisi ve oyun kodunda sadece gördüğüm şeylerden yapmamanız gereken diğer şeyleri kullanmak için C'yi kullanıyorum şimdiye kadar.

C'ye bağlı kalmak beni minimalist olmaya ve ne yaptığımı düşünmeye zorluyor. STL'nin size ücretsiz olarak verdiği bir şeyi yeniden uygulamak zorunda olduğunuz zamanlarda daha zor olabilir, ancak tersine daha temiz kod yazdığımı ve bu şeyi hata ayıklamak için daha iyi bir zamanım olduğunu hissediyorum.


3
RAII oyun kodunda mükemmel kabul edilebilir (ve teşvik edilmelidir).
stonemetal

1
@stonemetal: RAII gecikmeli ve dolayısıyla öngörülemeyen kaynak tahsisini teşvik eder. Bunun teşvik edilip edilmemesi, oyununuzun boyutuna ve hedef platformlarınıza (ve söz konusu kaynağa) bağlıdır; ortalama olarak bunu teşvik etmem. Ayrıca, C ++ 'da RAII en çok yığın tahsisi ile kullanılır, çünkü C ++' ın OO yığın tahsisini çok zorlaştırır.

3
RAII gecikmeli kaynak tahsisini ne şekilde teşvik eder? GLFW kullandığımda, GLFW'nin init işlevini yapıcıda çağıran ve GLFW'nin yıkıcıdaki temizleme rutinini çağıran GLFWRAII adlı bir sınıf yapıyorum. Ben ana başında yığına tahsis, hiçbir şekilde gecikme ya da öngörülemez bir şey yapmaz. Diğer kullanımlar bir seviyenin başında tahsis etmek ve bir seviyenin sonunda temizlemek olabilir. Kötü bir teknik kullanmak onu kötü bir teknik yapmaz. RAII hakkında hiçbir şey, kötü kullanım dışında öngörülemeyen kaynak tahsisi önermez.
stonemetal

Sadece bu özellikleri kullanmaktan kaçınmalısınız. C ++ kullanıyorum ve kodlarımda hiç şablon kullanmıyorum ya da yapıcılarında istisnalar atan nesneler yok. C'de hala dinamik ayırmayı kullanabilirsiniz (ve bir 3D oyun için yapmanız gerekir). Bunun yanı sıra, aynı zamanda bir şekilde kod olmalıdır başkasının saf C kodunda büyük bir proje bile, bir cehennem olabilir - kolay anlaşılması bulmak Eğer bunu anlamak. Dil sizi zorlamasa bile ne yaptığınızı düşünmeyi öğrenirseniz, diğer birçok dilde de temiz kod yazabilirsiniz.
Pablo Ariel

1

Ben şahsen C ++ hayranı değilim ve Java'yı tercih ederim. Bununla birlikte, endüstrideki çoğu insan bunu kullanmaktadır ve sarmalayıcılar ve sanal makineler olmadan diğer platformlara dönüştürmek için en kolay dildir.

Ancak, bazen diğer diller oyun geliştirme için oldukça iyi çalışır. LWJGL ile Java kullanıyorum ve şaşırtıcı. C ++ öğrenmek zorunda kalmadan 3D programlama ve OpenGL ile başlamak istiyorsanız , Java ile LWJGL'yi deneyin , çünkü çok hafif ve aslında JNI üzerinden çalışan C ++ kodu olduğunu düşünüyorum.

Belki uzun vadede C ++ 'a geçmek isteyebilirsiniz, ancak C # veya Java ile başlayıp pratik yapabilirsiniz. Çünkü oyun kodlarının çoğu dil deneyiminden gelir, ancak OpenGL'yi rahat edeceğiniz bir dille denemelisiniz. Ayrıca, grafik üzerinde çalışırken, OpenGL ile GLSL'yi de denemelisiniz, çok C benzeri bir sözdizimine sahiptir

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.