Di mana saya mulai jika saya ingin menulis permainan C ++ 2d? [Tutup]


17

Saya adalah pengembang web C # dan saya ingin mengembangkan keahlian saya dan bersenang-senang saat melakukannya. Saya tahu beberapa dasar-dasar C ++ dan saya ingin menulis mesin game 2d sederhana untuk saya sendiri menggunakan C ++. Apa perpustakaan atau SDK lain yang saya butuhkan dan di mana saya akan menemukan beberapa tutorial dan sumber informasi untuk bergerak maju?

Saya sudah melihat ke XNA dengan C #. Ada banyak sumber daya untuk itu tetapi saya lebih suka menggunakan produk non-Microsoft. Intinya adalah bersenang-senang sambil menjadi programmer yang lebih baik.

Harap dicatat bahwa saya tidak meminta tempat terbaik untuk memulai. Aku hanya meminta sebuah tempat untuk memulai.

Terima kasih atas bantuannya!

Jawaban:


27

Tempat awal standar (dalam pengalaman saya) untuk C ++ game dev adalah SDL . Anda harus mendapatkan tangan Anda sedikit kotor dengan ini daripada Anda lakukan XNA.

Jika Anda ingin mencoba sesuatu yang sedikit lebih tinggi maka saya akan menyarankan SFML . Ini menangani beberapa tugas yang lebih kasar untuk Anda tetapi Anda masih harus mengawasi penggunaan memori Anda, dll.


1
Saya akan melihat itu. Masalah terbesar saya dengan XNA adalah begitu mudahnya sehingga saya tidak merasa seperti saya benar-benar mempelajari hal-hal tingkat bawah yang saya tertarik untuk mengeksplorasi.
quakkels

6
SFML memiliki desain yang bagus, tetapi masih agak buggy dan sedang dalam proses desain ulang API-saya tidak akan menggunakannya untuk game yang lebih kompleks sampai rilis berikutnya dipoles dengan baik.
Bitgarden

Jika Anda menginginkan sesuatu yang sedikit lebih menantang daripada SDL, coba ClanLib . Seperti XNA, ia mendukung akselerasi perangkat keras, tetapi juga berfungsi di Linux, dan juga 2D eksklusif.
ChrisC

2
Anda juga dapat langsung ke tenggorokan - OpenGL adalah favorit pribadi saya (Anda dapat membungkusnya dengan SDL atau SFML)
ultifinitus

9

Saya akan menyarankan menggunakan SDL . Sudah ada sejak lama sehingga dokumentasi dan dukungannya cukup bagus, dan itu salah satu cara termudah yang saya tahu untuk mendapatkan permukaan gambar di layar. Ini akan memberi Anda latihan menulis kelas dalam C ++ (karena Anda mungkin ingin membungkus banyak panggilan fungsi SDL C) dan juga memberi Anda beberapa pengalaman menggunakan pointer dan referensi dan melakukan beberapa manajemen memori dasar. Mengelola memori Anda sendiri adalah salah satu perbedaan utama antara C ++ dan C #.


9

Secara pribadi, saya akan memilih Allegro 5 , karena alasan berikut:

  1. Ini memiliki sistem build berbasis CMake. Ini membuatnya jauh lebih mudah daripada kebanyakan sistem build untuk bekerja pada banyak platform. Ini sepertinya hal kecil, tetapi secara keseluruhan cukup penting. Itu membuat membangun perpustakaan jauh lebih sederhana.

  2. SFML masih dalam fluks yang signifikan. 2.0 adalah perubahan yang cukup besar. Padahal Allegro telah melalui perubahan signifikan dengan versi 5, dan sekarang semua tentang stabilitas.

  3. Ini mencakup modularitas dengan cara yang berbeda dari SFML. Dengan SFML, Anda meminta komponen tertentu, tetapi Anda mendapatkan semuanya. Jika Anda meminta komponen grafis, Anda mendapatkan semua komponen grafik. Dengan Allegro 5, Anda selalu mendapatkan komponen grafis. Tetapi jika Anda tidak ingin menggunakan bitmap loader Allegro, Anda tidak harus; Anda bisa menggunakan milik Anda sendiri.

  4. Ini memiliki dokumentasi yang sangat bagus. SFML menggunakan dokumentasi gaya Doxygen, tetapi bahkan itu cukup sederhana. Sedangkan Allegro 5 lebih komprehensif, dengan fungsi dikelompokkan bersama berdasarkan sistem spesifik yang mereka liput. Ini tidak sempurna, tetapi secara keseluruhan lebih baik.

  5. Mereka cukup pintar untuk tidak mencoba melakukan threading. Dengan C ++ 11 / Boost.Baca baik tersedia secara luas atau hanya sekitar sudut, menggunakan pembungkus utas lainnya bisa lebih dari sekadar bermasalah: bisa berbahaya jika kode Anda berfungsi dengan baik.


Mengapa Anda lebih suka / menyarankan Allegro daripada SDL atau SFML?
Quazi Irfan

@iamcreasy: Jika Anda bersikeras.
Nicol Bolas

Anda masih tidak menyebutkan SDL ...
Insinyur

@NickWiggill: SDL memiliki utas dan sistem build khusus platform. Saya tidak merasa perlu untuk memanggilnya untuk sesuatu yang spesifik.
Nicol Bolas

@ nicol-bolas Anda tidak menyebutkan kontra Allegro. Seperti jumlah tutorial yang sangat rendah.
Quazi Irfan

4

Saya pikir tempat yang fantastis untuk memulai adalah LazyFoo . Ini akan membuat Anda bangun dan berjalan dengan SDL lebih cepat daripada tempat lain yang pernah saya lihat. Saya akan merekomendasikan dengan cepat masuk ke OpenGL (segera setelah Anda dapat melakukannya) karena Anda akan mendapatkan lebih banyak untuk pemrograman dolar Anda - dengan akselerasi perangkat keras. Jika Anda pergi dengan rute itu, saya merekomendasikan Panduan ini .


2

Saya akan merekomendasikan SFML jika Anda menggunakan c ++. Ini akan memberi Anda sesuatu di layar dengan cepat dan menggunakannya dengan kode permainan c ++ Anda langsung.


2
  • SFML - bayi dalam kelompok, tetapi berpotensi paling mudah digunakan dari apa yang saya baca.
  • SDL - jalan tengah. Perpustakaan yang sangat matang, masuk akal, umumnya ringkas jika sedikit misterius dari waktu ke waktu, dan pilihan yang sangat umum. Menyiapkan format tampilan bisa menjadi sedikit bajingan, saya telah menggunakan tutorial lazyfoo untuk membantu di depan itu.
  • Allegro - Geriatric, sudah ada sejak Atari ST hari. Untuk alasan itu, banyak kode rendering 2D (yang saya pikir hanya di Allegro 4) sangat cepat karena logika dibangun untuk sistem spec yang jauh lebih rendah. Saya pribadi tidak menemukannya sangat intuitif, bahkan mempertimbangkan dokumentasinya.

Mempertimbangkan OpenGL mempercepat sisi 2D hal-hal saat ini, tidaklah penting untuk memiliki akses ke peranti lunak cepat yang dimiliki Allegro dan SDL (atau ada dalam versi sebelumnya). Namun ketika saya memilih perpustakaan saya fokus pada kematangan proyek, basis pengguna dan dokumen lebih dari kecepatan (selama kecepatan masuk akal), dan saya akan mengatakan SDL dan Allegro menang di bidang itu. SDL juga telah merilis tiga judul AAA seperti Civ: Call to Power.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.