Despliegues de Sprites en 2D

Bien, ya visto en articulos anteriores todo el basamento teórico de como funciona el Framework XNA, las versiones que han salido desde su lanzamiento en el 2007, el soporte para las diversas plataformas de Microsoft (Windows PC, Xbox 360 y Windows Phone), el funcionamiento de XNA y por último, la estructura de un proyecto de un Windows Game XNA en Visual Studio, es hora que empecemos a codificar y dibujar elementos.

Paso 1. Crear el proyecto

Debes abrir Visual Studio 2010 con XNA Game Studio 4 previamente instalado, y crear un proyecto Windows Game (4) como se mostró en el artículo anterior.

Paso 2. Agregar una imagen a nuestro Content

Ahora debemos agregar una carpeta en el Content donde colocaremos nuestras imágenes. No es requerido crear un directorio, pero lo recomiendo para mantener nuestro contenido gráfico organizado. Simplemente da un clic-derecho en tu proyecto Content, le das clic a agregar->nueva carpeta, y lo nombraremos «Imagenes».

Para agregar una imagen (que la pueden encontrar aqui para descargar), dale clic-derecho a la carpeta «Imagenes» ya creada, luego clic en agregar->item existente. Te saldrá un explorador de archivos, para que busques el archivo de imagen que deseas agregar a tu proyecto. Selecciona la imagen que descargaste previamente (smiley.png), y le das clic a «Agregar»).

Paso 3. Dibujar el sprite en la Escena

Ya que tenemos nuestra imagen en el Content de nuestro proyecto, debemos cargarla y desplegarla escribiendo código. Lógicamente para desplegar esta imagen, dependemos lógicamente de dos cosas: Posición y Textura. Para eso, agrega las siguientes dos variables dentro de tu clase principal (Game1), debajo de spriteBatch. El código se vería de la siguiente manera:

Vector2 es un tipo de datos que posee dos campos float x,y; a modo de trabajar con coordenadas de dos dimensiones. Ininializa posicion en el método Initialize:

Ahora procedemos a cargar la imagen a nuestro juego. Esto se hace en el método LoadContent. El código quedaría así:

Puedes observar que se instancia la variable spriteBatch (el cual puedes verlo por los momentos como el pincel encargado de pintar todos los elementos en la escena de nuestro juego). También observa como se carga una textura2D con el método Load. Toma en cuenta el string que pasamos como parámetro; es la ruta del elemento que queremos cargar. Por esto, es importante colocar en qué directorio se encuentra si esta organizado de esta manera.

Paso 4. Desplegar nuestro sprite en la escena

Recapitulando, hemos agregado nuestra imagen archivo al contenido de nuestro proyecto; hemos agregado una variable para la posición donde desplegaremos nuestro sprite, y declaramos una variable Texture2D, donde realizamos la carga de nuestra imagen del contenido a la aplicación. Ahora, sin más preámbulos, dibujemos nuestro sprite. Esto se implementa en el método Draw.

Para pintar nuestro sprite, debemos utilizar nuestra variables spriteBatch, ya que este es el encargado de dibujar los elementos en la escena como ya mencione a priori. Todos los elementos que vayamos a dibujar se hacen mediante su método Draw(), y estos deben estar encerrados dentro de los métodos spriteBatch.Begin() y spriteBatch.End(). Muy importante estos dos métodos, porque estamos avisando a nuestra aplicación que vamos a pintar elementos, y cuando terminemos, invocamos el método End(). En nuestro caso, nuestro código se vera así:

Fíjate el método spriteBatch.Draw(). Solo estamos pasando la textura que deseamos desplegar, la posición, y el color que queremos que sea desplegado. Si colocamos Blanco, se mostraran los colores originales de la imagen. Cualquier otro color modificara los colores de nuestro sprite.

Finalmente, al ejecutar nuestra aplicación, tendrás un resultado como este:

Sencillo, no crees? Esta es la manera mas elemental para desplegar un sprite en nuestro juego. El método Draw que utilizamos es el mas básico disponible, ya que este método cuenta con 7 formas distintas de invocar con diversos parámetros, incluyendo efectos, manejo de rectángulos para dibujar ciertas áreas, etc. Para proyectos más complejos, se trabajan con clases donde encapsulan estas propiedades (textura, posición), y se le agregan mas propiedades para ser mas flexibles ante transformaciones y efectos.

Estructura de un proyecto XNA

Para crear un proyecto XNA, debemos abrir Visual Studio 2010 con el XNA Game Studio 4.0 previamente instalado. Da un clic en Archivo, Nuevo Proyecto, y ve a la categoría de plantillas «XNA Game Studio», y selecciona la plantilla Windows Game (4.0). Escribe el nombre de proyecto deseado y le das click en  aceptar.

