¿Cuál es la diferencia entre una biblioteca y un motor?

31

Estoy trabajando en una biblioteca para ayudar al desarrollo de juegos 2D con Scala. Hasta ahora, es una colección de clases útiles, carga de archivos, detección de colisiones, imágenes, sprites, etc.

Entonces, ¿cuándo deja de ser una biblioteca de clases y comienza a ser un motor? ¿Dónde se encuentra exactamente la diferencia entre un marco útil y un motor de juego?

Lanbo
fuente
Yo diría que la distinción no se puede hacer, porque son conceptos en un nivel diferente de abstracción. Un motor "grande" sigue siendo un marco.
André Paramés
1
Hay menos distinción entre un motor de juego y un marco, pero desde el título, entre una biblioteca y un motor, hay una distinción enorme y claramente definida. Este enlace lo resume: gamefromscratch.com/post/2015/06/13/…
Serapth

Respuestas:

21

Creo que la confusión a la que se enfrentan las personas aquí es que, en general, una está formada por la otra, por lo que lo que la gente realmente quiere saber es cuándo tienes suficiente de una para ser considerada la otra.

Entonces, ¿cuándo deja de ser una biblioteca de clases y comienza a ser un motor?

Nunca.

¿Dónde se encuentra exactamente la diferencia en un marco útil y un motor de juego?

No hay ninguno.

Ahora déjame explicarte las respuestas. Un motor de juego está formado por bibliotecas de clases. No dejan de ser bibliotecas de clases simplemente porque están dentro de un motor de juego. Una biblioteca es un marco útil para abordar una necesidad específica dentro de un motor de juego. Un marco que implica las necesidades de un juego completo es un motor de juego.

Aquí hay algunos ejemplos de motores de juegos:

  • Motor irreal
  • Motor de realidad
  • Motor de origen
  • Quake Engine
  • Motor de la unidad

Y algunos ejemplos de bibliotecas.

  • Novodex (Física)
  • FMOD (audio)
  • Havok (Física)
  • Ogre3D (renderizado)
  • BINK (Biblioteca de videos)
  • Direct3D (Gráficos)
  • OpenGL (Gráficos)
  • DirectSound (audio)
  • XInput (entrada)

Espero que esto ayude

James
fuente
1
¿Qué pasa con la diferencia entre un motor de renderizado y una biblioteca de gráficos? : p
Zaky German
1
@Zaky German - Ogre3D es un "motor" de gráficos como FMOD es un "motor" de audio. Separados, sin embargo, estos no son un motor de juego, no manejan la entrada del usuario, la conectividad de red o similares, por ejemplo. Aquí es donde creo que parte de la confusión puede entrar en juego. En esta connotación, podría intercambiar Biblioteca, Módulo, Componente o Motor. Sin embargo, estos no son un "motor de juego". Una biblioteca de gráficos sería algo similar a Direct3D o una API delgada a Direct3D para hacerlo más fácil, pero no representará directamente. OpenGL y sus envoltorios también caerían en el área de la biblioteca de gráficos.
James
14

Realmente no hay una definición concreta para ninguno de los términos (o para el término relacionado "marco", para el caso). Hay cientos de formas diferentes de interpretar las diferencias sutiles variadas en los paquetes de software y asignarles clasificaciones.

Personalmente, veo una "biblioteca" como algo que proporciona un conjunto de funcionalidades relativamente pequeño y dirigido, mientras que un "marco" proporciona una funcionalidad más o más amplia, y un "motor" proporciona lo mismo (o más) y normalmente tiene un conjunto de herramientas asociadas que vienen con él.

He visto suficientes interpretaciones personales de otras personas de los mismos términos para sentirme seguro, sugiriendo que un "motor" proporciona más o mayor funcionalidad que una "biblioteca", pero donde dibujas esa línea para tu propio software depende de ti.

Josh
fuente
Hay una diferencia concreta entre un marco y otras bibliotecas; Estos se enumeran en la página Wiki de la primera. De manera sucinta, el marco controla el flujo de la aplicación y conecta su código; en otras bibliotecas usted controla el flujo y llama a su código.
André Paramés
1
No lo consideraría definitivo; Wikipedia también tiene una página para "motor de juego", y al igual que "biblioteca" y "marco", esos términos se usan con la misma frecuencia en formas que se ajustan a la descripción en la página wiki que en formas que no lo hacen, en mi experiencia. Todavía está todo muy ondulado.
Josh
2

Esta es una pregunta difícil, ya que la línea entre la biblioteca y el motor a veces puede ser muy delgada y borrosa. Debo decir que el punto donde una biblioteca se convierte en un motor es cuando se orienta hacia un juego específico, o un tipo específico de juego.

Por ejemplo: el motor Unreal (o Source, o Quake) está diseñado para usarse en juegos FPS (podría usarse para otros juegos, pero pasarías algún tiempo trabajando contra el motor). Ogre3d (o incluso Directx, SDL u otras bibliotecas comunes) se puede utilizar para crear cualquier tipo de juego, sin tener que extraer partes importantes del código o evitarlas.

thedaian
fuente