domingo, noviembre 26, 2006

Video del tutorial 3

Como no se cuanto tiempo voy a tener esta semana que entra para adelantar el tutorial 3 os cuelgo un video para que podais ver que es lo que vamos a hacer. Realmente el tutorial esta casi acabado, pero ahora queda lo mas costoso, que es limpiar el codigo para dejarlo mas legible y añadir los comentarios.

Aqui se puede descargar el video:


Esta vez lo he comprimido con XVid MpeG-4 , asi que espero que podais verlo todos.

Un saludo!!

sábado, noviembre 25, 2006

Comentarios y cambios

Buenas a todos,

en primer lugar he arreglado el vídeo, ya que muchos de vosotros me habéis reportado que no erais capaces de verlo. El problema era que estaba hecho con Fraps, que tiene su propia calificación.

Aunque he cambiado el formato, y ya se puede descargar bien desde el anterior post, o AQUI, os animo a que os descarguéis el programa Fraps. Este programa muestra el numero de Frames por segundo al que esta corriendo una aplicación, y yo lo uso siempre mientras estoy haciendo cosas en XNA para que siempre vea si el juego esta corriendo a un numero de frames decente.

Este programa lo podéis descargar desde su pagina oficial:

Por otro lado, he recibido otro comentario acerca de la visualizacion de las lineas comentadas en los tutoriales. No había caído en la cuenta de que estoy trabajando con un monitor bastante grande y yo veo los comentarios bien, pero si trabajais con una revolución mas o menos estándar como puede ser 1024x768 estos comentarios se salen de la pantalla, obligando a tener que usar todo el rato el scroll horizontal. Intentare hacerlo para que os sea mas cómodo.
Además, también hacia referencia a que era complejo para gente que empieza con esto el seguir los tutoriales, ya que eran un tanto complejos. Por esta razón, intentare ir haciendo dos ramas de tutoriales, una un poco de teoría y conceptos de programación, y otra la actual con proyectos un poco mas complejos. Necesitare algún tiempo para ver como hago esos tutoriales básicos, ya que yo también he empezado con programación orientada a objetos hace relativamente poco y me cuesta poder explicar como funciona todo esto de una forma que sea entendible para todos.
Además, creo que voy a poner en marcha una iniciativa que tenia pensada hace tiempo, y es la de hacer videotutoriales estilo los que hacen en xnatutorial.com , y me han comentado que podría usar un software llamado Camtasia, de nuevo le echare una pensada a ver como los hago, además de tenerme que comprar un micro que se entienda bien.
De momento voy a añadir mas cosas al proyecto del guerrero, con vistas a sacar un tutorial 3 en menos de una semana.
Un saludo a todos!

viernes, noviembre 24, 2006

Tutorial 2 - Animacion de un sprite (Corriendo y atacando)


Ya estoy de vuelta con un nuevo tutorial. Como no he recibido ningún comentario acerca de la metodología usada, he seguido usando la que creo que es mejor, la de el código fuente comentado al detalle.


En este tutorial he ampliado la gama de acciones que puede realizar nuestro guerrero. Ahora el guerrero es capaz de correr mientras se este pulsando la tecla shift de la izquierda del teclado, y también es capaz de realizar un ataque con el hacha, en este caso pulsando la tecla control de la izquierda del teclado.


Además de estas acciones, el tutorial muestra como se han controlado algunos comportamientos para que gobernar el guerrero sea mas sencillo, y para que las animaciones cuando se cambia de un estado a otro sean las correctas. Un ejemplo de esto seria el controlar hacia donde esta encarado el guerrero cuando se mantiene el control pulsado para realizar varios ataques seguidos, ya que inicialmente no respondía a los cursores para encarar el ataque a otro sitio y en la versión actual del tutorial es capaz de realizar ese cambio, o por ejemplo el controlar que cuando se esta corriendo y se detiene el guerrero este muestre el estado de reposo usando las texturas de andar, en vez de las de correr, ya que antes se quedaba parado con las piernas abiertas y volando, como la característica forma de Michael Jordan haciendo un mate. ;-)


Para los que no les funcionan los binarios, he grabado un vídeo para que puedan ver el tutorial en movimiento y se animen a instalarse todo el kit de desarrollo de XNA ;-)