Una vez creado el proyecto, verás la clase principal del proyecto que por defecto se llama Game1. En el Solution Explorer, veras la siguiente estructura de carpetas.

Proyecto WindowsGame1

En esta sección de la solución es donde se desarrolla toda la lógica del juego. La clase principal es la llamada Class1, donde se encuentra bien definidos los métodos principales a implementar acorde al funcionamiento del framework XNA. Existe otra clase estática llamada Program.cs, donde aquí en realidad es el que invoca la Clase1 para ejecutarla; sin embargo, tu labor es implementar tu juego es en la clase Class1.

También veras un archivo llamado «Game.ico», donde este es un pequeño icono de 32×32 pixeles que se coloca en la esquina superior izquierda de la ventana de nuestro juego al momento de ejecutar nuestra aplicación. Este icono también se mostrara si lo anclas a la barra de inicio.

Entre otros elementos dentro de este proyecto, se encuentra el directorio “Properties”, donde se encuentra el archivo “AssemblyInfo.cs”, que es el archivo configuración de ensamblado de nuestro proyecto. Al abrirlo, veras que contiene toda la información acerca de la versión de la aplicación, el Titulo del juego, producto, descripción, año, etc. También se encuentra el directorio «References», donde en esta se encuentra referencias a las librerías fundamentales requeridas para el funcionamiento de este proyecto. Si deseas trabajar con librerías externas encontradas en la web (Como trabajar con el Kinect, o librerias de físicas, etc.), con descargarlas y hacerles referencia, ya se encuentran disponibles para utilizarlas en tu juego.

En este punto, te sugiero que trabajes con directorios de clases, a modo de trabajar un proyecto de manera organizada por grandes módulos esenciales, como física, sonido, gráficos, interacción entrada/salida, etc.

Proyecto WindowsGame1Content

Para este proyecto de tipo Windows Game Library (4.0) que se genera automáticamente en la solución al momento que se crea un Windows Game (4.0), es donde se coloca todo el contenido gráfico audiovisual del juego. Se recomienda que organices el contenido en directorios, para imágenes, archivos de configuración, sonidos, videos, música de fondo, etc. Esta sección ya se encuentra referenciada por el proyecto principal (que se puede ver dentro del directorio «Content References»).

Mecanismo del Framework XNA

A continuación se muestra una figura de la forma como funciona el framework XNA a nivel de implementación. Es de suma importancia saber el orden de los métodos que son invocados cómo desarrollamos nuestros juegos. Sin mas que agregar, se muestra el diagrama, y la explicación de cada método en el orden de ejecución para el momento que se inicia un juego hasta el momento que finaliza.

Método Initialize

El método Initialize es usado para inicializar variables y otros objetos asociados con el objeto Game1. Los objetos del dispositivo grafico será inicializados en este punto y pueden ser usados en el métodos Initialize para ayudarte a inicializar otros objetos que dependen en la configuración. Utilizarás este método para inicializar valores de puntuación y otros valores afines.

Método LoadContent

El método LoadContent es invocado después del método Initialize, de la misma forma para el caso que el contenido grafico debe ser recargado (Por ejemplo cuando el dispositivo grafico debe ser reiniciado debido a que el jugador ha cambiado la configuración grafica del juego, o algo por el estilo). El método LoadContent es donde se carga todos los gráficos y otro contenido requerido por el juego, incluyendo imágenes, modelos, sonidos, etc.

Game Loop (Método Update y Metodo Draw)

Despues que culmina el método LoadContent, el juego entra en un estado conocido como Game Loop, o bucle de juego.  Casi todos los juegos entran en algún tipo de bucle de juego, independientemente si están escritos en XNA o no. Esta área de código difiere del típico entorno de programación de juegos, y para algunos desarrolladores les puede tomar algo de tiempo acostumbrarse.

En esencia, un Game Loop consiste en una serie de métodos que son invocados una y otra vez hasta que el juego finaliza. En XNA, el Game Loop consiste en dos métodos: Update y Draw. Por ahora, puedes pensar en el Game Loop en estos términos: toda la lógica que afecta el juego actual se encontrará en el método Update o el método Draw. El método Draw es típicamente usado, obviamente, para dibujar elementos. Procura implementar lo mínimo que puedas en esta área excepto para desplegar elementos de tu escena. Todo lo demás que sea necesario para la ejecución adecuada de tu juego (que eventualmente involucra el mover objetos, chequear colisiones, actualizar puntuaciones, chequear la condición fin de juego, etc.) se encontrará en el método Update.

Método UnloadContent

