Apakah C ++ "masih" lebih disukai dalam pengembangan game? [Tutup]

17

Saya seorang Pemrogram Game 2D. Beberapa bahasa pemrograman yang saya kuasai adalah C, Java, C #. Saya juga tahu Actionscript 2.0,3.0 dan beberapa javascript. Saya tertarik mempelajari pemrograman Game 3D. Sejauh ini dari penelitian yang saya kumpulkan dengan googling dan membaca berbagai forum dan artikel pengembangan game. Saya telah memperhatikan bahwa kebanyakan programmer cenderung lebih suka C ++. Juga dalam kursus pengajaran pemrograman game online saya perhatikan mereka lebih suka mengajar C ++ dan Visual C ++ sebagai kursus awal. Alasan saya mengajukan pertanyaan ini karena saya ingin tahu perbedaan "kekuatan" dari C ++, C # dan Java untuk pemrograman game 3d.

Juga termasuk tautan ke artikel pemrograman game 3d yang bagus untuk programmer game yang sudah 2d.

PS: IMHO, saya juga menemukan C ++ menjadi samar.

Wisnu
sumber
Saya juga mendapatkan itu banyak. Jadi diajukan pertanyaan di masyarakat tentang keterampilan apa yang harus dimiliki seorang programmer game profesional. Mendapat jawaban yang bagus dengan fokus pada C ++ sebagai bahasa yang lebih baik untuk mengembangkan game. periksa .. gamedev.stackexchange.com/questions/5552/…
GamDroid
@GamDroid: Saya tidak tertarik untuk mengetahui apa yang membuat programmer game 2d profesional. Saya tertarik mengetahui tentang Visual C ++ dan mengapa begitu dibicarakan.
Wisnu
2
Btw: Visual C ++? Bukan sekadar C ++?
speeder
Editor Visual C ++ keren, tetapi bahasa Visual C ++ (yaitu: C ++ dengan Win32 GUI API dan hal-hal seperti itu, baik dengan MS Visual C ++ atau Borland C ++ Builder) cukup membingungkan dan tidak boleh digunakan untuk permainan (itu terlalu kembung, dan menggunakan GDI lebih lambat daripada menggunakan katakanlah, SDL, untuk mengontrol jendela)
speeder
1
@Vish, mohon maaf, silakan mengeditnya agar lebih tepat mengingat komentar sejauh ini. Jika maksud Anda pemrograman Win32 membingungkan, maka katakan itu.
Tetrad

Jawaban:

30

Ya, C ++ adalah bahasa yang paling sering digunakan (meskipun beberapa orang masih menggunakan C).

Ada banyak alasan untuk ini. Momentum tipis adalah satu - itu hanya bahasa yang telah digunakan selama bertahun-tahun, banyak teknologi sudah ada dan orang-orang merasa nyaman dengan itu, sehingga perubahan tidak akan terjadi dalam semalam.

Lalu ada masalah kontrol. Pengembang game adalah orang-orang aneh yang mengendalikan, dan kami ingin mengetahui semua yang terjadi dalam kode kami. C ++ memberi kita kendali itu, C # dan Java (untuk memilih dua alternatif yang Anda sebutkan) mengambil kendali. Dalam banyak hal itu mungkin hal yang baik, tetapi pembuat kode permainan tidak menyukainya :)

Akhirnya ada masalah praktis sederhana bahwa SDK untuk berbagai platform sangat C ++ centric. Menggunakan bahasa lain pasti melibatkan penulisan pembungkus, kompilasi silang ke VM, dan mungkin (dalam kasus beberapa pengembangan konsol) itu tidak diizinkan oleh pemegang platform (mereka benar-benar tidak suka orang yang melakukan kompilasi JIT, untuk permulaan).

JasonD
sumber
2
Di industri pengembangan arus utama, ya.
JasonD
2
Dalam hal bahasa, C ++, terutama - tidak akan kemana-mana dalam waktu dekat. Saya sarankan juga tidak ada salahnya untuk terbiasa dengan bahasa scripting - Lua, Python, dll.
JasonD
8
Visual C ++ bukan bahasa, ini adalah IDE.
SurvivalMachine
2
Ya, meskipun itu mungkin IDE yang paling banyak digunakan, jadi ada baiknya untuk mengetahui hal itu bersamaan dengan mempelajari C ++.
JasonD
1
@SurvivalMachine Yah secara teknis itu adalah dialek (ada banyak ekstensi MSVC ++ yang tidak ada dalam standar)
bobobobo
4

