miércoles, 8 de julio de 2009

Video juegos en .Net, ¿Es posible?

Hoy no les hablaré sobre código, sino más bien de cómo está compuesto un juego y si será posible hacerlo en .Net!

Todos sabemos que el código que corre dentro de la plataforma Microsoft .Net  es administrado, es decir, se ejecuta dentro de un contexto seguro por lo que hace que vaya un poco más lento que una aplicación no-administrada (C++, C, ASM). Esto tiene ventajas y desventajas, no entraré en detalles sobre el framework y el CLR pero si les diré que es suficientemente poderoso para producir juegos sencillos pero de gran calidad! 

Dentro de toda la gama de juegos que pueden desarrollar, les recomiendo (para .Net u otra plataforma administrada como java) que no sean juegos 3D, ¿qué quiere decir ésto? Que les va a ir muy bien desarrollando juegos tipo Mario, Arkanoid, u otros como los de los celulares.

Tenemos el alcance,  ¿y ahora?. Falta decidir sobre el objetivo del juego, la perspectiva de la "cámara", los gráficos, sonidos, efectos, lógica, ambiente, inteligencia artificial, si va a ser en red o local, guardar partidas, scores, usuarios, niveles, etc. 

Un tema importante para tratar es si tiene un bucle de juego. Esto es un simple while infinito que se ejecuta a lo largo de la aplicación. Entonces cada vuelta la convertiremos en frames, y mientras más frames por segundo tenga nuestro juego, mejor se va jugar y mejor se va a renderizar (dibujar), pero! hay que ponerle un límite, porque mientras más rapido vayan los frames, más rápido va el juego, entonces hay que codificar para que se ejecute en unos sesenta frames por segundo (60 fps) que es una buena velocidad.

Solo falta definir el juego con todas las variables antes mencionadas, y comenzar a programar. Yo, como muchas otras personas que conozco, comenzamos a programar el modelo de componentes. Esta es la parte más tediosa, pero una de las más importantes!, ya que todo el juego va a estar ligado de ésta capa. Un pequeño ejemplo podría ser un juego de tetris, en donde las piezas son una clase Pieza, la clase principal del juego, una clase para la detección de colisiones de las piezas, otra clase para establecer el sitio del juego algo así como un tablero.

Lo más importante de ésto es que el modelo de componentes debe ser capaz de funcionar sin la capa superior, es decir, sin interfaz de usuario. Por supuesto que si el juego requiere de conexión a internet o a una Base de Datos, es obvio que si debe conectarse. OJO, debe funcionar SIN la capa SUPERIOR. 

Ahora vamos con el render. Aquí tenemos varias opciones: Dibujar utilizando Graphics o descargarse un motor de renderizado, incluso hay unos que incluyen detección de colisiones, gravedad, etc. Yo les recomiendo que como este post trata de juego en C#, utilicemos Graphics,y así aprendemos bien a usarlo. Luego haré un post de juegos en C++ utilizando un motor llamado irrlicht.

Listo! éstas son las herramientas necesarias para comenzar a desarrollar su video juego en C#.

Próximamente publicaré parte por parte el desarrollo de algún juego que se decida en los comentarios! Así que opinen !

Gracias por leer!

2 comentarios:

  1. Esta publicacion deja mucho que desear... no sabes nada de Opera 10?

    ResponderEliminar
  2. ¿Por qué deja mucho que desear? ¿Dime que crees que le falta? Claro! ya tengo pensado postear sobre Opera 10 beta y sobre Opera Unite.

    ResponderEliminar