Al punto dentro del Game Loop donde se llegue a una condición de finalizar el Juego, el bucle se termina, y se invoca automáticamente el método UnloadContent. Este método es usado para liberar cualquier contenido cargado previamente en el método LoadContent que requiere un manejo especial de liberación. Tipicamente, XNA (como .NET) manejara la recolección de basura automáticamente, pero si has modificado la memoria en algún objeto que requiere un manejo especial, el método UnloadContent es donde implementaras la lógica de liberación de contenido de la memoria.

Que es XNA?

Microsoft XNA es un conjunto de herramientas con un entorno de ejecución provisto por Microsoft que facilita el desarrollo y manejo de videojuegos. XNA se enfoca de librar a los desarrolladores de juegos de escribir mucho código repetitivo pero con ligeros cambios, y traer diferentes aspectos de producción del juego en un solo sistema.

Actualmente, XNA engloba toda la sección de desarrollo de videojuegos para Microsoft, incluyendo el kit de desarrollo estándar de Xbox y XNA Game Studio.

El nombre XNA se origino de un nombre de proyecto de desarrollo, la Nueva Arquitectura de la Xbox en ingles. En lugar de ser liberado con el nombre de Xbox, se lanzo al mercado el Xbox 360, y XNA llevo el nuevo acrónimo “XNA NO es un Acrónimo”.

Versiones de XNA

XNA Game Studio Express

Fue el primer release de XNA Game Studio, para estudiantes, aficionados y desarrolladores de juegos independientes. Estaba disponible como una descarga gratuita. Express provee kits básicos para desarrollo rápido de géneros de juegos específicos, como juegos de plataforma, estrategia en tiempo real, y shooter en primera persona. Desarrolladores pueden crear juegos para Windows gratuitos con el Framework de XNA, pero para Xbox 360 se debe pagar una subscripción anual de 99$ en el XNA Creators Club.

La primera versión beta de XNA Game Estudio Express fue liberado para descarga el 30 de agosto del 2006, seguido de una segunda versión el 1ero de noviembre del mismo año. El 11 de diciembre Microsoft publicó la versión final.

El 24 de abril del 2007, Microsoft liberó una actualización conocida como el XNA Game Studio Express 1.0 Refresh.

XNA Game Studio 2.0