C ++ masih disukai karena Anda dapat melihat hampir semua publikasi tentang topik pengembangan game. Saya pribadi saat ini menggunakan C untuk menyelam ke dalam pengembangan game karena alasan sederhana bahwa kode C ++ yang saya tulis menyalahgunakan fitur templating, menggunakan RAII secara luas, alokasi memori dinamis dan hal-hal lain yang tidak boleh Anda lakukan dalam kode game dari apa yang telah saya lihat sejauh ini.

Berpegang teguh pada C memaksa saya untuk bersikap minimalis dan berpikir tentang apa yang saya lakukan. Mungkin lebih sulit ketika Anda harus mengimplementasikan sesuatu yang diberikan STL secara gratis, tetapi pada sisi baiknya saya merasa saya menulis kode bersih dan memiliki waktu yang lebih baik untuk men-debug hal itu.

Armin Ronacher
sumber
3
RAII sangat dapat diterima (dan harus didorong) dalam kode game.
stonemetal
1
@stonemetal: RAII mendorong alokasi sumber daya yang tertunda dan karenanya tidak dapat diprediksi. Apakah itu harus didorong atau tidak tergantung pada ukuran game Anda dan platform target Anda (dan sumber daya yang dimaksud); rata-rata saya tidak akan mendorongnya. Lebih jauh, RAII dalam C ++ paling umum digunakan dengan alokasi heap, karena OO O ++ membuat alokasi stack terlalu sulit.
3
Dengan cara apa RAII mendorong alokasi sumber daya yang tertunda? Ketika saya menggunakan GLFW saya membuat kelas yang disebut GLFWRAII yang memanggil fungsi init GLFW di konstruktor dan memanggil rutin pembersihan GLFW di destruktor. Saya mengalokasikannya di stack di awal main, itu sama sekali tidak menunda apa pun atau melakukan sesuatu yang tidak terduga. Kegunaan lain mungkin untuk mengalokasikan pada awal tingkat dan membersihkan pada akhir tingkat. Penggunaan teknik yang buruk tidak menjadikannya teknik yang buruk. Tidak ada apapun tentang RAII yang menyarankan alokasi sumber daya yang tidak dapat diprediksi selain penggunaan yang buruk.
stonemetal
Anda hanya perlu menghindari menggunakan fitur-fitur itu. Saya menggunakan C ++ dan saya tidak pernah menggunakan template dalam kode saya juga tidak memiliki objek yang melempar pengecualian dalam konstruktor mereka. Di C Anda masih bisa menggunakan alokasi dinamis (dan Anda harus untuk game 3D). Selain itu, Anda harus kode dengan cara yang juga orang lain merasa mudah untuk memahami - proyek besar dalam kode C murni bisa menjadi neraka, bahkan jika Anda memahaminya. Jika Anda belajar untuk berpikir tentang apa yang Anda lakukan bahkan jika bahasa tersebut tidak memaksa Anda untuk melakukannya, Anda akan dapat menulis kode bersih dalam banyak bahasa lain juga.
Pablo Ariel
1

Saya pribadi bukan penggemar C ++, dan saya lebih suka Java. Namun, sebagian besar orang di industri menggunakannya dan ini adalah bahasa yang paling mudah untuk dikonversi ke platform lain tanpa pembungkus dan mesin virtual.

Namun, terkadang bahasa lain bekerja cukup baik untuk pengembangan game. Saya menggunakan Java dengan LWJGL dan itu luar biasa. Jadi jika Anda ingin memulai dengan pemrograman 3D dan OpenGL tanpa harus belajar C ++, coba LWJGL dengan Java, karena sangat ringan dan saya pikir itu sebenarnya kode C ++ yang berjalan melalui JNI.

Mungkin dalam jangka panjang Anda mungkin ingin beralih ke C ++, tetapi Anda bisa mulai dan berlatih dengan C # atau Java. Karena sebagian besar kode permainan berasal dari pengalaman dengan bahasa, tetapi Anda harus mencoba dan berlatih OpenGL dengan bahasa yang Anda sukai. Selain itu, saat Anda berlatih grafik, Anda juga harus mencoba GLSL dengan OpenGL, ia memiliki sintaks yang sangat mirip C

Romejanic
sumber