Memulai dengan Dev Game 2d (C ++): DirectX atau OpenGL? [Tutup]

12

Jadi, saya seorang siswa yang ingin terlibat dalam pengembangan game dan saya ingin melakukan sesuatu 2D, mungkin tetris / space invaders / sesuatu-dengan-klon interaksi tikus kecil.

Saya mengarahkan pencarian saya ke arah C ++ dan 2d dan akhirnya mengarah ke DirectX / OpenGL

Sekarang seperti yang saya mengerti, semua paket ini akan lakukan untuk saya adalah menggambar barang di layar. Dan hanya itu yang saya pedulikan pada saat ini. Suara tidak perlu. Input dapat ditangani dengan stdlib mungkin.

Jadi, untuk pemula yang mencoba membuat game dasar di C ++, apakah Anda akan merekomendasikan DirectX atau OpenGL? Mengapa? Apa perbedaan fitur utama antara keduanya? Mana yang lebih bisa digunakan?

Dfowj
sumber

Jawaban:

16

Saya akan merekomendasikan SDL ( http://www.libsdl.org/ ) untuk 2D, itu adalah tempat saya pertama kali memulai dengan hal-hal grafis dan itu cukup mudah digunakan, meskipun saya hampir tidak tahu C ++ pada saat itu.

Ini (mirror) adalah serangkaian tutorial yang saya mulai dan temukan sangat berguna (mereka sedikit tanggal bahkan ~ 4 tahun yang lalu ketika saya bekerja melalui mereka, tapi saya tidak berpikir SDL telah banyak berubah dan mereka masih harus relevan ).

SDL juga melakukan penanganan input dan SDL_Mixer dapat melakukan audio dasar.

Saya tidak pernah bekerja dengan DirectDraw atau OpenGL untuk hal-hal 2D, jadi saya tidak bisa berkomentar di sana, tapi saya pasti bisa merekomendasikan SDL.

Riley Adams
sumber
1
Saya menemukan SDL bagus tetapi sangat sulit untuk mendapatkan jalur dan menyertakan pengaturan dengan benar.
Skeith
1
Lihat juga lazyfoo.net/SDL_tutorials untuk beberapa tutorial yang layak (termasuk tutorial pengaturan untuk berbagai IDE).
BeanBag
Setuju dengan @Skeith. Saya tidak bisa membayangkan sakit kepala untuk mendapatkan pengaturan SDL untuk pertama kalinya bagi pemula. Cukup sulit berurusan dengan beberapa masalah pengaturan umum dengan amatir atau bahkan profesional. Setelah mendapatkan pengaturan SDL untuk pertama kalinya, saya bisa mendapatkan pengaturan APA SAJA selama sisa hidup saya, dengan mudah. Itulah berapa banyak sakit kepala yang memberi saya; berapa banyak pengalaman yang saya dapat pelajari lebih dari yang khas untuk mendirikan perpustakaan. Sudah terlalu lama untuk mengingat apa yang sebenarnya memberi saya paling banyak masalah, atau masalah apa yang saya miliki, tetapi semua perpustakaan lainnya mudah diatur.
Carter81
7

Saya menggunakan SDL dan SFML untuk proyek game saya. Saya menggunakan SDL untuk game yang sudah jadi, game tetris, dan saya kebanyakan menggunakan SFML sebagai layer windowing untuk eksperimen shader. Dari pengalaman saya, saya harus mengatakan bahwa SDL adalah apa yang dikatakannya. Ini adalah lapisan media langsung yang sederhana, yang mengabstraksi data yang digunakan media Anda (suara dan video) ke tingkat yang dapat berinteraksi dengan berbagai platform. Itu "semua" yang dilakukannya.

Karena itu, Anda umumnya harus mencampurnya dengan beberapa perpustakaan lain, terutama SDL_mixer, SDL_gfx, dan SDL_image, yang menyediakan fungsionalitas yang dibutuhkan setiap orang untuk membuat game.

Semua perpustakaan ini juga dimaksudkan untuk bahasa pemrograman C, dan mereka mengikuti konvensi itu. Bukannya ada yang salah dengan itu, tetapi jika Anda menginginkan pendekatan berorientasi objek untuk bagaimana Anda berinteraksi dengan io, maka pada dasarnya Anda harus membangun layer itu sendiri.

SFML hadir dengan segala yang ada di luar kotak. Ini memiliki suara, memiliki video, memiliki pencampuran, memiliki bingkai-capping, dan berorientasi objek. Jika itu yang Anda inginkan, saya sarankan Anda melakukannya. SFML juga memiliki lapisan abstraksi untuk beberapa fungsi dasar dalam OpenGL (khususnya beginShape / EndShape dan pixel shaders). Saya tidak berpikir SDL memiliki hal seperti itu, hanya metode untuk bergabung dengannya.

PS Tidak mengusir percakapan dari C / C ++, tetapi jika Anda tidak menggunakan bahasa itu untuk alasan tertentu, dan ingin yang lebih mudah, selalu ada pygame. Yang pada dasarnya adalah SDL + untuk Python.

Robert Vella
sumber
2
SFML juga C ++, sedangkan SDL adalah C. Ini membuat perbedaan jika Anda benar-benar ingin belajar C ++.
jsimmons
5

http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844

Saya setuju dengan komentar ini dan berpikir ini adalah diskusi yang bagus tentang mengapa DirectX lebih baik daripada OpenGL.

Jurnal itu sebagai tanggapan terhadap David di Wolfire.

Saya harap itu berfungsi untuk menyeimbangkannya sedikit. ;)

