Простые в использовании кроссплатформенные движки 3D для разработки игр на C ++? [закрыто]

73

Я хочу попробовать свои силы в написании 3D-игры. Однако я не хочу начинать с такого низкого уровня рисования отдельных треугольников, написания собственного загрузчика 3D-объектов и так далее. Я слышал о таких вещах, как Irrlicht , Crystal Space 3D и Cafu , но у меня нет опыта работы с ними. Я ищу предложения от людей, которые имеют опыт работы с теми или иными движками, на которых они хорошо написаны, и которые легко начать использовать, не изучая тонну трехмерной математической теории и того, как графические процессоры работают внутри.

davr
источник
16
Хотя он мог быть закрыт, этот вопрос был очень полезным для меня.
Калеб Ярес
4
То же самое, очень хорошая тема, не знаю, почему stackexchange не любит подобные вопросы.
Steveh
2
они любят закрывать вопросы, я полагаю
Фрэнк Крэнстон
github.com/fffaraz/awesome-cpp#game-engine
Сиро Сантилли 事件 改造 中心 法轮功 六四 事件

Ответы:

48

Мое мнение (только для открытых 3D-движков):

  • Ирлихт :
    • Легкий 3D движок
    • Чистый С ++ без зависимостей и без STL.
    • Не очень хорошо документировано, но есть хорошие учебники.
    • Очень маленький, так что вы можете легко настроить его.
    • Драйвер OpenGL 3.X, Direct X 10.X или 11.X не доступен в официальном SDK.
    • Очень хорошо для мобильной разработки;
    • Хорошее сообщество
    • Доступно несколько расширений
  • Ogre3D :
    • Большой 3D движок
    • Он использует современный C ++, такой как STL, исключения и RTTI
    • Хорошая документация (Есть опубликованные книги).
    • Многие рендеры (OpenGL, DirectX и OpenGL ES ...).
    • Ogre3D имеет множество расширений, таких как интеграция CEGUI или Bullet, узлы дерева ...
    • Но сложнее расширить Ogre3D, если вы хотите что-то конкретное.
    • Большое сообщество
    • Множество расширений
  • Кристальное пространство : старый дизайн и сложный в использовании. Через несколько дней я перестал использовать этот двигатель.
  • Horde3D
    • Маленький двигатель
    • Современный дизайн
    • Легкое сообщество
    • Нет расширений
  • BlendELF
    • Небольшой движок с некоторыми зависимостями
    • Современный дизайн с современными эффектами как DOF или HDR ...
    • Только OpenGL
    • Легкое сообщество
    • Пуля интеграция для физики
    • Вы используете Луа для пилотирования этого двигателя 3D

TL; DR:

  • Для настольной игры (или будущей коммерческой игры): Ogre3D
  • Для первой игры: Irrlicht
  • Для мобильной разработки: irrlicht (Ogre3D слишком большой)
  • Для сексуальных эффектов: Blendelf
Эллис
источник
Честно говоря, я бы не рекомендовал Irrlicht для мобильной разработки. Он делает слишком много распределений памяти и предлагает практически не реализованные пользовательские реализации выделения памяти. Время запуска из-за почти 60 000 выделений, сделанных при запуске, является большой проблемой.
Симон
Я использую Irrlicht на Android и IOS, и время запуска не является большой проблемой ... Загрузка текстур намного дольше, чем alloc ...
Эллис
@ Симон, не могли бы вы объяснить, на что вы ссылаетесь, с помощью «пользовательских реализаций выделения памяти»? Что это такое, и почему вы этого хотите?
временное_имя_пользователя
2
@Aerovistae Распределение памяти требует обращения к операционной системе, это очень дорогая операция. Обычно при создании игрового движка вы захотите сделать свое собственное управление памятью, например, один раз выделите большой кусок памяти, а затем распределите эту память в программе самостоятельно. Таким образом, вы перемещаете указатели и не вызываете ядро ​​каждый раз, когда вам нужна дополнительная память. Это довольно сложная тема и требует расширенной арифметики указателей, особенно если вы хотите какой-то механизм анти-фрагментации.
Дрета
3
Поэтому, когда Саймон говорит, что он не будет рекомендовать его, потому что он не предлагает пользовательских реализаций выделения памяти, на самом деле это не относится к новичкам или даже к большинству разработчиков среднего уровня?
временное_имя_пользователя
21

Очевидное первоначальное предложение - Ogre3D .