Aquí se puede descargar el VIDEO (3,79 Mb)
Aquí se puede descargar el TUTORIAL 2 (3,41 Mb)
Aquí se puede descargar el BINARIO (1,29 Mb)
NOTA: Para poder ejecutar los binarios es necesario tener el XNA Framework instalado, que se puede encontrar AQUI
Un saludo a todos !!!!

martes, noviembre 21, 2006

Tutorial 1 - Animación de un Sprite

Por fin mi primer tutorial finalizado. Tal y como prometí ayer, he terminado de comentar el código, explicando cada uno de los detalles al mínimo, y aquí tenéis el código fuente del tutorial. En funcionalidad es igual al ejecutable que colgué ayer, salvo que ahora esta disponible en código fuente para que podáis aprenderlo.



Como ya comente, creo que mejor que explicar el código directamente en el blog, es mejor que comente el código fuente, y así lo he hecho. Para verlo de una forma cómoda, os recomiendo que tengáis una versión con los comentarios, y otra con los comentarios borrados, para poder leer el código mas rápidamente.



Para que os hagáis una idea de la profundidad de los comentarios, he sacado una captura:





Ver en grande...

Y para finalizar, aquí tenéis os fuentes del primer tutorial:

TUTORIAL 1 - ANIMACION DE UN SPRITE

Un apunte final. Para cualquier duda, comentario, sugerencia acerca del contenido y la forma de hacer los tutoriales, simplemente dejarme un comentario en este post con lo que se os ocurra. Un poco de feedback me permitirá ir limando un poco los sucesivos tutoriales hasta encontrar el mejor formato.

Un saludo!!!

lunes, noviembre 20, 2006

De vueltas con la beta 2 de XNA

Por fin se acabaron mis problemas, este fin de semana he decidido retornar mi PC a su estado natural y he desinstalado Windows Vista. Es una lastima, porque me estaba empezando a gustar, pero el no poder ejecutar XNA en condiciones me ha hecho tomar la decisión de volver a mi antiguo sistema operativo.


En lo que respecta a XNA, ayer mismo me puse de nuevo a picar código. Estuve primero acostumbrándome a los cambios en la plantilla de juego de PC, y finalmente estuve escribiendo un tutorial. Actualmente me encuentro comentando el código del tutorial, ya que esta va a ser mi forma de trabajar a partir de ahora, es decir, poco código en el blog, y mas comentarios en los fuentes que voy a ir publicando.


Para realizar este tutorial he utilizado unos sprites creados por un tal Reiner. Dentro de su web podemos encontrar una gran cantidad de sprites para nuestros juegos, y además realizando multitud de animaciones. Para este tutorial he utilizado una guerrera con hacha, con 8 frames para cada una de las 8 direcciones que he utilizado. Además, he utilizado únicamente la animación de andar, aunque tiene muchas mas, y que usare cuando vaya avanzando en el tutorial.


Su web es:


http://reinerstileset.4players.de/


Como todavía no he terminado de comentar el código, voy a publicar el ejecutable para que le vayáis echando un vistazo. Espero que mañana pueda colgar en el blog los fuentes comentados, y escribir un post explicando el código.

En resumen, el tutorial consta de un guerrero, el cual tiene 8 direcciones de movimiento. Este movimiento se controla con los cursores del teclado, y además, esta programado para que en el caso de detenerse se quede correctamente orientado y en una postura fija. El sprite tiene en total 64 posiciones, 8 por cada una de las 8 direcciones.


Una captura del tutorial:




Ver en grande...



Un detalle importante que se me olvidaba, para poder ejecutar el binario es necesario tener instalado por lo menos el XNA Framework. Esta descarga son aproximadamente 2 Mb, y se puede obtener aqui:
Mañana nos vemos !!!

sábado, noviembre 11, 2006

Recopilatorio de links XNA

