Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: [D4N93R] en 21 Julio 2010, 19:44 pm



Título: Desarrollo de juegos en Windows Phone 7 usando XNA
Publicado por: [D4N93R] en 21 Julio 2010, 19:44 pm
Artículo en construcción



Contenido:
  • Introducción (#post_Intro)
  • Requisitos (#post_Req)
  • Conceptos Básicos (#post_Base)
  • Definiendo el juego (#post_Def)
  • Gráficos (#post_Graph)
  • Creando el proyecto (#post_Crea)
  • Puesta a punto del proyecto (#post_Init)
  • Game Loop (#post_Loop)
  • [/url] (#post_Intro)

Introducción
En este post veremos como crear un juego básico para Windows Phone 7 Series utilizando XNA framework. Ningún código se posteará en el post, sino más bien usaré pastebin, que me parece queda mejor para posts como este. Como lenguaje usaré C#, pero puede ser portado a VB.Net o a cualquier otro lenguaje de .Net fácilmente.

Requisitos
A continuación requisitos para este tutorial/guía
  • Descargar e instalar Windows Phone Developer Tools Beta (http://www.microsoft.com/downloads/details.aspx?FamilyID=c8496c2a-54d9-4b11-9491-a1bfaf32f2e3&displaylang=en#filelist)
  • Descargar este demo Game State Management (http://creators.xna.com/en-US/samples/gamestatemanagement), con el cual nos ayudaremos con esas clases a manejar los diferentes screens, las clases están bien explicadas, pero de todos modos explicaremos un poco más detallado su funcionamiento, ya que es una buena metodología de desarrollo de juegos.
  • Obviamente conocimientos sobre .Net, en este caso voy a programar en C# y no creo que los programadores de VB.Net tengan problemas en entenderlo. Iré explicando las clases del framework de Xna mientras se vayan usando en el proyecto.

Conceptos Básicos

  -Windows Phone: Es un sistema operativo desarrollado por Microsoft para smartphones y dispositivos móviles. Es el sucesor de Windows Mobile con el lanzamiento de Windows Phone 7 Series.

  -Microsoft XNA: Es una serie de herramientas más un entorno de programación que fácilita el desarrollo de juegos.

  -Emulador: Consiste en duplicar las funciones de un sistema desde otro completamente diferente. De esta forma, por ejemplo, podemos ejecutar Windows Phone desde el computador sin necesidad de tener un dispositivo móvil en mano.

  -Game Loop: Es el núclero de todo juego, y consiste en un bucle infinito que se ejecuta al iniciar el mismo. Dependiendo de las técnicas de programación de un juego, éste puede tener 1 o más bucles: Game Loop, Rendering Loop, IA Loop, entre otros.


Definiendo el juego
El tipo de juego será un paddle, en este caso haremos un remake de Arkanoid. De esta forma podemos conocer bien todos los aspectos necesarios para crear un juego 2D: Score, Levels, Goals, entre otros.

Gráficos
Los gráficos en un juego 2D son bastante sencillos comparados con uno 3D. Pero ¿qué son?, pues simplemente sprites, bitmaps!!! sí, imágenes normales , comunes y corrientes. Lo único que tienen de diferente es que en caso de que no sean rectangulares tendremos que usar un color para la transparencia, normalmente el magenta.

Para este juego encontré un set de ya hecho, lo que me facilitó mucho el trabajo. Noten que en juegos grandes, mayormente los 3D, requieren de un gran numero de personas involucradas al desarrollo, desde programadores, músicos, artistas, modeladores 3D, voces, guionistas, etc.

El set lo pueden descargar acá (http://www.flyingyogi.com/fun/spritelib.html).

Las animaciones las haremos con una secuencia de sprites, algo así como un GIF.

Creando el proyecto
Abrimos Visual Studio y hacemos Click en New Project o Nuevo Proyecto. Seleccionar la categoría de proyecto: XNA Game Studio 4.0 bajo Visual C#, luego seleccionamos el tipo de proyecto: Windows Phone Game (4.0), le damos un nombre y hacemos click en OK.

(http://r.i.elhacker.net/cache?url=http://img94.imageshack.us/img94/1039/newprojectc.jpg) (http://img94.imageshack.us/i/newprojectc.jpg/)


Ya tenemos el proyecto creado, veamos un poco el explorador de soluciones:
(http://r.i.elhacker.net/cache?url=http://img231.imageshack.us/img231/2617/solutionexplorer.jpg) (http://img231.imageshack.us/i/solutionexplorer.jpg/)

Vemos que hay dos proyectos, uno que es el proyecto principal en donde va todo el código del juego, a menos de que quieran crear componentes (dll) pero esa es otra historia. Y el otro proyecto es de contenido, es decir, donde metemos imágenes, sonidos, videos, etc..

Visual Studio nos crea varias cosas para darnos una mano inicial pero, nosotros usaremos un framework que estoy haciendo en base al proyecto Game State Management.


Puesta a Punto del Proyecto
Ya tenemos nuestro proyecto creado, ahora solo falta establecer las bases sobre las que vamos a programar. Como muchos saben, antes de hacer una casa/edificio hay que construirle las bases, las fundaciones en las que se crearán paredes, techos, etc. Pues para nosotros es lo mismo, necesitamos un buen proyecto, con todas las bases necesarias para comenzar con el flujo del juego en sí.

Primero conozcamos las clases que vamos a usar:

Game Loop