2010-08-26 16 views
3

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

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

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

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

+7

Независимо от того, какую графическую библиотеку вы в конечном итоге выберете, * забудьте все, что вы знаете * о Java. C++ - это совершенно другой язык, а идиомы, которые являются нормальными в Java, иногда опасны в C++. – greyfade

+0

Я не могу подчеркнуть комментарий @ greyfade. Я даже не разбираюсь в Java, но это был мой первый язык, и я привык к нему. Через год я перехожу к C++, и теперь я несколько раз ошибался, пытаясь сделать что-то «java way». – Stephen

+0

ха-ха хорошо хорошо, что я не узнал слишком много java. Однако мой опыт работы с языками высокого уровня (actionscript и python) может вызвать схожие проблемы. – lukecameron

ответ

1

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

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

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

+0

Старый ответ, я знаю - но что вы подразумеваете под «SDL ... не полностью аппаратное ускорение»? Я использую SDL для получения окна и ввода опроса, но после этого это все необработанный OpenGL. – 2014-02-06 18:35:20

+1

@racarate: SDL, до версии 2, не реализовал его рендеринг с точки зрения OpenGL. Он мог рисовать спрайты на экране, но не самым эффективным способом. Если вы используете OpenGL непосредственно, то вы обходите это, но SDL по сути не обеспечивает ускоренную визуализацию графики. Насколько я понимаю, это уже не так, как в версии 2.0. – Kylotan

0

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

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

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

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

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

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

+1

QGraphicsView в Qt хорошо подходит для подключения к Box2D – McBeth

+0

Я серьезно рассмотрю qt - я бы предположил, что он очень зрел после всех этих лет, и я не реализовал его возможности рендеринга оборудования. – lukecameron

7

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

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

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

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