2010-01-29 13 views
5

Ya he leído en algunos lugares, que es posible combinar XNA y WPF. Lo que personalmente necesito es un editor de juego/mapa, que en realidad sería el juego en sí (tendría el motor funcionando en segundo plano), porque el sistema de mapas escribe versiones serializadas de objetos en XML, que luego se cargan.WPF <-> XNA: ¿cómo combinar estas dos tecnologías?

Mi problema es que quiero una aplicación estándar, que ejecute el motor en segundo plano, y crear activos del juego a medida que el usuario los crea desde la interfaz, y luego serializarlos y ponerlos en XML.

Esto también sería útil, si es posible ejecutar WPF desde el juego, para UI, si alguien tuviera alguna experiencia con esto, apreciaría que lo compartiera.

Poco: ¿cómo puedo hacer WPF (o winforms) aplicación, que se ejecuta código de XNA en una de ella de control, y en el fondo?

+1

creo que su tratando de hacer algo similar a lo que esta persona ha hecho: http://www.youtube.com/watch?v=KRNI8NO9VNQ Puede intentar contactarlo sobre cómo se fusionó XNA y WPF. – zfedoran

+0

Gracias por el enlace, se ve increíble, podría contactarlo, es difícil, necesito algo mucho menos complejo y solo para entornos 2D. – Johnny

Respuesta

1

No conozco a nadie que incorpore controles WPF en una ventana del juego XNA. Esto sería algo muy difícil debido al hecho de que ambos usan DirectX para renderizar. Ya que está permitido hacer cualquier cosa con XNA, eso haría que las superposiciones WPF y lo que sea muy difícil. Si buscas controles en el juego, prueba NeoForce.

Ir por el otro camino es mucho más simple (léase: realmente compatible). Sé que puede incrustar una ventana XNA en un control de usuario de Windows; consulte this para obtener una demostración rápida. He usado una técnica similar a la de hacer un editor para mi juego. Desafortunadamente, la integración directa con WPF también sería problemática (debido a las mismas razones por las que no puedes poner controles WPF en XNA GameWindow). Sin embargo, puede insertar ese control en un WindowsFormsHost y eso podría funcionar bien (nunca lo haya intentado).

Obviamente, esto no funcionará en Xbox 360, ya que WinForms y WPF no están disponibles allí, pero normalmente no pone su editor en 360 de todos modos.

TAMBIÉN: Espero que no esté utilizando la serialización de XML para cargar los archivos de su juego en tiempo de ejecución, eso es lo que XNA Content Pipeline es para.

+0

No, al menos me he informado acerca de los principios básicos de la tecnología con la que elegí trabajar. He pensado que XNA utiliza ContentPipeline, pero cuando agrego composiciones de ** mapas ** diferentes, entonces realmente necesito la serialización XML, para su posterior carga, de dichos contenidos, según sean necesarios (no solo elementos del juego como imágenes, texturas, etc., pero objetos enteros reales, con sus configuraciones específicas, etc.) – Johnny

+0

¿Está usando lectores y escritores de contenido personalizados para esto? Además: ¿una de las soluciones que ofrecí te sirve? –

+0

Bueno, lo que hago, en breve es que hago que el editor cree artificialmente objetos de juego (el juego no se está ejecutando en realidad), tal como lo haría un codificador, y luego los serializa para guardarlos. El juego tiene el código para deserializar que se supone que recrea esos objetos, como estaban dentro del editor. ¿Podría funcionar esta idea? BTW: +1 para señalar lo que es posible, y lo que no, y para la NeoForce (pensé que ya lo sabía, pero está claro que usted también lo señaló). – Johnny

0

¿Ha intentado crear una aplicación WPF y luego agregarle las referencias XNA?

Debería poder hacer eso y luego crear una clase que herede de GameObject y poner eso en su aplicación WPF.

WPF tiene acceso directo a una gran cantidad de DirectX, así como a las cámaras y muchas de las cosas que necesita para escribir el juego en WPF. Tal vez simplemente use métodos XNA para algunos de sus cálculos.

Definitivamente puedo ver más de una manera de despellejar a este gato.

+0

Uhh, el motor ya está a medio camino, y creo que me quedaré con él tal como está, pero creo que XNA necesita alguna inicialización, como el archivo Game1.cs que se envía con el proyecto de inicio. Entonces, ¿cómo puedo inicializar WPF y XNA en un mismo proyecto? – Johnny

+0

Si no ha reescrito completamente el motor de su juego una docena de veces, ni siquiera está cerca de hacerlo: D Si está buscando insipration de editor de contenido que no sea wpf, el juego Trials en Xbox Live Arcade tiene una fantástica editor de pista de juego. Además, el hecho de que nadie ponga controles WPF en un juego XNA no significa que no se pueda hacer. WPF y XNA son clases como cualquier otra cosa. Sería escéptico con cualquiera que diga que no puedes combinarlos como quieras. – Eric

0

Control hacia fuera este hilo en los foros de XNA: http://forums.xna.com/forums/p/1122/6455.aspx

Será 1) le dará una idea de por qué esta integración es tan molesto y 2) le mostrará cómo el anfitrión de un control de XNA en un formulario de WPF (busque para las publicaciones de ZMan). En cuanto a usar WPF dentro de XNA para renderizar GUI, no aguantaría la respiración. Realmente hay muy pocas razones para que Microsoft haga todo lo posible para soportar esto, y las experiencias con la GUI de la consola realmente no se alinean tan bien con una API para apuntar y hacer clic.

2

he publicado esto en otra pregunta, pero parece que hay un montón de preguntas acerca de cómo integrar un control de XNA-como en WPF. Leí el blog de Nick Gravelyn y la publicación Arcane.Xna, y logré desarrollar algo similar a ambos que es completamente paralelo a Microsoft.Xna.Framework.Game a la vez que proporciona compatibilidad con WPF. Incluso puede crear una instancia de múltiples clases de juego, si lo desea:

https://xnaml.codeplex.com/

Cuestiones relacionadas