Saya suka fitur XNA tapi saya ingin masuk ke c ++ game dev. Masalahnya adalah bahwa saya sekarang harus khawatir tentang segala sesuatu mulai dari memuat file png hingga membuka jendela. Ini sedikit mengganggu.
Saya benar-benar ingin versi X ++ c ++ untuk menyelesaikan masalah ini untuk saya.
Anda harus melihat pada DirectX Tool Kit jika Anda belum ... Ini adalah perpustakaan C ++ untuk pemrograman Direct3D 11 yang secara eksplisit meminjam dari desain kelas XNA Game Studio.
Chuck Walbourn
Jawaban:
16
Saya akan merekomendasikan bahwa Anda melihat SFML dan Polycode .
Saya pikir jawabannya di sini agak tidak penting. Sangat menjengkelkan harus menautkan ke sepuluh perpustakaan yang berbeda, seperti Freetype, libpng, tinyxml, Ogg, Vorbis, dll, untuk mendapatkan beberapa fitur dasar XNA.
SFML adalah multimedia C ++ API gratis yang memberikan Anda akses tingkat rendah dan tinggi ke grafik, input, audio, dll. Dalam arti, jenisnya mirip dengan XNA tetapi tidak terlalu banyak memegang tangan Anda. Misalnya, SFML tidak memiliki kelas Model.
Jika Anda berencana menggunakan Model dalam gim Anda, Anda harus melihat menggunakan Assimp .
Assimp menambahkan dukungan untuk mengimpor format berikut:
Collada(.dae )Blender3D(.blend )3dsMax3DS(.3ds)3dsMax ASE (.ase )WavefrontObject(.obj )StanfordPolygonLibrary(.ply )AutoCAD DXF (.dxf )LightWave(.lwo )Modo(.lxo )Stereolithography(.stl )
AC3D (.ac )Milkshape3D(.ms3d )Quake I Mesh(.mdl )Quake II Mesh(.md2 )Quake III Mesh(.md3 )Quake III BSP (.pk3 )Biovision BVH (.bvh )DirectX X (.x )BlitzBasic3D(.b3d )Quick3D(.q3d,.q3s )Ogre XML (.mesh.xml )IrrlichtMesh(.irrmesh )NeutralFileFormat(.nff )Sense8WorldToolKit(.nff )ObjectFileFormat(.off )PovRAYRaw(.raw )TerragenTerrain(.ter )3DGameStudio(.mdl )3DGameStudioTerrain(.hmp )IzwareNendo(.ndo )
Polycode adalah kerangka kerja lintas platform gratis, sumber terbuka, dan kode kreatif. Anda dapat menggunakannya sebagai C ++ API atau sebagai bahasa skrip mandiri untuk mendapatkan akses mudah dan sederhana ke grafik 2D dan 3D yang dipercepat, pembagi perangkat keras, pemrograman suara dan jaringan, mesin fisika, dan lainnya.
API Polycode inti ditulis dalam C ++ dan dapat digunakan untuk membuat aplikasi asli portabel.
Di atas API C ++ inti, Polycode menawarkan sistem skrip berbasis Lua dengan seperangkat alat kompilasi sendiri. Lua API mencerminkan C ++ API dan dapat digunakan untuk dengan mudah membuat prototipe dan bahkan menerbitkan aplikasi lengkap ke berbagai platform tanpa mengkompilasi C ++.
Polycode adalah opensource, artinya Anda dapat belajar dari bagaimana segala sesuatu dilakukan di belakang layar. Selain itu, ia menggunakan Assimp untuk memuat model sehingga Anda tidak perlu khawatir tentang tautan secara manual ke Assimp.
Klarifikasi kecil: Polycode tidak menggunakan assimp untuk memuat model, melainkan memiliki alat berbasis assimp untuk mengubah model menjadi format yang dapat dimuatnya.
cib
4
Ada ratusan perpustakaan di luar sana yang menangani semua jenis aspek pengembangan game. Dari memuat gambar, membuka dan mengelola jendela, rendering, suara, fisika, dll.
Apa yang tidak ada adalah sangat banyak solusi "one-stop-shop", di mana Anda mendapatkan semuanya sekaligus. Itulah salah satu manfaat XNA. Anda biasanya harus mengumpulkan banyak perpustakaan untuk membuat mesin. Ini memberi Anda fleksibilitas besar, seolah-olah satu komponen kurang, Anda dapat (relatif) dengan mudah menukar itu dengan yang lain. Tetapi pada saat yang sama, itu membutuhkan lebih banyak pekerjaan.
Sungguh, mengapa Anda begitu terpaku pada bahasa pemrograman apa yang ingin Anda gunakan? Sepertinya saya sangat menyukai XNA dan ingin menggunakannya untuk pengembangan game. Jadi lakukan itu.
Anda dapat menggunakan D3DX dan DXUT pada awalnya, yang tidak diisi seperti XNA tetapi banyak membantu dalam pengaturan lingkungan setidaknya, seperti membuat jendela, menjalankan loop utama dan memiliki beberapa fungsi yang berguna seperti D3DX11CreateTextureFromFile () - Anda harus mengelola pointer, tetapi tidak terlalu sulit. Ada juga banyak perpustakaan yang dapat Anda gunakan di C ++, yang dapat Anda ganti dengan perpustakaan Anda sendiri jika Anda ingin meningkatkan kinerja atau apa pun yang ingin Anda ubah.
Pustaka D3DX dan DXUT paling cocok untuk D3D9 dan 10, dan DXUT dilengkapi dengan kode sumbernya. Untuk DX11 mereka mengambil beberapa fungsi dari lib itu tetapi saya berharap mereka masih memiliki yang paling berguna, dan jika saya ingat sekarang mereka memberikan kerangka efek dalam bentuk kode sumber (karena jika Anda memiliki kesabaran untuk menjelajahinya).
Saya telah belajar lebih banyak ketika bekerja di level yang lebih rendah daripada piramida kerangka kerja, jadi saya tidak bisa mengatakan Anda menggunakan XNA, tapi itu tergantung pada tujuan Anda kebanyakan.
Semua versi D3DX sudah usang. Pustaka utilitas Direct3D 11.x 'modern adalah DirectXTex , DirectXTK , dan DirectXMesh plus DirectXMath di Windows 8.x SDK. Versi terbaru dari Efek 11 dan DXUT11 ada di CodePlex untuk orang-orang yang porting basis kode yang lebih lama dan senang dengan aplikasi desktop Win32 saja.
Chuck Walbourn
1
Jika Anda baru saja dibiasakan dengan bahasa c ++, saya akan merekomendasikan menggunakan perpustakaan sederhana seperti SDL untuk mendapatkan pengalaman dalam pengembangan game dan kemudian pemrograman menggunakan openGL.
Jawaban:
Saya akan merekomendasikan bahwa Anda melihat SFML dan Polycode .
Saya pikir jawabannya di sini agak tidak penting. Sangat menjengkelkan harus menautkan ke sepuluh perpustakaan yang berbeda, seperti Freetype, libpng, tinyxml, Ogg, Vorbis, dll, untuk mendapatkan beberapa fitur dasar XNA.
SFML
http://www.sfml-dev.org/features.php
SFML adalah multimedia C ++ API gratis yang memberikan Anda akses tingkat rendah dan tinggi ke grafik, input, audio, dll. Dalam arti, jenisnya mirip dengan XNA tetapi tidak terlalu banyak memegang tangan Anda. Misalnya, SFML tidak memiliki kelas Model.
Jika Anda berencana menggunakan Model dalam gim Anda, Anda harus melihat menggunakan Assimp .
Assimp menambahkan dukungan untuk mengimpor format berikut:
Polycode
http://polycode.org/features/
Polycode adalah opensource, artinya Anda dapat belajar dari bagaimana segala sesuatu dilakukan di belakang layar. Selain itu, ia menggunakan Assimp untuk memuat model sehingga Anda tidak perlu khawatir tentang tautan secara manual ke Assimp.
sumber
Ada ratusan perpustakaan di luar sana yang menangani semua jenis aspek pengembangan game. Dari memuat gambar, membuka dan mengelola jendela, rendering, suara, fisika, dll.
Apa yang tidak ada adalah sangat banyak solusi "one-stop-shop", di mana Anda mendapatkan semuanya sekaligus. Itulah salah satu manfaat XNA. Anda biasanya harus mengumpulkan banyak perpustakaan untuk membuat mesin. Ini memberi Anda fleksibilitas besar, seolah-olah satu komponen kurang, Anda dapat (relatif) dengan mudah menukar itu dengan yang lain. Tetapi pada saat yang sama, itu membutuhkan lebih banyak pekerjaan.
Sungguh, mengapa Anda begitu terpaku pada bahasa pemrograman apa yang ingin Anda gunakan? Sepertinya saya sangat menyukai XNA dan ingin menggunakannya untuk pengembangan game. Jadi lakukan itu.
sumber
Anda dapat menggunakan D3DX dan DXUT pada awalnya, yang tidak diisi seperti XNA tetapi banyak membantu dalam pengaturan lingkungan setidaknya, seperti membuat jendela, menjalankan loop utama dan memiliki beberapa fungsi yang berguna seperti D3DX11CreateTextureFromFile () - Anda harus mengelola pointer, tetapi tidak terlalu sulit. Ada juga banyak perpustakaan yang dapat Anda gunakan di C ++, yang dapat Anda ganti dengan perpustakaan Anda sendiri jika Anda ingin meningkatkan kinerja atau apa pun yang ingin Anda ubah.
Pustaka D3DX dan DXUT paling cocok untuk D3D9 dan 10, dan DXUT dilengkapi dengan kode sumbernya. Untuk DX11 mereka mengambil beberapa fungsi dari lib itu tetapi saya berharap mereka masih memiliki yang paling berguna, dan jika saya ingat sekarang mereka memberikan kerangka efek dalam bentuk kode sumber (karena jika Anda memiliki kesabaran untuk menjelajahinya).
Saya telah belajar lebih banyak ketika bekerja di level yang lebih rendah daripada piramida kerangka kerja, jadi saya tidak bisa mengatakan Anda menggunakan XNA, tapi itu tergantung pada tujuan Anda kebanyakan.
sumber
Jika Anda baru saja dibiasakan dengan bahasa c ++, saya akan merekomendasikan menggunakan perpustakaan sederhana seperti SDL untuk mendapatkan pengalaman dalam pengembangan game dan kemudian pemrograman menggunakan openGL.
sumber