Прості у використанні міжплатформові 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.