Mudah menggunakan mesin 3D lintas platform untuk pengembangan game C ++? [Tutup]

73

Saya ingin mencoba menulis permainan 3D. Namun saya tidak ingin memulai pada tingkat rendah menggambar segitiga individu dan menulis loader objek 3D saya sendiri dan seterusnya. Saya pernah mendengar hal-hal seperti Irrlicht , Crystal Space 3D , dan Cafu , tapi saya tidak punya pengalaman dengan mereka. Saya mencari saran dari orang-orang yang memiliki pengalaman dengan ini atau mesin lain di mana yang ditulis dengan baik, dan mudah untuk mulai menggunakan, tanpa harus belajar banyak teori matematika 3D dan bagaimana GPU bekerja secara internal.

davr
sumber
16
Meskipun mungkin telah ditutup, pertanyaan ini sangat membantu saya.
Caleb Jares
4
juga, utas yang sangat bagus, tidak tahu mengapa stackexchange tidak menyukai pertanyaan seperti ini.
steveh
2
mereka suka menutup pertanyaan, saya kira
Frank Cranston
github.com/fffaraz/awesome-cpp#game-engine
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

48

Pendapat saya (hanya untuk mesin 3D open source):

  • Irrlicht :
    • Mesin 3D ringan
    • Bersihkan C ++ tanpa dependensi dan tanpa STL.
    • Tidak didokumentasikan dengan baik tetapi ada tutorial yang bagus.
    • Sangat kecil sehingga Anda dapat menyesuaikannya dengan mudah.
    • Tidak ada driver OpenGL 3.X, Direct X 10.X atau 11.X tersedia di SDK resmi.
    • Sangat bagus untuk pengembangan ponsel;
    • Komunitas yang baik
    • Beberapa ekstensi tersedia
  • Ogre3D :
    • Mesin 3D besar
    • Ini menggunakan C ++ modern seperti STL, pengecualian dan RTTI
    • Dokumentasi yang baik (Ada buku yang diterbitkan).
    • Banyak penyaji (OpenGL, DirectX dan OpenGL ES ...).
    • Ogre3D memiliki banyak ekstensi seperti CEGUI atau integrasi Bullet, Node pohon ...
    • Tetapi lebih sulit untuk memperpanjang Ogre3D jika Anda menginginkan sesuatu yang spesifik.
    • Komunitas besar
    • Banyak ekstensi
  • Ruang kristal : Desain lama dan sulit digunakan. Setelah beberapa hari, saya berhenti menggunakan mesin ini.
  • Horde3D
    • Mesin kecil
    • Desain modern
    • Komunitas ringan
    • Tidak ada ekstensi
  • Blendelf
    • Mesin kecil dengan beberapa dependensi
    • Desain modern dengan efek modern seperti DOF atau HDR ...
    • Hanya OpenGL
    • Komunitas ringan
    • Integrasi peluru untuk fisika
    • Anda menggunakan lua untuk mengemudikan engine3D ini

TL; DR:

  • Untuk game desktop (atau game komersial masa depan): Ogre3D
  • Untuk pertandingan pertama: Irrlicht
  • Untuk pengembangan seluler: irrlicht (Ogre3D terlalu besar)
  • Untuk efek seksi: Blendelf
Ellis
sumber
Sejujurnya saya tidak akan merekomendasikan Irrlicht untuk pengembangan ponsel. Ini melakukan terlalu banyak alokasi memori dan menawarkan implementasi alokasi memori khusus yang kecil hingga tidak sama sekali. Waktu startup karena hampir 60.000 alokasi yang dilakukan saat startup adalah masalah besar.
Simon
Saya menggunakan Irrlicht di Android dan iOS dan waktu startup bukan masalah besar ... Pemuatan tekstur jauh lebih lama daripada alokasi ...
Ellis
@Simon dapatkah Anda menjelaskan apa yang Anda maksud dengan "implementasi alokasi memori khusus"? Apa itu, dan mengapa Anda menginginkannya?
temporary_user_name
2
@Aerovistae Alokasi memori memerlukan panggilan ke sistem operasi, ini adalah operasi yang sangat mahal. Biasanya saat membuat mesin gim, Anda ingin melakukan manajemen memori Anda sendiri, jika Anda akan mengalokasikan banyak memori sekali dan kemudian Anda akan mendistribusikan memori itu dalam program sendiri. Dengan begitu Anda hanya memindahkan pointer dan tidak memanggil kernel setiap kali Anda menginginkan memori tambahan. Ini adalah topik yang cukup maju dan membutuhkan aritmetika pointer canggih terutama jika Anda menginginkan semacam mekanisme anti fragmentasi.
dreta
3
Jadi ketika Simon mengatakan dia tidak akan merekomendasikannya karena tidak menawarkan implementasi alokasi memori kustom, benarkah ini tidak berlaku untuk pemula, atau bahkan untuk sebagian besar pengembang menengah?
temporary_user_name
21

Saran awal yang jelas adalah Ogre3D .