тетрада
источник
Был ли у вас опыт с этим? Это довольно стабильно, хорошо написано и хорошо для начинающих 3D? Я легко могу составить список 3D-движков (как вы видите из моего вопроса), я ищу больше информации о том, какой выбор является хорошим и почему. Благодарю.
Давр
1
Но Ogre3D не двигатель. Это библиотека 3D-рендеринга. Вы должны либо выбрать двигатель, который построен на людоеде, либо создать свой собственный.
Пожар
4
У меня был большой опыт работы с Ogre3d; Он очень стабилен и хорошо написан, и отлично справляется с повседневными задачами (выборка сцен, загрузка сетки, рекламные щиты / частицы). Огонь прав в том, что это не игровой движок; но Ogre можно (и часто) объединять с другими библиотеками, чтобы создать одну. Это фантастический шаг выше «рисования отдельных треугольников и написания моего собственного загрузчика 3D-объектов», но это всего лишь библиотека рендеринга. Если это то, что вы хотите, это отличная библиотека с активным и поддерживающим сообществом.
Каранца
3
@Fire OGRE: движок объектно-ориентированной графики. Это двигатель. У этого есть синглтоны повсюду. Определенно двигатель.
Рикет
3
@Ricket Да, графический движок, но не игровой движок, который он, скорее всего, имел в виду, так как это сильно подчеркивается в людских документах. Также одноэлементный (анти) паттерн, безусловно, не имеет никакого отношения к тому, является ли он двигателем или нет.
Рауль
7

Open Scene Graph - довольно хороший, очень хорошо разработанный кроссплатформенный 3D-движок. В отличие от Ogre3D, например, он не предоставляет функций «игрового движка» и концентрируется на том, чтобы быть очень хорошей абстракцией над OpenGL.

  • Он достаточно легкий и не навязывает вам фреймворк: вы можете использовать его как можно меньше или столько, сколько захотите, и использовать его через SDL, SFML, wxWidgets, QT ...
  • Это большой опыт обучения: изучая библиотеку, вы все больше и больше понимаете базовый OpenGL и способ его разработки.
  • В значительной степени готов к использованию: у него есть загрузчики для основных форматов 3D
  • Шейдеры дружелюбны

Посмотрите обширный список образцов .

small_duck
источник
4

С точки зрения игровых движков:

  • Torque3D : множество функций, но некоторые считают, что с кодом трудно работать.
  • Двигатель C4 : Недорогой, отличная авторская поддержка, но инструменты могут использовать немного работы.
  • Сделай сам: выберите набор библиотек и склейте их вместе со своей игрой.

Поскольку был предложен Ogre3D, существует также легкая альтернатива Horde3D .

Плюсы:

  • Дизайн надежный и, вероятно, превзойдет Ogre3D для интенсивного рендеринга (если он этого еще не сделал)
  • C API, делая привязки для таких языков, как Python, простыми и легкими в обслуживании (внутренний код - C ++)

Минусы:

  • Требуется как минимум поддержка OpenGL 2.0
  • Меньшее сообщество
  • Нестабильная база кода (серьезные архитектурные изменения все еще происходят)
Джейсон Козак
источник
2
Избегайте Torque 3D, если вы цените свое здравомыслие. Скриптовый движок - это запутанный кошмар, с которым очень сложно работать.
Джаред Апдайк
4

Irrlicht предоставляет немного больше, чем Ogre3D, и в то же время немного более практичен (например, вы не чувствуете, что вы просто «запускаете двигатель» и смотрите, как он работает, это больше похоже на то, что вы один работает команды, как и должно быть на мой взгляд).

Я думаю, было бы здорово начать с!

Ricket
источник
4

Я знаю, что вы просили C ++, но Panda3D также работает с C ++, даже если он изначально предназначен для работы с python. Это игровой движок, но что угодно ...

jokoon
источник
2

Очевидным выбором, если Ogre3D слишком низкий уровень для вас, будет NeoAxis: http://www.neoaxisgroup.com/

Он работает на Ogre, но является полноценной платформой для разработки игр.

Он нацелен на .NET, поэтому вы можете использовать C #, управляемый C ++, VB.

Так что иди на это. :)

Ogre3D может работать на различных мобильных устройствах, таких как iPhone и Android. Так что он не слишком большой.

Не путайте размер с производительностью.

Я не уверен, имеет ли IrrLicht официальную поддержку iPhone, но Ogre3D делает.

оборота жакмо
источник
Если это на .NET, вы не можете добавить IronPython в список языков? Python - сказочный язык сценариев.
Джаред Апдайк
2
.СЕТЬ? Разве это не исключает кроссплатформенность?
Давр
.Net нет, но Neo-Axis использует C ++ / CLI, который делает.
jsimmons
Я разговаривал с ведущим разработчиком Neoaxis сегодня, и они объявили о поддержке Mac OS X в сентябре этого года. :)
Жакмо
1

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

АБР
источник