Bir C ++ 2d oyunu yazmak istersem nereden başlarım? [kapalı]


17

Ben bir C # web geliştiricisi ve beceri setimi genişletmek ve bunu yaparken biraz eğlenmek istiyorum. Bazı C ++ temelleri biliyorum ve C ++ kullanarak kendim için basit bir 2d oyun / oyun motoru yazmak isterim. Başka hangi kütüphanelere veya SDK'lara ihtiyacım var ve ilerlemek için bazı eğiticileri ve bilgi kaynaklarını nerede bulabilirim?

CNA ile zaten XNA'ya baktım. Bunun için çok fazla kaynak var ama Microsoft olmayan ürünleri kullanmayı tercih ederim. Bunun amacı daha iyi bir programcı olurken biraz eğlenmektir.

Lütfen başlamak için en iyi yeri istemediğimi unutmayın . Sadece başlamak için bir yer istiyorum.

Herhangi bir yardım için teşekkürler!

Yanıtlar:


27

C ++ game dev için standart başlangıç ​​yerim (tecrübelerime göre) SDL'dir . Bununla, XNA'dan daha fazla ellerinizi biraz daha kirletmelisiniz.

Biraz daha yüksek bir şey denemek istiyorsanız SFML öneririm . Sizin için daha önemli görevlerden bazılarını yerine getirir, ancak yine de bellek kullanımınızı, vb.


1
Bunlara bakacağım. XNA ile ilgili en büyük sorunum o kadar açıktı ki, araştırmaya ilgi duyduğum daha düşük seviyedeki şeyleri gerçekten öğreniyormuşum gibi hissetmedim.
quakkels

6
SFML güzel bir tasarıma sahiptir, ancak yine de biraz buggy ve büyük bir API yeniden tasarım sürecindedir - Bir sonraki sürüm iyi cilalanana kadar daha karmaşık oyunlar için kullanmam.
Bitgarden

SDL'den biraz daha zorlayıcı bir şey istiyorsanız, ClanLib'i deneyin . XNA gibi donanım hızlandırmayı destekler, aynı zamanda Linux ve ayrıca 2D özel olarak da çalışır.
ChrisC

2
Ayrıca boğaz için doğrudan gidebilirsiniz - OpenGL benim kişisel favorim (SDL veya SFML ile sarabilirsiniz)
ultifinitus

9

SDL kullanmanızı öneririm . Dokümantasyon ve desteğin oldukça iyi olması uzun zaman aldı ve ekranda bir çizim yüzeyi elde etmenin en kolay yollarından biri. Size C ++ 'da yazma dersleri verecek (muhtemelen SDL C işlev çağrılarını çok fazla sarmak isteyeceksiniz) ve ayrıca işaretçileri ve referansları kullanma ve bazı temel bellek yönetimini yapma konusunda biraz deneyim kazandıracak. Kendi belleğinizi yönetmek C ++ ve C # arasındaki en büyük farklardan biridir.


9

Şahsen, aşağıdaki nedenlerden ötürü Allegro 5'i seçerim :

  1. CMake tabanlı bir yapı sistemine sahiptir. Bu, birden fazla platformda çalışmak için çoğu sistem oluşturmaktan çok daha kolay hale getirir. Bu küçük bir şey gibi görünüyor, ancak genel olarak oldukça önemli. Kütüphanenin inşasını kolaylaştırır.

  2. SFML hala önemli miktarda değişmektedir. 2.0 oldukça önemli bir değişiklik. Oysa Allegro zaten sürüm 5 ile önemli bir değişiklik geçirdi ve şimdi hepsi istikrarla ilgili.

  3. Modülerliği SFML'den farklı bir şekilde kapsar. SFML ile belirli bileşenleri istersiniz, ancak hepsini alırsınız. Grafik bileşenini sorarsanız, tüm grafik bileşenini alırsınız. Allegro 5 ile her zaman grafik bileşenini elde edersiniz. Ancak Allegro'nun bitmap yükleyicilerini kullanmak istemiyorsanız; kendiniz kullanabilirsiniz.

  4. Çok iyi belgelere sahiptir. SFML Doxygen tarzı belgeler kullanır, ancak bu oldukça Spartan'dır. Oysa Allegro 5 daha kapsamlıdır, işlevleri kapsadıkları belirli sistemlere göre gruplanmıştır. Mükemmel değil, ama genel olarak daha iyi.

  5. Onlar zekisin yeterince etmek değil parçacığı yapmaya çalışıyoruz. C ++ 11 / Boost.Threads yaygın olarak kullanılabilir veya hemen köşede, başka bir iplik sarmalayıcı kullanmak sadece sorunlu olmaktan daha fazlası olabilir: kodunuzun düzgün çalışmasını sağlamak tehlikeli olabilir.


Neden SDL veya SFML yerine Allegro'yu tercih edersiniz?
Quazi Irfan

@iamcreasy: Eğer ısrar edersen.
Nicol Bolas

Hala SDL'den bahsetmiyorsun ...
Mühendis

@NickWiggill: SDL, iş parçacıklarına ve platforma özgü oluşturma sistemlerine sahiptir. Belirli bir şey için dışarı çağırmaya ihtiyaç duymadım.
Nicol Bolas

@ nicol-bolas, Allegro'nun eksilerini söylemedin. Çok düşük miktarda öğretici karşılaştırma gibi.
Quazi Irfan

4

Ben başlamak için harika bir yer LazyFoo olduğunu düşünüyorum . Bu, SDL ile gördüğüm diğer yerlerden daha hızlı çalışmanızı sağlar. Hızlı bir şekilde OpenGL'ye girmenizi tavsiye ederim (midenizi hazırlayabildiğiniz anda), donanım hızlandırması ile programlama dolarınız için çok daha fazla patlama elde edersiniz. Bu rotaya giderseniz, bu kılavuzu tavsiye ederim .


2

C ++ kullanıyorsanız SFML'yi tavsiye ederim . Bu hızlı bir şekilde ekranda bir şey alacak ve c ++ oyun kodu ile kullanmak düz ileri.


2
  • SFML - gruptaki bebek, ancak okuduğumdan kullanımı en kolay olanı.
  • SDL - orta yol. Çok olgun kütüphane, mantıklı, genellikle zaman zaman biraz gizemli ve çok yaygın bir seçimse kısa ve öz. Görüntü formatlarını ayarlamak biraz piç olabilir, ben bu cephede yardımcı olmak için lazyfoo'nun eğiticilerini kullandım.
  • Allegro - Geriatrik, Atari ST günlerinden beri var. Bu nedenle, mantık çok daha düşük özellikli sistemler için üretildiğinden, 2D işleme kodunun birçoğu (ki sadece Allegro 4'te olduğunu düşünüyorum) oldukça hızlı. Kişisel olarak, belgeleri göz önünde bulundurarak bile çok sezgisel bulmuyorum.

OpenGL'nin bugünlerde işlerin 2B tarafını hızlandırdığı düşünüldüğünde, Allegro ve SDL'nin sahip olduğu (veya önceki sürümlerde) olan hızlı yazılım oluşturucularına erişmek o kadar da önemli değil. Ancak bir kütüphane seçtiğimde proje olgunluğuna, kullanıcı tabanına ve dokümanlara hızdan daha fazla odaklanıyorum (hız makul olduğu sürece) ve SDL ve Allegro'nun bu cephelerde kazandığını söyleyebilirim. SDL ayrıca Civ: Call to Power gibi üçlü AAA oyunlarını yayınladı.

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.