2d Game Dev (C ++) ile Başlarken: DirectX veya OpenGL? [kapalı]


12

Bu yüzden, ben oyun geliştirme kapısında ayağımı almak isteyen bir öğrenciyim ve 2B, belki bir tetris / uzay işgalcileri / küçük bir fare-etkileşim klonu ile bir şey yapmak istiyorum.

Aramalarımı C ++ ve 2d yönünde işaret ettim ve sonunda DirectX / OpenGL'ye yönlendirdim

Şimdi anladığım kadarıyla, bu paketlerin benim için yapacağı tüm şeyleri ekrana çizmek. Ve bu noktada gerçekten önemsediğim şey bu. Ses gerekmez. Girdi muhtemelen stdlib ile işlenebilir.

Peki, C ++ 'da temel bir oyun yaratmaya çalışan yeni başlayanlar için DirectX veya OpenGL'yi tavsiye eder misiniz? Neden? İkisi arasındaki bazı önemli özellik farkları nelerdir? Hangisi daha kullanışlı?

Yanıtlar:


16

Ben 2D için SDL ( http://www.libsdl.org/ ) tavsiye ederim , o zaman grafik şeyler ile ilk başladığım yerdi ve o zamanlar neredeyse hiç C ++ bilmesem bile kullanımı oldukça kolaydı.

Bu (ayna) , başladığım ve çok yararlı bulduğum öğreticiler kümesidir (bunlar üzerinde çalıştığımda ~ 4 yıl önce bile biraz tarihliler, ancak SDL'nin çok değiştiğini ve hala alakalı olması gerektiğini düşünmüyorum. ).

SDL giriş işlemeyi de yapar ve SDL_Mixer temel ses yapabilir.

Ben 2D şeyler için DirectDraw veya OpenGL ile hiç çalışmadım, bu yüzden orada yorum yapamam, ama kesinlikle SDL tavsiye edebilir.


1
SDL'yi iyi buldum, ancak yolları almak çok zordu ve kurulumu düzgün bir şekilde içeriyor.
Skeith

1
Ayrıca bazı iyi öğreticiler için lazyfoo.net/SDL_tutorials (çeşitli IDE'ler için kurulum öğreticiler içerir) göz atın .
BeanBag

@Skeith ile aynı fikirde. Yeni başlayanlar için ilk kez SDL kurulumunun baş ağrılarını hayal edemiyorum. Amatörler ve hatta profesyoneller ile bazı yaygın kurulum sorunlarıyla uğraşmak yeterince zordur. SDL kurulumunu ilk kez yaptıktan sonra, hayatımın geri kalanında kolaylıkla HERHANGİ bir kurulum elde edebildim. Bana kaç tane baş ağrısı verdi; ne kadar deneyim edindiğimi, bir kütüphane kurmak için tipik olandan daha fazla şey öğrendim. Bana en çok neyin en çok problemi verdiğini ya da yaşadığım sorunları hatırlamak çok uzun zaman önceydi, ancak diğer tüm kütüphanelerin kurulumu kolaydı.
Carter81

7

Oyun projelerim için hem SDL hem de SFML kullandım. Bitmiş bir oyun, bir tetris oyunu için SDL kullandım ve çoğunlukla gölgelendirici deneyleri için bir pencere katmanı olarak SFML kullandım. Deneyimlerime göre, SDL'nin söylediği şey olduğunu söylemek zorundayım. Medyanızın (ses ve video) birlikte çalıştığı verileri, farklı platformlar arasında etkileşim kurabileceğiniz bir seviyeye çeken basit bir doğrudan medya katmanıdır. "Hepsi" bu kadar.

Bu nedenle, genellikle herkesin oyun oluşturmak için ihtiyaç duyduğu işlevselliği sağlayan birkaç başka kütüphaneyle, özellikle de SDL_mixer, SDL_gfx ve SDL_image ile karıştırmanız gerekir.

Tüm bu kütüphaneler aynı zamanda C programlama dili içindir ve kurallarına uyarlar. Bununla ilgili yanlış bir şey olmadığı için değil, ancak io ile nasıl etkileşime girdiğinize nesne odaklı bir yaklaşım istiyorsanız, temel olarak bu katmanı kendiniz oluşturmanız gerekir.

SFML, kutudan çıkar çıkmaz her şeyle birlikte gelir. Sesi var, videosu var, karışıyor, çerçeve kaplaması var ve nesne yönelimli. İstediğiniz buysa, bunun için gitmenizi tavsiye ederim. SFML ayrıca opengl'deki bazı temel işlevler için bir soyutlama katmanına sahiptir (özellikle beginShape / EndShape ve piksel gölgelendiricileri). SDL'nin böyle bir şey olduğunu düşünmüyorum, sadece onunla birleşmek için bir yöntem.

Not C / C ++ 'dan sohbeti uzaklaştırmak için değil, ancak belirli bir nedenden dolayı bu dili kullanmıyorsanız ve daha kolay bir dil istiyorsanız, her zaman pygame vardır. Temelde Python için SDL +.


2
SFML de C ++, SDL C'dir. Aslında C ++ öğrenmek istiyorsanız bu bir fark yaratır.
jsimmons

5

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

Bu sözlere katılıyorum ve DirectX'in OpenGL'den neden daha iyi olduğu konusunda mükemmel bir tartışma olduğunu düşünüyorum.

Bu dergi, Wolfire'daki David'e yanıt olarak.

Umarım bu biraz dengelenir. ;)

Ancak genel olarak, platformlar arası, çapraz API çerçevesi kullanıyorsanız:

Windows'ta DirectX ve * nix'te OpenGL kullanın.


Büyük okuma =) Bu konu ne mayın tarlası ...
Nailer

6
404, sayfa bulunamadı
axel22


Archive.gamedev.net / ... linkinden 404 tane alıyorum.
Exilyth

4

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

Bu sözleri kabul ediyorum ve bunun OpenGL'nin DirectX'ten neden daha iyi olduğu konusunda mükemmel bir tartışma olduğunu düşünüyorum.

Bununla birlikte, bu soru kesinlikle bir fikir meselesidir ve DirectX'in özellikle 10 ve 11 ve özellikle oyun geliştirme bağlamında OpenGL'ye olan faydaları vardır.

Ayrıca, OpenGL ile gitmeyi seçerseniz, SDL harika ve çok popüler bir kütüphanedir ve OpenGL (NeHe, vb.)


1
OGL ve DX tartışmasının bir kontrpuanı olarak, Unity adamları çoğu video kartı için varsayılan OpenGL sürücüleri çok kötü olduğu için açıkça Windows'ta DirectX'e geçmeye karar verdiler. Önümde referans yok, ama konferanslarında bir keresinde OGL sürücülerinin çizgileri boyunca Windows'taki # 1 kilitlenme sorunu olduğunu söylediler. Neyse ki soyutlama katmanları, kullanıcıların bakış açısından gerçekten umursamadığınız anlamına gelir.
Tetrad

Hem unix hem de pencereler için iş odaklı görselleştirme yazılımı yapıyoruz ve Windows'ta gördüğümüz sorunların çoğunun OpenGL sürücüsü ile ilgili olduğunu doğrulayabilirim.
drxzcl

1

Yeni başlıyorsanız, muhtemelen mevcut bir 2D motoru veya SFML gibi bir çerçeveyi kullanmak daha iyidir .


1

Direct X'i seviyorum ve birkaç yıldır birçok projede kullanıyorum, ancak öğreniminiz sürüm sorunlarına dikkat ederse.

Doğrudan x kodu çoğunluğu farklı bir sürüm altında derlemek olmaz ve bir öğretici takip etmeye çalışıyorsanız bu cehennem olabilir bulundu.

İlk başladığınızda kolaylaştıran her şey için özellikler ve ilerledikçe şeyleri manipüle etmenin daha gelişmiş yolları olduğu için Direct X'i öneriyorum.


1

Haaf'ın Oyun Motoru

Ne kadar güncel olduğunu bilmiyorum (demek istediğim, ama kullanılabilir olmaması için herhangi bir neden olduğunu düşünmüyorum), ama bir süre önce kullandım (C ++) ve gerçekten eğlendim. HGE 05.08'den beri güncellenmedi, ancak yine, öğrenmesi oldukça basit ve hızlı olduğunu hatırlıyorum. Ayrıca bir parçacık sistemi gibi her türlü alet ve yardımcı ile birlikte gelir.

Her neyse, istediğiniz şey aslında bir oyun yaratmaksa, çizim işlemlerinde "kaputun altında" olan şeyleri öğrenmenin aksine, openGL veya DirectX'ten daha yüksek bir şey kullanmanızı öneririm, ya da gerçek bir oyun oluşturmak yerine zamanınızı ekranda bir şeyler çizerek geçireceksiniz. Ve HGE kesinlikle kontrol değer.

http://hge.relishgames.com/


0

Sizinle aynı pozisyondayım, birkaç ay önce kendimi (iPhone platformunda) oyun geliştirme üzerinde çalışmaya başladım. Bir C geçmişinden geliyor, aslında bir çerçeve (özellikle Cocos2d) kullanmanızı öneririm.

Bir çerçevenin avantajları daha sonra bu yazıda tartışılabilir - ancak esas olarak OpenGL ile düşük seviyeli işlemenin çoğunu ele alır ve oyun geliştiricisi için en çok ihtiyaç duyacağınız şeylerle başa çıkmak için yöntemler sağlar. Onlar büyük bir topluluk var, açık kaynak vardır ve bu nedenle çerçevenin çekirdek koduna erişmek / herhangi bir biti ihtiyaçlarınıza uyacak şekilde değiştirmek / gerekirse düşük seviyeli OpenGL gitmek gerekiyorsa - hala bu seçim verilir.

Doğrudan OpenGL'nin rotasına gidebilirsiniz, ancak bana göre sadece aşırıya kaçmış gibi görünüyor.

Büyük olasılıkla, orada bulunan çeşitli fizik kütüphanelerine de bakmak isteyeceksiniz - daha fazla bilgi için Google Chipmunk ve Box2D.

şerefe!


1
+1 değerini hak etmediği için +1. Sebepsiz negatif veren bu web sitesinde çok fazla trol var. Dürüst olmak gerekirse, neden 0'ın altında herhangi bir şeyin gösterilmesine izin verdiklerini bile anlamıyorum. Bu youtube kadar aptalca aşağı oylama izin.
Carter81
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.