Me pregunto qué falta XNA, para ser considerado como un motor de juego. Hace todas las cosas que debe hacer un motor de juego (excepto la parte de física); También tiene soporte para cada aspecto definido en el artículo de Wikipedia sobre motores de juegos .
¿Por qué XNA no se considera un motor de juego?
Respuestas:
Está diseñado como un marco, de hecho, XNA es el Marco XNA de Microsoft, por lo que técnicamente no es un motor por su nombre.
No hay 'motor': si observa, deriva su clase principal de XNA.Framework.Game y tiene que anular las funciones de dibujar y actualizar usted mismo. No hay un sistema de renderizado central, ni un sistema de entrada, ni un sistema de audio listo para usar. Hay SpriteBatch y las clases de vértice, KeyboardState y algunas clases de audio ... pero son solo abstracciones sobre el código de dibujo de bajo nivel.
EDITAR: En aras de la utilidad, ¿por qué importa algo si está etiquetado como un motor, marco, biblioteca o conjunto de herramientas?
Para aclarar un poco las cosas: estoy desarrollando un motor en XNA. Obviamente no puedo hacer eso en algo como Unreal, como Jonathan ha mencionado. Sin embargo, hay algunas cosas que considero importantes que XNA simplemente no tiene:
Plug-n-play: quiero poder hacer algún tipo de plantilla: ¡tenga este HP, esta malla, esta animación y BOOM! Tengo un NPC en mi juego.
Nivel bajo oculto: XNA ya hace esto, pero no quiero jugar con GameServiceProviders. Solo quiero juntar cosas.
Juego separado del motor: puede haber una clase de "juego", pero quiero separar mi lógica y mi código del sistema base. No quiero
if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
mezclarlo con actualizar los búferes en mi renderizador de gráficos.fuente
what makes an sdk to be called a GameEngine?
Un marco proporciona una arquitectura mínima creada para un tipo específico de aplicación. Minimiza los supuestos sobre los detalles de implementación más allá de los objetivos establecidos de la arquitectura. Si bien un marco de desarrollo de juegos multiplataforma podría tener el objetivo de proporcionar "lo que es común a (casi) todos los juegos de computadora, independientemente de la plataforma", y podría implementar solo factores abstractos como el tiempo y la gestión de entidades, el Marco XNA (implícitamente) tiene el objetivo de proporcionar "lo que es común (casi) a todos los juegos de computadora escritos para su ejecución en el XNA CLR". Dado que este enfoque es tan estrecho, han podido incluir características del motor con impunidad. Lo agrupan todo bajo el título de "Marco", ya que esto indica una cierta libertad de implementación que disfrutará como desarrollador del juego.
Hablando en términos generales, un marco debe ser lo más restrictivo posible y, al mismo tiempo, proporcionar bases útiles. Un motor, por otro lado, generalmente está más enfocado hacia características específicas, y al usarlo, acepta que hay ciertas limitaciones a las que estará vinculado.
fuente
Nunca he usado un 'motor de juego', pero entiendo esto es más como un conjunto predefinido de herramientas agrupadas con una estructura esquelética predefinida para el desarrollo de un tipo específico de juego. Y seguramente esa estructura para el desarrollo de un tipo específico de juego es el principal factor definitorio en un motor de juegos, ciertamente parece ser lo que atrae el artículo de Wikipedia antes mencionado. Para mí, el marco XNA es más parecido a un conjunto de bibliotecas de terceros, como AJAX, en el sentido de que agrega rutinas preconstruidas al lenguaje de programación existente. No establece restricciones ni pautas sobre lo que usted, como programador, puede y no puede hacer con estas rutinas de la biblioteca. En mi opinión, eso no es similar a un motor de ninguna manera. Luego vengo de un fondo de software empresarial / web centrado,
He creado el marco para una idea de juego usando XNA y definitivamente parece que estoy usando solo otra biblioteca sobre C #. Voy a usar los procesos que he pirateado en el programa de prueba para producir dos o tres juegos para Windows y posiblemente Xbox.
Entonces, como dije, en mi opinión, esto está muy lejos de lo que entendí que era un 'Motor de juegos', así que cuando me encontré con esta publicación no tenía idea de por qué alguien haría esa comparación. ¿Me equivoco?
fuente