Ya estoy de vuelta otra vez por Madrid, y es que llevo como un mes y medio sin parar de viajar todas las semanas por el trabajo. Para colmo de males, se me ha ocurrido instalar Windows Vista para empezar a trabajar con él, y si, es muy potente, muy fácil, muy vistoso y todo eso, pero se me ha caído el alma al suelo cuando he ido a instalar XNA y me ha dado error. Una visita al FAQ de la página oficial me ha confirmado mi desgracia, XNA no está soportado en Windows Vista. La verdad es que no había pensado mucho en esto, ya que antes de Windows Vista estaba usando Windows Server 2003 y este tampoco era compatible, pero todo funcionaba correctamente. Por lo poco que he podido ver, hacerlo funcionar en Windows Vista no va a ser tan fácil, ya que me he dado cuenta de que Windows Vista trae por defecto el .NET framework versión 3.0, y esto seguro que se pega con XNA. En definitiva, tendré que montarme XNA en otra máquina para poder continuar con artículos técnicos en el blog.
Por esta razón, se me ha ocurrido crear un post recopilatorio con todas las páginas de XNA y programacion en general que visito, tanto en español (que son más bien pocas), como en ingles, para que estéis entretenidos mientras arreglo este entuerto.

Webs en castellano

http://xna.animered.net/

Pagina muy completa en castellano acerca de XNA, contiene articulos, codigo y trucos de niveles muy basicos hasta muy avanzados. Totalmente recomendable para empezar.

http://codeando.blogspot.com/

Interesante blog sobre desarrollo de juegos en general.

http://www.codepixel.com/

Pagina sobre programacion 3D

http://stratosutopia.blogspot.com/

Web sobre un proyecto de juego multijugador, con articulos interesantes, aunque parece que parado.

http://ebersysesp.blogspot.com/

Blog sobre programacion con articulos muy muy interesantes.

http://www.stratos-ad.com/

como dice su eslogan: "punto de encuentro para desarrolladores hispanos"

http://www.whatistc.com/index.php?mdl=wlog

Blog con contenido sobre desarrollo de juegos. Tiene algunos articulos bastante interesantes sobre desarrollo de juegos web.



Webs en ingles

http://www.xnatutorial.com/

Para mi la mejor web de tutoriales XNA. Tiene tutoriales en formato video, y ademas siempre pide feedback a los visitantes de la web sobre como desarrollarlos. Muy, muy recomendable

http://www.policyalmanac.org/games/aStarTutorial.htm

Interesante tutorial, con traduccion al español, sobre algoritmos de calculos de rutas.

http://abi.exdream.com/

Blog de desarrollo de juegos y c#, ademas de contener informacion sobre Arena Wars, famoso juego desarrollado integramente en c#

http://www-cs-students.stanford.edu/~amitp/gameprog.html

Decenas de articulos sobre desarrollo de juegos, suficiente material para estar un dia entero estudiando.

http://aroganworld.blogspot.com/2006/09/f14-xna-game.html

Un juego de aviones realizado en XNA, sin actualizar desde hace tiempo...

http://www.codeplex.com/

Sitio web propiedad de Microsoft para proyectos de codigo fuente abierto. Hay algunos proyectos interesantes para XNA, como por ejemplo, una libreria muy completa para el control de la entrada de los juegos (raton, teclado, pad, joystick,etc...)

http://www.codesampler.com/index.htm

Programacion en 3D para DirectX y OpenGL

http://www.dofactory.com/Patterns/Patterns.aspx

Articulos sobre patrones y otra informacion util

http://devbump.com/

Una de mis preferidas, un sitio social estilo digg.com pero unicamente con noticias relacionadas con desarrollo de juegos.

http://www.devmaster.net/

Gran pagina con multitud de articulos e informacion interesante sobre desarrollo de juegos. Contiene ademas una base de datos de motores 3D

http://www.wired-weasel.com/users/serhid/blog/

Blog bastante activo acerca de desarrollo de juegos.

http://www.gamasutra.com/

Informacion acerca de la industria del videojuego.

http://www.gamedev.net/

Completisima web sobre desarrollo de juegos, del estilo de devmaster.net

http://www.gametunnel.com/

Web sobre desarrollo de juegos Indie(Independiente) y estudios de bajo presupuesto.

http://www.gamkers.com/

Prometedora web que tiene la aspiracion de ser un punto de encuentro para personas que quieran desarrollar juegos de libre distribucion. A dia de hoy no tiene nada de movimiento...

http://www.igda.org/

Asociacion Internacional de desarrolladores de juegos. Su nombre lo dice todo...

http://www.indiegamepod.com/

Podcast de desarrollo de juegos.

http://blogs.clearscreen.com/kartones/

Otro blog con bastante contenido digno de leer, ademas el autor estuvo en España haciendo una presentacion de XNA en el Madrid Codecamp 2006

http://xnarocks.spaces.live.com/