XNA Game Studio 2.0 fue liberado el 13 de Diciembre del 2007. Esta versión incluía la facilidad de ser utilizado en todas las versiones de Visual Studio 2005 (incluyendo la versión gratuita Edicion Express  de Visual C#),  incluyendo un API con conexión a servicios de Xbox Live en ambos Windows y Xbox 360, y mejor manejo de dispositivos.

XNA Game Studio 3.0

Esta versión salió para Visual Studio 2008 y la edición gratis Visual C# 2008 Express. XNA Game Studio 3.0 permitió la producción de juegos orientados a la plataforma Zune y agrega soporte de la comunidad de Xbox Live. Un beta de un toolset fue liberado el 30 de Octubre del 2008. Para esta versión ya soportaba C# 3.0, LINQ y muchas más versiones de Visual Studio 2008. En cuanto a nuevas funcionalidades del framework, se agregó el modo trial para hacer versiones de prueba de los juegos desarrollados, funciones de multijugador para Xbox Live como invitaciones in-game, crear juegos para las plataformas Windows, Xbox 360 y Zune.

XNA Game Studio 3.1

XNA Game Studio 3.1 fue soltado el 11 de junio del 2009. Este API incluye soporte para reproducción de video, un nuevo API de audio, el sistema de Xbox Live Party y soporte para juegos que utilicen avatares de Xbox 360.

XNA Game Studio 4.0

Anunciado y liberado inicialmente a una comunidad técnica de prueba en la Conferencia de Desarrolladores de Juegos, el 9 de marzo del 2010, y en su versión final el 16 de septiembre del mismo año. Esta versión agrego soporte a la plataforma de Windows Phone (incluyendo aceleración de hardware para 3D), perfiles de hardware, efectos configurables, estados de objetos embebidos, el cruce de plataformas, input multitouch y micrófono e incluso la integración con Visual Studio 2010.

Estudiantes de la Universidad Católica Andrés Bello representarán a Venezuela en el Imagine Cup 2012

El proyecto identificado con el seudónimo “Arbel”,  presentado por el equipo de la Universidad Católica “Andrés Bello” (UCAB) obtuvo el primer lugar en el concurso académico Copa de la Imaginación 2012, competencia organizada por Microsoft con el objetivo de estimular entre los estudiantes universitarios el desarrollo de proyectos innovadores orientados a mejorar la calidad de vida de las personas a través de la tecnología.

El proyecto ganador “Arbel”, es un sistema desarrollado para ir más allá de apoyar la educación innovadora, utilizando tecnología de punta.  Con Arbel, un profesor puede dictar su clase, pero sin el uso de una pizarra tradicional.  En lugar de eso, sólo es necesario un proyector (vdeobeam) y una computadora.  El profesor no tiene que llevar rotuladores, sólo un LED Pen, ya que esto es lo que necesita para interactuar con la aplicación que se proyecta, las cuales hace las funciones de una pizarra virtual interactiva. Entre otra de sus características, Arbel cuenta con una aplicación móvil para Windows Phone, que le permite a estudiantes y profesores acceder a las funcionalidades de información básica como calendario, materias, entre otros.

“es invalorable la experiencia vivida en esta etapa nacional, máxime porque somos el primer equipo que representará a la Ucab en un compromiso académico a nivel internacional.  Nos compromete y motiva el potencial que tiene Venezuela y por ello tomamos la experiencia de los equipos que nos anteceden como es el equipo de la UCV para representar nuestro gentilicio venezolano ”, comentaron Alonso Araujo, Jorge Gómez, Anelisa Gomes  y Yormir Sayegh, integrantes del equipo ganador. Ricardo Casanova, mentor del equipo

En esta final nacional de la Copa de la Imaginación, participaron en buena lid, los proyectos de la Universidad Central de Venezuela y la Universidad “Nueva Esparta”.  Según los miembros del jurado multidisciplinario, la decisión final fue muy cerrada ya que los 3 equipos realizaron un gran esfuerzo para el desarrollo de sus propuestas, las cuales se identificaron por su alto valor creativo y de amplia funcionalidad para la solución de varios retos asociados a innovación, especialmente en el área académica declaró Sara Linares, gerente de Audiencias Técnicas de Microsoft Venezuela y representante del jurado evaluador.

“Para nosotros es un gran reto motivar a la innovación para generar grandes e importantes impactos a la sociedad y qué mejor manera que desde las universidades, estimulando la sana competencia y la creatividad. En Microsoft estamos comprometidos con el desarrollo y la especialización del conocimiento en el país pues confiamos en que la tecnología nos permitirá crear un mundo mejor” comentó Gerardo Antoni, Gerente de Nuevas tecnologías y Ciudadanía Corporativa de Microsoft Venezuela.  Exhortó a todos los participantes a continuar con estos emprendimientos más allá de los ámbitos universitarios y conectarlos como propuestas en beneficio de toda la colectividad venezolana.  Inclusión digital –resaltó- que es el reto que caracteriza a este nuevo milenio y para ello las tecnología de las información representan una herramienta válida para activar el potencial ilimitado de personas, grupos y colectivos.

Si quieren saber mas informacion acerca de la competencia, les dejo unos enlaces de interes:

Facebook de Imagine Cup Venezuela: http://www.facebook.com/ImagineCupVenezuela 
La página oficial de Imagine Cup: http://www.imaginecup.com/

Fuente del articulo: Relaciones Publicas Microsoft Venezuela

Se acercan las Finales Nacionales de Imagine Cup 2012 Venezuela

El 27 de Abril del 2012, se realizará la final nacional de Imagine Cup en Venezuela, donde competirán los tres equipos finalistas, seleccionados previamente en las semifinales en la que se destacaron de entre los 12 equipos.

El equipo de la Universidad Central de Venezuela propone un proyecto que ayudara a las fundaciones para niños con autismo, proporcionándoles juegos y software educativos desplegados en dispositivos interactivos desarrollados dentro del campus, como una pizarra interactiva y una mesa interactiva multitouch. Además se incluirá interoperabilidad con tecnología Kinect.

El equipo de la Universidad Nueva Esparta plantea un sistema automático de plantas hidropónicas, con la finalidad de impulsar la agricultura mediante una especie de invernadero autómata, donde este mantiene las condiciones internas apropiadas para el cultivo de cierta planta, a pesar de los cambios climáticos que se presenten en el exterior.

El equipo de la Universidad Católica Andrés Bello compite con un proyecto que impulsa la educación con herramientas tecnológicas de bajo costo. Particularmente se centra en una pizarra interactiva que funciona con un wiimote y un apuntador infrarrojo, donde este ultimo actúa como puntero del mouse, a modo que el profesor puede controlar la computadora directamente en la superficie donde se esta proyectando la imagen de computadora. El software incluye un pool de herramientas como captura de pantalla para resaltar textos, diagramas, un modo de pizarra común y cuadriculada, para diseñar diagramas y realizar notas; entre otras funcionalidades más.

Estos tres equipos darán su mayor esfuerzo para lograr el primer lugar en estas finales Nacionales, y representar a Venezuela para competir a nivel mundial, en la ciudad de Sídney, Australia.

Ya estamos en la recta final para este evento de Microsoft a nivel Nacional, así que próximamente sabremos el equipo ganador, con más detalles del evento y el proyecto que presentaran en Australia.

Diseña un sitio como este con WordPress.com
Comenzar