В чем разница между библиотекой и движком?

31

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

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

Lanbo
источник
Я бы сказал, что различие не может быть сделано, потому что это концепции на другом уровне абстракции. «Большой» двигатель - все еще структура.
Андре Парамес
1
Существует меньше различий между игровым движком и фреймворком, но из названия, между библиотекой и движком, есть огромное и четко определенное различие. Эта ссылка подводит итог: gamefromscratch.com/post/2015/06/13/…
Serapth

Ответы:

21

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

Так, когда это перестает быть библиотекой классов и начинает быть двигателем?

Никогда.

В чем именно заключается разница в полезных рамках и игровом движке?

Здесь ничего нет.

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

Вот несколько примеров игровых движков:

  • Нереальный Двигатель
  • Реальность Двигатель
  • Исходный движок
  • Quake Engine
  • Unity Engine

И несколько примеров библиотек

  • Новодекс (Физика)
  • FMOD (аудио)
  • Havok (физика)
  • Ogre3D (рендеринг)
  • БИНК (видео библиотека)
  • Direct3D (Графика)
  • OpenGL (Графика)
  • DirectSound (Аудио)
  • XInput (вход)

Надеюсь это поможет

Джеймс
источник
1
Как насчет разницы между движком рендеринга и графической библиотекой? : p
Zaky German
1
@Zaky German - Ogre3D - графический движок, как FMOD - звуковой движок. Отдельно, однако, это не игровой движок, они не обрабатывают, например, пользовательский ввод, сетевое подключение и т.п. Здесь я думаю, что некоторая путаница может вступить в игру. В этом смысле вы можете поменять библиотеку, модуль, компонент или движок. Это не игровой движок. Графическая библиотека была бы чем-то похожим на Direct3D или тонким API по сравнению с Direct3D, чтобы упростить ее, но она не будет напрямую выполнять рендеринг. OpenGL и обертки вокруг него также попадают в область графической библиотеки.
Джеймс
14

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

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

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

мистифицировать
источник
Существует конкретная разница между фреймворком и другими библиотеками; они перечислены на вики-странице предыдущего. Вкратце, инфраструктура контролирует поток приложения, и вы подключаете к нему свой код; в других библиотеках вы управляете потоком и вызываете его код.
Андре Парамес
1
Я не считаю это окончательным; В Википедии также есть страница для «игрового движка», и так же, как и «библиотека» и «фреймворк», эти термины используются так же часто, как и в описании на странице вики, так же, как и в моем случае. опыт. Это все еще очень волнистые.
Джош
2

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

Например: движок Unreal (или Source, или Quake) предназначен для использования в играх FPS (его можно использовать в других играх, но вы потратите некоторое время на работу с движком). Ogre3d (или даже Directx, SDL или другие распространенные библиотеки) можно использовать для создания игр любого типа, без необходимости вырывать основные части кода или обходить их.

thedaian
источник