Prometedora web acerca de XNA, sobre todo despues de ver el indice de articulos que tiene pensado desarrollar:

1. Introduction to XNA [What is XNA, Value Proposition, XBOX 360 Architecture, Market Size etc.]

2. Timing in XNA [How to get a FPS (Frames per Second) counter]

3. XInput [How to use your 360 controller in your game]

4. 2D Graphics and Animation using XNA

5. Introduction to 3D [Math & Concepts]

6. Introduction to 3D [XNA 3D Rendering Pipeline]

7. Drawing 3D in XNA [Primitives]

8. Drawing 3D in XNA [More Primitives & Buffers]

9. Shaders [Introduction (No fixed function pipeline support in the XBOX360)]

10. Vertex Shaders

11. Pixel Shaders

12. Effects

13. Color

14. Lights

15. Textures16. Meshes17. Advanced Meshes

18. 3D Animation [Bone]

19. 3D Animation [Skinned]

20. Advanced Features [TBD]

http://learnxna.com/default.aspx

Web de obligada visita acerca de XNA. Multitud de contenidos y bastante movimiento.

http://letskilldave.com/default.aspx

Blog con buenos contenidos de un empleado de Microsoft que trabaja como desarrollador de juegos.

http://blogs.msdn.com/mklucher/

Blog de un empleado de Microsoft sobre XNA

http://forums.microsoft.com/MSDN/default.aspx?SiteID=1

Foro de MSDN, que ha sido tomado como foro principal por las distintas paginas de la comunidad XNA, para no tener decenas de foros separados sin contenido util.

http://mstum.iweb.bsu.edu/xna/particlewars/

Juego desarrollado en XNA

http://rijit.spaces.live.com/

Este blog merece la pena mas que por el contenido por la recoplicacion de links de paginas XNA

http://blogs.msdn.com/shawnhar/

Otro blog de MSDN especializado en el Content Pipeline

http://www.gameai.com/

Completisima web acerca de Inteligencia Artificial

http://www.thezbuffer.com/

Web con muy buenos contenidos de un ex-empleado de Microsoft dedicado ahora al desarrollo de juegos. El autor suele estar muy activo en los foros de MSDN, tal vez para llegar a ser MVP.

http://www.ultralightmagazine.com/

Portal sobre diseño grafico y programacion de juegos

http://www.ultralightmagazine.com/

Portal de un juego de estrategia como Age of Empires o Starcraft, desarrollado en c++

http://xbox360homebrew.com/

Desarrollo de juegos caseros para 360, tienen un campeonato que obligan a los participantes a escribir un blog sobre el desarrollo de cada proyecto.

http://www.xnadevelopment.com/

Web sobre XNA con unos tutoriales muy completos y bien explicados.

http://xna.tiddlyspot.com/

Material variado sobre XNA

http://www.xnaresources.com/blog.asp

Web de visita obligada, tiene un completisimo tutorial sobre crear un Tile Engine para juegos 2D

http://xnaspot.com/

Esta web tiene muy buena pinta, pero tiene poco movimiento, los tutoriales son aprovechables.

http://blogs.msdn.com/xna/

Blog oficial de XNA en MSDN. Punto de referencia para estar al dia sobre el desarrollo de XNA.

http://www.ziggyware.com/news.php

Para mi una de las mejores paginas de XNA, muchismo contenido.

Esto son algunas de las webs que tengo apuntadas y creo que merecen la pena. Hay alguna mas, sobre todo blogs de gente de MSDN pero que estan sin actualizar. Espero que esteis entretenidos con esto mientras me busco una solucion para tener accesible un XNA para desarrollar.

Un saludo!!!!

sábado, noviembre 04, 2006

Cambios en XNA Beta 2

De vuelta ya por Madrid, sin haber tenido mucho tiempo para ponerme al día, estoy empezando a actualizarme acerca de los nuevos cambios acontecidos sobre XNA. En primer lugar, y tal y como anunciaban hace poco, el equipo de XNA ha liberado la versión de XNA beta 2. El comienzo de este blog se realizo con la versión Beta 1 en la calle, y de hecho todo lo que ha sido publicado fue realizado utilizando esta versión. Esto quiere decir que al trabajar ahora con la versión Beta 2, todo el código anterior no funcionara, aunque podría empezar a hacerlo con pequeños cambios.