Namun secara umum, jika Anda menggunakan kerangka kerja lintas-platform, lintas-API:

Gunakan DirectX pada Windows dan OpenGL pada * nix.

Jacobs
sumber
Hebat membaca =) Apa ladang ranjau subjek ini adalah ...
Nailer
6
404, halaman tidak ditemukan
axel22
Saya mendapatkan 404 di tautan archive.gamedev.net / ....
Exilyth
4

http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

Saya setuju dengan pernyataan ini dan berpikir ini adalah diskusi yang bagus tentang mengapa OpenGL lebih baik daripada DirectX.

Namun, pertanyaan ini benar-benar masalah pendapat, dan DirectX benar-benar memiliki kelebihan dibandingkan OpenGL, terutama 10 dan 11 dan terutama dalam konteks pengembangan game.

Juga, jika Anda memilih untuk menggunakan OpenGL, SDL adalah perpustakaan yang luar biasa dan sangat populer, dan ada banyak sumber daya untuk mempelajari OpenGL (NeHe, dll.) - tetapi mungkin itulah tempat untuk pertanyaan lain.

Ricket
sumber
1
Sebagai lawan dari diskusi OGL vs DX, orang-orang Unity secara eksplisit memutuskan untuk beralih ke DirectX pada Windows karena driver OpenGL default untuk sebagian besar kartu video sangat buruk. Saya tidak memiliki referensi di depan saya, tetapi pada saat konferensi mereka mengatakan sesuatu di sepanjang baris driver OGL menjadi masalah crash # 1 mereka pada Windows. Untungnya lapisan abstraksi mereka berarti Anda tidak benar-benar peduli dari sudut pandang pengguna.
Tetrad 2-10
Kami membuat perangkat lunak visualisasi yang berorientasi bisnis untuk unix dan windows, dan saya dapat mengonfirmasi bahwa sebagian besar masalah yang kita lihat di Windows terkait dengan driver OpenGL.
drxzcl
1

Jika Anda baru memulai, mungkin lebih baik menggunakan mesin 2D atau kerangka kerja yang ada seperti SFML .

DrDeth
sumber
1

Saya suka Direct X dan telah menggunakannya selama beberapa tahun di banyak proyek tetapi jika pembelajaran Anda diperhatikan masalah versi.

Saya menemukan bahwa sebagian besar kode x langsung tidak akan dikompilasi di bawah versi yang berbeda dan ini bisa menjadi neraka jika Anda mencoba mengikuti tutorial.

Saya merekomendasikan Direct X karena ada fitur untuk segala sesuatu yang membuatnya lebih mudah ketika Anda pertama kali memulai dan kemudian cara yang lebih canggih untuk memanipulasi hal-hal saat Anda maju.

Skeith
sumber
1

Mesin Game Haaf

Saya tidak tahu seberapa mutakhirnya (maksud saya bukan, tapi saya pikir tidak ada alasan mengapa itu tidak bisa digunakan), tetapi saya menggunakannya beberapa waktu yang lalu (C ++) dan saya benar-benar menikmatinya. HGE tidak diperbarui sejak 05.08, tetapi sekali lagi, saya ingat itu sangat mudah dipelajari, dan cepat. Itu juga dilengkapi dengan segala macam alat dan penolong seperti sistem partikel.

Ngomong-ngomong, jika yang Anda inginkan adalah membuat gim yang sebenarnya, sebagai lawan untuk mempelajari hal-hal yang terjadi "di bawah tenda" dalam proses menggambar dan semacamnya, saya akan merekomendasikan menggunakan sesuatu yang lebih tinggi kemudian openGL atau DirectX, atau Anda akan menghabiskan waktu menggambar hal-hal di layar sebagai lawan membuat game yang sebenarnya. Dan HGE jelas layak untuk dicoba.

http://hge.relishgames.com/

Bahasa Jerman Zaky
sumber
0

Saya di posisi yang sama dengan Anda, baru saja mulai mengerjakan pengembangan game sendiri (di platform iPhone) beberapa bulan lalu. Berasal dari latar belakang C, saya sebenarnya akan menyarankan Anda menggunakan kerangka kerja (Khususnya Cocos2d).

Keuntungan dari kerangka kerja lebih dari itu dapat dibahas dalam posting ini - tetapi terutama menangani sebagian besar pemrosesan tingkat rendah dengan OpenGL dan memberikan Anda metode untuk menangani apa yang kemungkinan besar akan Anda perlukan untuk pengembang game. Mereka memiliki komunitas yang hebat, bersifat open source, dan karenanya jika Anda perlu mengakses kode inti kerangka kerja / memodifikasi sedikit pun agar sesuai dengan kebutuhan Anda / pergi ke OpenGL tingkat rendah jika perlu - Anda masih diberikan pilihan itu.

Anda dapat pergi rute OpenGL langsung tetapi bagi saya sepertinya hanya membutuhkan banyak tenaga.

Anda kemungkinan besar juga ingin melihat ke berbagai pustaka fisika yang ada di sana - Google Chipmunk dan Box2D untuk informasi lebih lanjut.

Bersulang!

Salman
sumber
1
+1 karena tidak layak berada di -2. Terlalu banyak troll di situs web ini memberi negatif tanpa alasan. Jujur, saya bahkan tidak mengerti mengapa mereka bahkan membiarkan apa pun di bawah 0 ditampilkan. Ini sama bodohnya dengan YouTube yang memungkinkan downvoting.
Carter81