¿Por qué XNA no se considera un motor de juego?

13

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?

Ali1S232
fuente
19
@Miro Eso no tiene sentido.
El pato comunista
2
¿Cuál es el punto de? Si hace el trabajo que necesita, úselo. Si no, entonces no lo hagas. ¿A quién le importa cómo la gente lo llame? De todos modos, es solo una etiqueta, utilizada principalmente por los monos de marketing;)
Maik Semder
es solo porque el comentario El pato comunista respondió a mi comentario en esta pregunta
Ali1S232
44
@Maik Semder No es una etiqueta en absoluto. Un motor y un marco son dos cosas distintas y separadas, y XNA es la última. Es útil distinguir y comprender que XNA no es un motor; de lo contrario, podría confundirse mucho cuando descubra que realmente necesita crear un motor en XNA, o que no ofrece ningún tipo de plug-in-some-bits-and- capacidades de juego como lo hacen los motores reales.
doppelgreener
3
@Maik Esto es parte de cómo resolvemos lo que hace. Digo conductor , sabes qué es y qué no es, qué hace y cómo puedes usarlo. Algo similar debería ocurrir cuando digo framework , pero solo si reconoce qué es un framework y qué no es (un motor). Teniendo en cuenta estas implicaciones prácticas que todo objeto que estás diciendo "A quién le importa cómo las personas llaman Es sólo una etiqueta de todos modos?"
doppelgreener

Respuestas:

28

Microsoft XNA es un conjunto de herramientas con un entorno de tiempo de ejecución administrado proporcionado por Microsoft que facilita el desarrollo y la administración de juegos de computadora. XNA intenta liberar a los desarrolladores de juegos de escribir "código repetitivo repetitivo" y traer diferentes aspectos de la producción de juegos en un solo sistema.

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.

El pato comunista
fuente
Acepto que tiene que anular su configuración de dibujo y actualización, pero eso no significa que no tenga un motor de renderizado, el punto es que hace que todo esté listo para que dibuje, y esas no son solo llamadas de dibujo abstracto solo mirando su muestra tiene nada menos que un 2d GameEngine (no verifiqué realmente las cosas en 3D), y hasta donde puedo recordar, tiene controladores de entrada, y quiero decir que es solo framework porque Microsoft lo nombró así o tiene alguna razón lógica ?
Ali1S232
1
@Gajet: Considere por un momento que hay una discusión en la red sobre cómo crear un motor en XNA pero no para Unreal Engine o CryEngine. Creo que una característica común de un motor de juego es que puedes conectar los bits y algo funcionará ( TV Tropes afirma que los motores pueden estar bastante basados ​​en datos a este respecto ). Por el contrario, XNA te deja hacer básicamente todo el trabajo tú mismo, simplemente no tienes que crear el middleware para interactuar con los dispositivos.
doppelgreener
1
Además, no creo haber encontrado una definición clara de un motor de juego todavía, pero lo que sí sé es que hay motores de juego , y XNA simplemente no hace nada de lo que hacen (excepto proporcionar middleware, y algunos componentes muy simples de bajo nivel).
doppelgreener
@ Jonathan Hobbs: ahora puedo ver de lo que estás hablando, pero nuevamente probé GameBryo (NetImmerse) y eso se considera un motor de juego, pero hasta que la velocidad de la luz tenía menos características que XNA, era solo un medio, así que creo que puede cambiar el título de la pregunta awhat makes an sdk to be called a GameEngine?
Ali1S232
1
Pero podría desarrollar un motor utilizando un motor existente como marco si realmente quisiera ser pedante. Mucha gente tomó la tecnología Quake 3 y luego hizo un motor que era más utilizable. Por otra parte, también puedes hacer un juego sin un "motor" si realmente lo deseas. Es más correcto llamar a xna un marco, pero no sé hacer la distinción de un "motor", ya que no está tan fuertemente definido como "marco".
Tetrad
5

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.

Ingeniero
fuente
2

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?

usuario29569
fuente