использование беспорядка для разработки игр - PullRequest
3 голосов
/ 26 августа 2010

Я относительно новый разработчик, и я хочу изучать C ++.У меня был опыт программирования на java, javascript, actionscript и python, но я хочу что-то достаточно быстрое для создания высокопроизводительных 2D и 3D-игр.

Когда я в конце концов изучу основы (структуры управления, классы,и т.д.) Я хотел бы разработать 2D-игру.Я исследовал различные библиотеки для 2D-графики (cairo, sdl, openframeworks, clutter), но беспорядок , кажется, был наиболее оптимизирован для ускоренной графики и векторного рисования.

Было бы беспорядок будет хорошимподходит для 2D игры?Я понимаю, что в отличие от других библиотек он поддерживает свой собственный граф сцены, но в прошлом я разработал флэш-игру, поэтому я должен к этому привыкнуть.

Есть ли какие-либо проблемы с производительностью, о которых мне следует знать?Кто-нибудь еще имел опыт создания тяжелой графики с беспорядком?

Ответы [ 3 ]

7 голосов
/ 11 ноября 2010

Я много работал над встраиваемыми системами с использованием Clutter, и сейчас я делаю настольный проект с ним. Вероятно, это было бы хорошо для настольной 2D-игры с некоторыми оговорками:

  1. Основное направление разработки инструментария очень сильно ориентировано на Linux. Я не уверен, насколько хорошо поддерживаются порты Windows, Mac или iOS («фруктовый»).
  2. Документация скудная, а на афике нет книг. (Я думаю написать один.)
  3. Он написан на C и изначально предоставляет привязки к языку C. Хотя существуют привязки Clutter для многих языков, включая C ++, вам все равно необходимо понимать привязки языка C.
  4. Он изначально не использует объекты C ++. Вместо этого он использует систему GObject на основе C для объектов с единым наследованием, и даже если вы пишете в нее с привязками C ++, вам также придется кое-что понять о GObject.
  5. Если вы хотите использовать его с потоками, вы должны использовать его систему потоков - , а не Потоки POSIX, или Boost-потоки, или что-то еще.
  6. Он действительно может превзойти смолу GPU, поэтому, если вы делаете что-то необычное, частота кадров может быть посредственной на некоторых недорогих чипах Intel, используемых в дешевых ноутбуках и нетбуках.

Тем не менее, вы можете делать удивительные вещи с ним. Мне действительно нравится работать с ним, и как только вы поймете, как это сделать, смешивать и сопоставлять с C ++ очень весело.

Кроме того, есть действительно потрясающая конференция с открытым исходным кодом под названием GUADEC, на которой висят люди из Clutter. Если бы вы появились там в июле 2011 года в Берлине с действительно забавной игрой на основе Clutter, люди купили бы вам много напитков.

1 голос
/ 26 августа 2010

Должен признать, что никогда раньше не слышал о Clutter, возможно потому, что это не библиотека Windows, и большинство разработчиков игр работают на платформах Windows.Точно так же большинство разработчиков игр (даже инди-хобби) не рассматривают ни Cairo, ни Openframeworks.На сегодняшний день более распространенным будет использование SDL, хотя это не полностью аппаратно ускорено и, следовательно, не является хорошим выбором для современных игр. SFML - альтернатива, популярность которой растет, но большинство разработчиков игр в наши дни, вероятно, используют собственный рендеринг OpenGL поверх чего-то вроде SDL.

Похоже, Clutter может быть хорошим выбором, и он, безусловно, кажется полнофункциональным.Но иногда проблема с большими платформами заключается в том, что они становятся чем-то вроде огороженного сада, и сложно интегрировать дополнительные биты, которые могут вам понадобиться - например, я не знаю, насколько хорошо может работать ввод.

Другая проблема с использованием менее известного движка заключается в том, что если вы перейдете на https://gamedev.stackexchange.com/ или http://www.gamedev.net и зададите вопросы, сообщество не сможет помочь так же сильно, поскольку они незнакомы с технологией, которую вы используете.Вы должны уравновесить стоимость этого с потенциальной выгодой от использования непопулярной, но на самом деле очень компетентной библиотеки.(А также вероятность того, что эти другие парни знают то, чего вы не знаете ...)

0 голосов
/ 26 августа 2010

Clutter является относительно новым и не так много приложений, которые используют его прямо сейчас.Особенно игры.Так что вам будет трудно найти кого-то, кто имеет опыт работы с ним в игровых целях.

Тем не менее, беспорядок действительно имеет некоторые интересные особенности, которые делают его привлекательным для этой цели, и я бы даже сказал, что для многихТипы игрового процесса внутренний граф сцены может даже быть преимуществом для разработчика игры.

Я хотел бы предложить вам еще один интересный вариант для 2D игровой графики: Qt от Nokia.

Хотя это, прежде всего, универсальный инструментарий GUI, он имеет хорошие пропорции, о которых в первую очередь не знает каждый разработчик игры.Фактически, он имеет полноценный бэкэнд для рисования OpenGL, который можно использовать для рисования любого виджета и для использования любого операций рисования на холсте Qt.

Thingsсойти с ума, как только вы начнете явно использовать QGLWidget, который не только обеспечивает режим рисования GL (который не используется по умолчанию), но также позволяет смешивать ваши собственные рисунки GL с операциями рисования Qt в том же контексте.Вы получаете возможность не только использовать простые в использовании операции рисования высокого уровня в сочетании с мощной очередью событий и эффективной обработкой ввода;Более того, у вас есть свобода встраивать более продвинутую низкоуровневую графику в будущем.

См. этот пример .Обратите внимание, что вы можете свободно смешивать родной рисунок GL с функциональностью Qt Painter (если вы позаботитесь о стеке матрицы GL).

...