З чого почати, якщо хочу написати гру C ++ 2d? [зачинено]


17

Я веб-розробник C # і хочу розширити свій набір навичок і повеселитися, роблячи це. Я знаю деякі основи C ++, і я хотів би написати простий 2-ігровий / ігровий двигун для себе, використовуючи C ++. Які ще бібліотеки чи SDK мені потрібні і де я можу знайти підручники та інформаційні ресурси, щоб рухатись вперед?

Я вже розглядав XNA за допомогою C #. Для цього є багато ресурсів, але я б скоріше використовував продукти, що не належать Microsoft. Сенс цього полягає в тому, щоб трохи розважитися, ставши краще програмованим програмістом.

Зауважте, що я не прошу найкращого місця для початку. Я просто прошу на місце , щоб почати.

Дякуємо за будь-яку допомогу!

Відповіді:


27

Стандартне вихідне місце (на мій досвід) для ігор C ++ Dev - це SDL . Ви повинні зробити свої руки трохи бруднішими, ніж у вас XNA.

Якщо ви хочете спробувати щось трохи вищого рівня, я б запропонував SFML . Він вирішує деякі найскладніші завдання для вас, але ви все ще повинні стежити за своїм використанням пам'яті тощо.


1
Я розгляну це. Моя найбільша проблема з XNA полягає в тому, що це було так просто, що я не відчував, що я справді вивчаю речі нижчого рівня, що мені цікаво досліджувати.
quakkels

6
SFML має приємний дизайн, але все ще є досить баггі і перебуває в процесі великого перепроектування API - я б не використовував його для складніших ігор, поки наступний реліз не буде добре відшліфований.
Bitgarden

Якщо ви хочете щось складніше, ніж SDL, спробуйте ClanLib . Як і XNA, він підтримує апаратне прискорення, але також працює на Linux, а також 2D-ексклюзив.
ChrisC

2
Ви також можете піти прямо за горло - OpenGL - це мій особистий фаворит (можна обгорнути його SDL або SFML)
ultifinitus

9

Я б запропонував використовувати SDL . Це вже тривалий час, тому документація та підтримка досить хороші, і це один із найпростіших способів, яким я знаю, щоб отримати графічну поверхню на екрані. Це дасть вам практичні заняття з письма на мові C ++ (оскільки, ймовірно, ви захочете багато обернути виклики функції SDL C), а також дасть вам досвід роботи з покажчиками та посиланнями та виконанням базового управління пам’яттю. Управління власною пам'яттю - одна з головних відмінностей між C ++ та C #.


9

Особисто я б вибрав Allegro 5 з наступних причин:

  1. Він має систему побудови на основі CMake. Це робить набагато простіше, ніж більшість систем побудови для роботи на кількох платформах. Це здається незначною річчю, але в цілому це досить важливо. Це робить бібліотеку набагато простішою.

  2. SFML все ще значним потоком. 2.0 - це суттєва зміна. Тоді як Allegro вже зазнав суттєвих змін у версії 5, і тепер все стосується стабільності.

  3. Він охоплює модульність інакше, ніж SFML. За допомогою SFML ви запитуєте конкретні компоненти, але ви отримуєте їх усі. Якщо ви попросите графічний компонент, ви отримаєте всю графічну складову. Завдяки Allegro 5 ви завжди отримуєте графічний компонент. Але якщо ви не хочете використовувати растрові навантажувачі Allegro, вам не доведеться; ви можете використовувати своє.

  4. Він має дуже гарну документацію. SFML використовує документацію в стилі Doxygen, але навіть це досить спартанське. Тоді як Allegro 5 є більш всеосяжним, з функціями, згрупованими разом на основі конкретних систем, які вони охоплюють. Це не ідеально, але краще в цілому.

  5. Вони досить розумні, щоб не намагатися робити нитки. З C ++ 11 / Boost.Threads або широко доступними, або безпосередньо за кутом, використання іншої обгортки для потоків може бути не просто проблематичним: правильне спрацьовування коду може бути небезпечним.


Чому ви віддаєте перевагу / пропонуєте Allegro над SDL або SFML?
Куазі Ірфан

@iamcreasy: Якщо ви наполягаєте.
Нікол Болас

Ви досі не згадуєте SDL ...
Інженер

@NickWiggill: SDL має нитки та особливості платформи побудови. Я не відчував необхідності викликати це для чогось конкретного.
Нікол Болас

@ nicol-bolas ви не згадали про мінуси Allegro. Як і дуже низька кількість підручників для порівняння.
Куазі Ірфан

4

Я думаю, що фантастичним місцем для початку є LazyFoo . Це дозволить вам працювати і працювати з SDL швидше, ніж будь-яке інше місце, яке я бачив. Я рекомендую швидко потрапити в OpenGL (як тільки ви зможете це зробити), тому що ви отримаєте набагато більше удару за програмування долара - з апаратним прискоренням. Якщо ви йдете цим шляхом, я рекомендую це керівництво .


2

Я рекомендую SFML, якщо ви використовуєте c ++. Він швидко отримає вам щось на екрані, і використовувати це з кодом гри + і прямо.


2
  • SFML - дитина в групі, але потенційно найпростіше використовувати з того, що я прочитав.
  • SDL - середня дорога. Дуже зріла бібліотека, розважлива, загалом лаконічна, якщо час від часу трохи таїться, і дуже поширений вибір. Налаштування форматів дисплея може бути злиденним, я використовував підручники lazyfoo, щоб допомогти на цьому фронті.
  • Allegro - геріатричний, це вже з часів Atari ST. З цієї причини багато коду 2D-рендерінгу (який, на мою думку, є лише в Allegro 4), досить проклятене, оскільки логіка була побудована для набагато нижчих систем специфікації. Я особисто не вважаю це дуже інтуїтивно зрозумілим, навіть враховуючи документацію.

Зважаючи на те, що OpenGL прискорює двосторонній процес у наші дні, не так важливо мати доступ до швидких програм програмного забезпечення, які Allegro та SDL мали (або мали у попередніх версіях). Однак, коли я вибираю бібліотеку, я зосереджуюсь на зрілості проекту, базі користувачів та документах більше, ніж на швидкості (доки швидкість розумна), і я б сказав, що SDL та Allegro виграють на цих фронтах. SDL також випускала потрійні назви AAA, такі як Civ: Call to Power.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.