Voy a intentar resumir en este post algunos de los cambios mas importantes que se han realizado. Afortunadamente para todos nosotros, se espera que entre la versión Beta 2 y la versión final, que se dice que saldrá en diciembre, no va a existir tantos cambios como ha ocurrido con este salto de la Beta 1 y Beta 2. Aquí esta el resumen de los cambios, extraído principalmente del blog oficial del equipo de XNA:

Cambios Genéricos:

- Inclusión del esperado “Content Pipeline”: Este componente permitirá añadir contenido a los juegos de una forma mucho más sencilla a lo que estábamos acostumbrados con la Beta 1. El “Content Pipeline” se define como un conjunto de herramientas que permitirá a los desarrolladores el añadir contenido 3D mas fácilmente a sus juegos, permitiendo reducir la curva de aprendizaje de desarrollar un juego en 3D.

- Arreglo de varios de bugs gracias al feedback que han hecho los usuarios de la Beta 1

- Eliminado el soporte para diseñar game y gamecomponents


Cambios en Game:


- El evento Starting y el método OnStarting han sido eliminados

- Se ha añadido Initialize que viene a reemplazar la función que tenia Starting

- Se ha añadido LoadGraphicsContent y UnloadGraphicsContent

- Se ha añadido BeginRun y EndRun

- Update y Draw ahora toman un parámetro, GameTime. El parámetro GameTime es una captura del tiempo transcurrido dentro de estos métodos.

- Todas las propiedades relacionadas con el tiempo han sido eliminadas de Game. Como se ha explicado anteriormente, ahora el tiempo se va a controlar con GameTime, por lo que estas propiedades ya no tienen sentido. NOTA: Menos mal que no me ha dado tiempo a escribir el articulo acerca del timing que tenia en mente, ya que a la salida de estos cambios se habria quedado obsoleto.

- Se ha BeginDraw y EndDraw, que permitirán que Game gestionar mejor los dispositivos. BeginDraw verificara que el dispositivo esta en preparado para ser usado, si no es así, el metodo Draw no es llamado. Esto elimina la necesidad de utilizar EnsureDevice, que es lo que se hacia con la Beta 1. EndDraw se encargara de llamar a Present por nosotros.

- UpdateComponents y DrawComponents han sido eliminados. Ahora se puede llamar a base.Update y base.Draw.


Cambios en Game Components


- Añadido el interfaz IGameComponents. Que es la implementación mínima requerida para ser insertada en Game.Components

- Añadido el interfaz IUpdateable, para todos esos componentes “lógicos” que no necesitan dibujar nada(es decir, tener un Draw)

- Añadido Enabled a través del interaz IUpdateable, el cual permite activar o desactrivar que un componente se actualice.

- Añadido UpdateOrder a través del interfaz IUpdateable, que permite controlar el orden en el que un componente se actualiza sin que importe el orden en el que fueron añadidos a la colección Game.Components. NOTA: en la beta 1, había que tener cuidado en que orden se añadían los componentes a la colección, ya que según el orden de añadido se creaba el orden de actualización.
- Añadido el interaz IDrawable, que permite a los componentes dibujarse independientemente del Update

- Añadido Visible a través del interfaz IDrawable, el cual tiene la misma función que UpdateOrder pero en vez de para el Update para el Draw.

- GameComponent provee una implementación por defecto de IGameComponent y IDrawable

- Añadido DrawableGameComponent que deriva de GameComponent y añade soporte a IDrawable. Tambien se ha eliminado la necesidad para el componente de preguntar por el servicio IGraphicsDeviceService, ahora se provee de la propiedad GraphicsDevice y , como ocurre en Game, se provee de LoadGraphicsContent y UnloadGraphicsContent

En definitiva estos son los cambios mas importantes que se han añadido. Si todavía no has trabajado con XNA y has hecho algunas pruebas es muy posible que te resulten un poco confusos. En realidad, yo estoy todavía intentando comprender alguno de ellos, ya que no he tenido suficiente tiempo como para explorar la primera beta cuando ha aparecido esta.

A partir de ahora, intentare incluir contenido que este seguro que no va a cambiar entre versiones, ya que puede parecer una perdida de tiempo empezar a comprender algo y que justamente te lo cambien en la siguiente versión. Desgraciadamente, no se sabe que va a cambiar desde hoy hasta la versión final, así que intentare crear el contenido acerca de lo que este totalmente seguro que no va a cambiar.