Tetrad
sumber
Apakah Anda punya pengalaman dengan itu? Apakah ini cukup stabil, ditulis dengan baik, dan bagus untuk pemula 3D? Saya dapat dengan mudah mencari daftar mesin 3D (seperti yang Anda lihat dari pertanyaan saya), saya mencari lebih banyak wawasan tentang yang merupakan pilihan yang baik, dan mengapa. Terima kasih.
davr
1
Tapi Ogre3D bukan mesin. Ini adalah perpustakaan rendering 3d. Anda harus memilih mesin yang dibangun di atas ogre atau membangun Anda sendiri.
Api
4
Saya memiliki pengalaman luas dengan Ogre3d; Ini sangat stabil dan ditulis dengan baik, dan melakukan pekerjaan yang baik untuk mengurus tugas-tugas duniawi (adegan culling, mesh loading, billboard / partikel). Api benar karena bukan Mesin Game; tetapi Ogre dapat (dan sering) digabungkan dengan perpustakaan lain untuk membuatnya. Ini adalah langkah fantastis di atas "menggambar segitiga individu dan menulis loader objek 3D saya sendiri", tetapi itu hanya pustaka rendering. Jika itu yang Anda inginkan, itu adalah perpustakaan yang bagus dengan komunitas yang aktif dan suportif.
Karantza
3
@Fire OGRE: Mesin Rendering Grafis Berorientasi Objek. Itu mesin. Ia memiliki lajang di semua tempat. Pasti mesin.
Ricket
3
@Ricket Ya, mesin grafis , tetapi bukan mesin game yang mungkin sangat ia maksudkan karena ini sangat ditekankan dalam dokumen raksasa. Juga pola singleton (anti) tentu saja tidak ada hubungannya dengan itu menjadi mesin atau tidak.
Raoul
7

Open Scene Graph adalah mesin 3D lintas platform yang cukup bagus, dirancang dengan sangat baik. Berlawanan dengan Ogre3D, misalnya, ia tidak menyediakan fitur "mesin permainan", dan berkonsentrasi untuk menjadi abstraksi yang sangat bagus di atas OpenGL.

  • Ini cukup ringan, dan tidak memaksa kerangka pada Anda: Anda dapat menggunakan sesedikit atau sebanyak yang Anda inginkan, dan menggunakannya melalui SDL, SFML, wxWidgets, QT ...
  • Ini adalah pengalaman belajar yang luar biasa: saat Anda mempelajari perpustakaan, Anda semakin mengerti tentang OpenGL yang mendasarinya dan cara ia dirancang.
  • Cukup banyak siap digunakan: memiliki loader untuk format 3D arus utama
  • Ramah dengan Shader

Lihat daftar sampel yang luas .

small_duck
sumber
4

Dalam hal mesin game:

  • Torque3D : Banyak fitur, tetapi beberapa akan menganggap kode sulit untuk dikerjakan.
  • C4 Engine : Murah, dukungan penulis yang luar biasa, tetapi alat-alatnya bisa menggunakan sedikit kerja.
  • DIY: Pilih satu set perpustakaan dan rekatkan dengan game Anda.

Karena Ogre3D disarankan, ada juga alternatif Horde3D yang ringan .

Pro:

  • Desainnya bagus dan kemungkinan akan mengungguli Ogre3D untuk rendering yang berat (jika belum)
  • C API, membuat binding untuk bahasa seperti Python sederhana dan mudah dirawat (kode internal adalah C ++)

Cons:

  • Membutuhkan setidaknya dukungan OpenGL 2.0
  • Komunitas yang lebih kecil
  • Basis kode tidak stabil (perubahan arsitektur utama masih terjadi)
Jason Kozak
sumber
2
Hindari Torsi 3D jika Anda menghargai kewarasan Anda. Mesin scripting adalah mimpi buruk kacau, sangat frustasi untuk bekerja dengannya.
Jared Updike
4

Irrlicht memberikan sedikit lebih banyak daripada Ogre3D, dan pada saat yang sama sedikit lebih langsung (misalnya tidak terasa seperti Anda hanya "menghidupkan mesin" dan menontonnya berjalan, rasanya lebih seperti Anda yang menjadi satu perintah berjalan, sebagaimana mestinya menurut saya).

Saya pikir akan lebih baik untuk memulai!

Ricket
sumber
4

Saya tahu Anda meminta C ++, tetapi Panda3D juga bekerja dengan C ++, meskipun awalnya ditargetkan untuk bekerja dengan python. Ini adalah mesin permainan, tetapi apa pun ...

jokoon
sumber
2

Pilihan yang jelas, jika Ogre3D level terlalu rendah untuk Anda, akan menjadi NeoAxis: http://www.neoaxisgroup.com/

Didukung oleh Ogre, tetapi merupakan platform pengembangan game yang lengkap.

Ini menargetkan .NET sehingga Anda dapat menggunakan C #, mengelola C ++, VB.

Jadi lakukan itu. :)

Ogre3D dapat berjalan di berbagai perangkat seluler, seperti iPhone dan Android. Jadi tidak terlalu besar.

Jangan salah mengira ukuran untuk kinerja.

Saya tidak yakin apakah IrrLicht memiliki dukungan iPhone resmi, tetapi Ogre3D memilikinya.

jacmoe
sumber
Jika ada di .NET tidak bisakah Anda menambahkan IronPython ke daftar bahasa? Python adalah bahasa scripting yang luar biasa.
Jared Updike
2
.BERSIH? Bukankah itu mengesampingkan cross-platform?
davr
Net tidak, tetapi Neo-Axis menggunakan C ++ / CLI yang tidak.
jsimmons
Saya berbicara dengan pengembang utama Neoaxis hari ini, dan mereka mengumumkan dukungan Mac OS X September ini. :)
jacmoe
1

Jawaban yang bagus sejauh ini, tetapi saya akan menambahkan Marmalade . Itu ponsel yang cukup baik. Sekelompok studio besar telah merilis game konsol dengan itu, jadi itu punya kredensial. Bahkan ada editor mirip kesatuan yang dibangun di atasnya, Shiva3D , yang memungkinkan untuk lintas platform juga.

ADB
sumber