Итак, я студент, который хочет войти в процесс разработки игр, и я собираюсь сделать что-то 2D, может быть, клон тетрис / космические захватчики / что-то с мышкой.
Я направил свои поиски в направлении C ++ и 2d и в конечном итоге привел к DirectX / OpenGL
Теперь, насколько я понимаю, все эти пакеты будут делать для меня, это рисовать вещи на экране. И это все, что меня действительно волнует на данный момент. Звук не нужен. Ввод может быть обработан с помощью stdlib, вероятно.
Итак, для новичка, пытающегося создать простую игру на C ++, вы бы порекомендовали DirectX или OpenGL? Почему? Каковы некоторые ключевые отличия между ними? Какой из них более полезен?
Я использовал SDL и SFML для своих игровых проектов. Я использовал SDL для готовой игры, тетрис, и я в основном использовал SFML в качестве оконного слоя для шейдерных экспериментов. Исходя из моего опыта, я должен сказать, что SDL - это то, что он говорит. Это простой прямой медиа-слой, который абстрагирует данные, с которыми работают ваши медиа (звук и видео), до уровня, с которым вы можете взаимодействовать на разных платформах. Это «все», что он делает.
Из-за этого вам, как правило, приходится смешивать его с несколькими другими библиотеками, особенно SDL_mixer, SDL_gfx и SDL_image, которые предоставляют функциональность, необходимую всем для создания игр.
Все эти библиотеки также предназначены для языка программирования C, и они следуют его соглашениям. Не то, чтобы в этом было что-то не так, но если вам нужен объектно-ориентированный подход к тому, как вы взаимодействуете с io, то вам, по сути, придется создавать этот слой самостоятельно.
SFML поставляется со всем прямо из коробки. У него есть звук, у него есть видео, у него есть микширование, у него есть кадрирование, и это объектно-ориентированный. Если это то, что вы хотите, я бы порекомендовал вам пойти на это. SFML также имеет уровень абстракции для некоторых основных функций в opengl (в частности, beginShape / EndShape и пиксельных шейдеров). Я не думаю, что у SDL есть что-то подобное, просто метод слияния с ним.
PS Не отталкивать разговор от C / C ++, но если вы не используете этот язык по какой-то конкретной причине и хотите более легкий, всегда есть пигмент. Что в основном SDL + для Python.
источник
http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844
Я согласен с этими замечаниями и считаю, что это звездное обсуждение того, почему DirectX лучше OpenGL.
Этот журнал в ответ Дэвиду в Wolfire.
Я надеюсь, что это немного уравновешивает. ;)
Но в целом, если вы используете кроссплатформенную, кросс-API-инфраструктуру:
Используйте DirectX в Windows и OpenGL в * nix.
источник
http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX
Я согласен с этими замечаниями и считаю, что это звездное обсуждение того, почему OpenGL лучше DirectX.
Тем не менее, этот вопрос является абсолютно вопросом мнения, и DirectX имеет свои преимущества перед OpenGL, особенно 10 и 11, и особенно в контексте разработки игр.
Кроме того, если вы решите использовать OpenGL, SDL - это замечательная и очень популярная библиотека, и есть много ресурсов для изучения OpenGL (NeHe и т. Д.) - но это место для другого вопроса, возможно.
источник
Если вы только начинаете, вероятно, лучше использовать существующий 2D-движок или фреймворк, такой как SFML .
источник
Мне нравится Direct X, и я использую его в течение нескольких лет во многих проектах, но, если вы изучаете, следите за проблемами версий.
Я обнаружил, что большая часть прямого кода x не будет компилироваться под другой версией, и это может быть адом, если вы пытаетесь следовать руководству.
Я рекомендую Direct X, поскольку есть функции для всего, что облегчает его, когда вы начинаете, а затем более продвинутые способы манипулирования вещами по мере продвижения.
источник
Игровой движок Haaf
Я не знаю, насколько это актуально (я имею в виду, что это не так, но я не думаю, что есть какая-то причина, по которой его нельзя использовать), но я использовал его некоторое время назад (C ++), и я действительно получил удовольствие от этого. HGE не обновлялся с 05.08, но опять же, я помню, это было довольно просто и быстро учиться. Он также поставляется со всеми видами инструментов и помощников, как система частиц.
В любом случае, если вы хотите создать настоящую игру, а не изучать материал, который происходит «под капотом» в процессах рисования и т. Д., Я бы порекомендовал использовать что-то более высокое, чем openGL или DirectX, или вы будете тратить время на рисование чего-то на экране, а не на создание реальной игры. И HGE определенно стоит проверить.
http://hge.relishgames.com/
источник
Я нахожусь в том же положении, что и вы, только что сам начал заниматься разработкой игр (на платформе iPhone) несколько месяцев назад. Исходя из C-фона, я бы фактически предложил вам использовать фреймворк (в частности, Cocos2d).
Преимущества фреймворка более чем обсуждаются в этом посте, но в основном он обрабатывает большую часть низкоуровневой обработки с OpenGL и предоставляет вам методы для решения того, что вам, скорее всего, потребуется для разработчика игр. У них отличное сообщество, с открытым исходным кодом, и, следовательно, если вам нужен доступ к основному коду фреймворка / изменить любой его фрагмент в соответствии с вашими потребностями / перейти на низкоуровневый OpenGL, если это необходимо - вам по-прежнему предоставляется этот выбор.
Вы можете пойти по пути прямого OpenGL, но для меня это кажется излишним.
Вы, скорее всего, также захотите взглянуть на различные физические библиотеки, которые существуют там - Google Chipmunk и Box2D для получения дополнительной информации.
ура!
источник