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


73

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


16
Хоча це може бути закритим, це питання мені дуже допомогло.
Калеб Ярес

4
ditto, дуже хороша тема, не знаю, чому stackexchange не любить подібного роду питань.
steveh

2
Я думаю, вони люблять закривати питання
Френк Кренстон


Відповіді:


48

Моя думка (лише для 3D-двигунів з відкритим кодом):

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

TL; DR:

  • Для настільної гри (або майбутньої комерційної гри): Ogre3D
  • Для першої гри: Irrlicht
  • Для мобільного розвитку: irrlicht (Ogre3D занадто великий)
  • Для сексуальних ефектів: Blendelf

Якщо чесно, то я б не рекомендував Irrlicht для мобільних розробок. Це робить занадто багато розподілу пам’яті та пропонує малопотужні реалізації розподілу пам’яті. Час запуску через майже 60 000 асигнувань, зроблених під час запуску, є великою проблемою.
Саймон

Я використовую Irrlicht на Android та IOS, а час запуску не є великою проблемою ... Завантаження текстури набагато довше, ніж аллок ...
Елліс

@Simon, чи можете ви пояснити, що ви маєте на увазі під "спеціалізованими реалізаціями розподілу пам'яті"? Що це, і чому ви цього хочете?
тимчасове_користувач

2
@Aerovistae Розподіл пам'яті вимагає дзвінків в операційну систему, це дуже дорога операція. Зазвичай, створюючи ігровий движок, ви хочете зробити власне управління пам'яттю, якщо ви один раз виділили б великий об'єм пам'яті, а потім самі поширите цю пам'ять у програмі. Таким чином ви пересуваєте лише вказівники навколо, а не викликаєте ядро ​​кожного разу, коли вам потрібна додаткова пам'ять. Це досить просунута тема і вимагає розширеної арифметики вказівника, особливо якщо потрібно якийсь механізм проти фрагментації.
дрета

3
Тож коли Саймон каже, що не рекомендував би його, оскільки він не пропонує власні реалізації розподілу пам’яті, справді це не стосується початківців або навіть більшості проміжних розробників?
тимчасовий_користувач

21

Очевидна початкова пропозиція - Ogre3D .


Чи мали ви з цим досвід? Це досить стабільно, добре написано та добре для початківців 3D? Я можу з легкістю згорнути список 3D-двигунів (як ви бачите з мого запитання), я шукаю докладнішу інформацію про те, що є хорошим вибором і чому. Дякую.
davr

1
Але Ogre3D - це не двигун. Це бібліотека 3d візуалізації. Ви повинні або вибрати двигун, побудований на оторі, або побудувати свій власний.
Пожежа

4
Я мав великий досвід роботи з Ogre3d; Це дуже стабільно і добре написано, і робить велику роботу по догляду за приземленими завданнями (вилучення сцени, завантаження сітки, рекламні щити / частки). Вогонь правильний тим, що це не ігровий движок; але Ogre може бути (і часто є) об'єднаний з іншими бібліотеками, щоб зробити його. Це фантастичний крок вище "малювання окремих трикутників і написання мого власного 3D-завантажувача об'єктів", але це лише бібліотека візуалізації. Якщо ви цього хочете, це чудова бібліотека з активною та підтримуючою спільнотою.
Каранца

3
@Fire OGRE: Об'єктно-орієнтована система графічного відтворення. Це двигун. У ньому є одинаки всюди. Однозначно двигун.
Ricket

3
@Ricket Так, графічний движок, але не ігровий двигун, що саме він, мабуть, мав на увазі, оскільки це сильно підкреслюється в документах OGER. Також однотонний (анти) візерунок, безумовно, не має нічого спільного з тим, що він є двигуном чи ні.
Раул

7

Графік відкритої сцени - це дуже непоганий, дуже добре розроблений кросплатформенний 3D двигун. На відміну від Ogre3D, наприклад, він не забезпечує функцій "ігрового двигуна" і зосереджується на тому, щоб бути дуже приємною абстракцією на версії OpenGL.

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

Подивіться на широкий перелік зразків .


4

Що стосується ігрових двигунів:

  • Torque3D : Багато функцій, але деякі вважають код важким для роботи.
  • C4 Engine : Недорога, відмінна підтримка авторів, але інструменти можуть зайняти трохи роботи.
  • Зробіть: Виберіть набір бібліотек і склейте їх разом із грою.

Оскільки було запропоновано Ogre3D, існує також легка альтернатива Horde3D .

Плюси:

  • Конструкція є надійною і, ймовірно, перевершить Ogre3D для великої візуалізації (якщо вона ще не зроблена)
  • API API, що робить прив’язки для таких мов, як Python, прості та прості у обслуговуванні (внутрішній код - C ++)

Мінуси:

  • Потрібна підтримка OpenGL 2.0
  • Менша громада
  • Нестабільна база коду (основні архітектурні зміни все ще відбуваються)

2
Уникайте 3D крутного моменту, якщо ви цінуєте свій розум. Двигун сценаріїв - це заплутаний кошмар, з яким дуже неприємно працювати.
Джаред Updike

4

Irrlicht забезпечує трохи більше, ніж Ogre3D, і в той же час є трохи більш практичним (наприклад, не відчуваєш, що ти просто "заводиш двигун" і дивишся, як він працює, він відчуває себе більше, як ти одна запущена команда, як це має бути на мою думку).

Я думаю, було б чудово для початку!


4

Я знаю, що ви просили C ++, але Panda3D також працює з C ++, навіть якщо спочатку націлена на роботу з python. Це ігровий двигун, але що б там не було ...


2

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

Він працює від Ogre, але є повноцінною платформою для розробки ігор.

Він націлений на .NET, щоб ви могли використовувати C #, керований C ++, VB.

Тож іди до цього. :)

Ogre3D може працювати на багатьох мобільних пристроях, таких як iPhone та Android. Так що це не надто багато.

Не помиліться розміром для продуктивності.

Я не впевнений, чи IrrLicht має офіційну підтримку iPhone, але Ogre3D робить.


Якщо він увімкнено .NET, ви не можете додати IronPython до списку мов? Python - казкова мова сценаріїв.
Jared Updike

2
.NET? Чи не виключає це кросплатформа?
квітня

.Net не робить, але Neo-Axis використовує C ++ / CLI, що робить.
jsimmons

Я сьогодні поговорив з провідним розробником Neoaxis, і вони оголошують підтримку Mac OS X цього вересня. :)
jacmoe


1

Хороші відповіді поки що, але я додам Мармелад . Це робить мобільний досить добре. Купа великих студій випустила консольну гру з нею, тому вона отримала повноваження. Існує навіть редактор, подібний до єдності, створений поверх нього, Shiva3D , який також дозволяє здійснювати крос-платформу.

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