Saya telah memutuskan apa yang sebenarnya saya inginkan adalah melakukan pemrograman game. Jadi pertanyaannya adalah, ketika berusia 18 tahun yang ingin belajar pemrograman otodidak, bahasa pemrograman apa yang paling cocok antara C # dan C ++? (Saya harus menyatakan bahwa saya tidak peduli tentang Unix karena saya percaya windows akan tetap menjadi OS yang paling banyak digunakan)
Saya tahu dasar-dasar C ++, tetapi tidak ada tentang C #. Saya tahu bahwa C ++ memiliki lebih banyak panduan tutorial, dll dan hal-hal seperti itu, sementara C # tidak, tetapi jauh lebih mudah untuk belajar dan menggunakan satu orang untuk mengembangkan suatu program, tetapi saya telah membaca bahkan jika program tersebut dikaburkan mudah untuk mendapatkan sumbernya.
Yah, saya agak ingin fokus pada dasar banyak dulu, saya harus mengatakan bahwa saya memiliki preferensi untuk C ++ hanya karena rasanya lebih cocok untuk saya, tetapi saya harus mempertimbangkan bahwa saya bekerja sendiri. Jadi, bahkan jika saya menyukainya, itu mungkin bukan hal terbaik untuk dilakukan.
Saya benar-benar tidak yakin yang mana untuk pergi, saya telah membaca banyak utas di berbagai situs web dan sepertinya C # menjadi lebih populer daripada C ++. Tapi ya, itu katanya, saya juga menentukan saya ingin melakukan pemrograman game. Jadi saya perlu tahu beberapa poin yang lebih baik daripada hanya "C # lebih mudah karena penanganan memori bersih. Sedangkan C + + tidak" karena saya tidak bisa hanya menemukannya.
sumber
Jawaban:
Saya belajar C ++ dengan memprogram permainan. Itu adalah pengalaman yang sangat menyenangkan. Saya sangat mendorong Anda untuk melakukan hal yang sama!
Namun sekarang saya seorang programmer C #, saya tahu saya akan jauh lebih produktif jika C # tersedia pada saat itu.
C # adalah pilihan tepat untuk mempelajari pengembangan game. Ini memiliki semua yang Anda butuhkan untuk mulai dari kerangka kerja hingga buku dan bahasanya menakjubkan.
Saya telah melihat lusinan buku yang ditulis secara khusus tentang C # Game Programming dan Microsoft berupaya keras untuk memperbaiki kerangka kerjanya termasuk DirectX dan XNA .
UPDATE : Anda mungkin tertarik dengan ini juga. Ini adalah posting blog terbaru dari Miguel de Icaza .
UPDATE 2013-02-22 Microsoft berencana untuk menghentikan dukungan XNA .
sumber
Sebagian besar perusahaan game menggunakan C ++, mungkin dengan skrip python atau bahasa lain yang berjalan di latar belakang. Lebih dari itu karena binding untuk OpenGL dan DirectX ditujukan untuk C ++ (meskipun saya cukup yakin Anda dapat melakukan banyak hal Direct3d dalam C #) tapi ya untuk pemrograman game, C ++ adalah bahasa UTAMA.
Saya akan memberi Anda peringatan yang adil (dan jangan biarkan ini menghalangi Anda) tetapi grafik 3D bisa menjadi sangat rumit. Direct3D yang baru telah membuatnya menjadi sedikit lebih mudah dari biasanya, tetapi ini masih sedikit matematika (yang bisa sangat membingungkan) dan hanya perpustakaan itu sendiri yang dapat membingungkan.
Saya akan mulai dengan sesuatu yang sangat sederhana dulu. untuk hal-hal 2d SDL (Simple Directmedia Layer) jauh lebih mudah digunakan (untuk sesuatu seperti permainan top-down) setelah Anda masuk ke 3D Saya secara pribadi berpikir OpenGL lebih mudah untuk dipelajari (tapi ini semua pendapat). MS memiliki beberapa Tutorial / Sampel bagus dalam dokumentasi DirectX SDK mereka, jadi ada baiknya Anda melihatnya. Tutorial Nehe meskipun agak ketinggalan jaman masih bagus.
tapi ya untuk menjawab pertanyaan Anda, semuanya dilakukan dalam C ++ biasanya.
sumber
Pertama, Anda ingin menetapkan beberapa prioritas. Apakah Anda hanya ingin membuat game terlebih dahulu kemudian belajar tentang aspek pemrograman yang lebih maju nanti, atau sebaliknya. Kedua pendekatan memiliki pro dan kontra, tetapi keduanya sah menurut saya.
Jika Anda ingin mulai membuat game maka saya akan merekomendasikan belajar C #. Jika Anda sudah mengetahui dasar-dasar C ++ maka Anda seharusnya tidak mengalami kesulitan sama sekali mengambil C #. Membuat C # alat Anda memiliki kelebihan. Ini mudah untuk belajar bahasa (dibandingkan dengan C ++) dan merupakan "bahasa yang dikelola", yang berarti bahwa secara otomatis melakukan pemipaan memori untuk Anda (sesuatu yang banyak pemula C ++, dan bahkan yang tidak begitu pemula, memiliki masalah dengan ). Ini juga memberi Anda akses ke Microsoft XNA Framework yang melakukan lebih banyak pekerjaan membosankan untuk Anda. Itu membuat Anda berkonsentrasi pada hal-hal seperti siklus permainan dan desain, tanpa harus khawatir (terlalu banyak) untuk membuatnya bekerja. Benar, semua insta-plumbing ini memiliki overhead, yang berarti Anda mungkin tidak akan membuat game 3D kelas industri, tetapi Anda baru saja masuk ke pemrograman game, jadi saya ragu Anda akan membuat Halo berikutnya pada beberapa percobaan pertama Anda. :)
Inilah post mortem oleh orang yang mengembangkan game XNA yang sukses (Weapon of Choice). Dia merinci bagaimana menggunakan C # / XNA telah menghemat waktu pengembangannya daripada harus menggunakan C ++. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php
Yang sedang berkata, Anda harus menginvestasikan waktu setidaknya untuk mengetahui bagaimana hal-hal bekerja di latar belakang. Bagaimana seorang programmer C ++ akan melakukannya. Belajar membuat game di C ++ mungkin membuatnya lebih mudah untuk bergabung dengan tim pengembangan game lain (karena kebanyakan dari mereka bekerja di C ++), jika yang Anda inginkan adalah mendapatkan pijakan di industri game. Tetapi bahkan jika Anda akhirnya tidak pernah menggunakan C ++, mengetahui cara kerja internal hanya dapat membuat Anda menjadi programmer yang lebih baik, apa pun bahasa yang Anda gunakan.
sumber
Saya sangat mempromosikan C ++ untuk pengembangan game. Ada beberapa kendala tambahan, dengan berbagai pro dan kontra, salah satu alasan terbaik adalah portabilitas.
Dengan C # Anda dapat mengembangkan untuk sedikit lebih banyak hari ini, dan ada beberapa mesin luar biasa yang diprogram di dalamnya pasti. Keduanya adalah bahasa yang baik untuk pemrograman game, jika Anda hanya menargetkan platform Windows / Xbox maka Anda akan memiliki alasan untuk condong ke C #.
Bahasa yang saya pikir paling Anda harus pelajari adalah OpenCL atau CUDA, beberapa bahasa GPGPU. Secara pribadi saya lebih suka OpenCL karena sepertinya akan bertahan lebih lama dan tumbuh lebih jauh, pada dasarnya hanya gaya C. Ada OpenTK yang merupakan pembungkus yang bagus untuk C ++ atau C #.
Saya selalu bertanya-tanya seperti apa pemrograman game Ruby dengan akselerasi perangkat keras ...
sumber
Pemrograman game mentah akan membuat Anda cukup dingin. Bekerja dengan panggilan grafis tingkat rendah di C # atau C ++ adalah mimpi buruk kecil dan Anda benar-benar tidak ingin membangun kembali roda rendering sprite 2D apalagi model 3D. Karena Anda sendirian dan ingin belajar pemrograman, taruhan terbaik Anda adalah menemukan kerangka kerja yang dapat sedikit mengedepankan Anda.
Karena Anda memiliki keakraban dengan bahasa berbasis C, saran saya adalah untuk memberikan tampilan Unity 3D . Tidak hanya mengalami adopsi serius dalam adopsi dari toko pengembang game komersial, dan memiliki beberapa opsi platform yang menarik (termasuk PC, android, iPhone, dan runtime web), tetapi juga memiliki versi gratis yang sangat mudah digunakan dan banyak tutorial untuk menunjukkan kepada Anda cara beralih dari konsep ke implementasi. Terbaik dari semua (IMO) salah satu bahasa skrip yang didukung adalah C #.
sumber
Saya membuat game untuk kelas dua tahun yang lalu (saya berusia 18 juga saat itu) dan kami membuatnya di C #. Sementara saya amati bahwa program-program C # besar biasanya beroperasi lebih lambat daripada program-program C ++ besar, C # juga membutuhkan kerja yang jauh lebih sedikit di pihak Anda. Manajemen memori dilakukan secara otomatis, dan untuk lingkup gim pertama, ini cukup cepat. (Game kami adalah RTS 2D multipemain penuh seperti Starcraft.)
Saya root untuk C # karena seharusnya lebih mudah untuk mengelola. Namun, jika Anda ingin menjadi pengembang game profesional, ingatlah bahwa itu hanya berfungsi pada platform Microsoft. (Tetap saja, C # dapat menjadi batu loncatan yang baik untuk C ++, dan jika saya harus mempelajari kembali kedua bahasa, saya akan mencoba mempelajari C # terlebih dahulu.)
sumber
Saya akan memilih C ++ - terutama karena itu bisa lintas platform (tergantung pada bagaimana Anda menulis kode Anda, tentu saja) dan juga karena saya pikir itu memberi Anda lebih banyak pengetahuan tentang manajemen memori - karena Anda perlu peduli tentang hal itu. Tetapi karena Anda tidak peduli dengan linux / unix, jika Anda ingin meninggalkan kompleksitas memori untuk saat ini, mengapa tidak fokus dalam C # sekarang dan kemudian pelajari juga C ++?
sumber