martes 9 de marzo de 2010

Metodologías de desarrollo de juegos (Segunda Parte)

Son muchos los problemas y riesgos que tiene que enfrentar la industria de juegos en la actualidad. Muchos de ellos tienen que ver las cambios en los cronogramas y fechas de entregas. Muchos de los productos dependen de determinadas temporadas de alto índice de consumo en la que deben ser lanzados. Si no están listos para las fechas indicadas podría traer consigo un fracaso total.


Otros de los factores que influyen en el éxito de un juego es que una vez terminado no llegue a los niveles esperados en comparación con sus semejantes que estén en el mercado.

El avance tecnológico en el desarrollo de los juegos es cada vez más acelerado. En las consolas por ejemplo, los desarrolladores deben tener en cuenta que las consolas tienen un tiempo de vida util desde el año en que son lanzadas al mercado (4- 5 años). Esto significa que a lo sumo da para realizar 2 proyectos que utilicen una tecnología específica, luego hay que desarrollar y/o adaptar los juegos a las nuevas tecnologías que surjan.


Por ser una industria tan dinámica, el nivel de exigencia es muy alto. Los programadores, diseñadores, artistas, ingenieros se especializan en un área específica, por lo que se crea una dependencia de ese especialista y cuando renuncian (sucede con frecuencia debido a la carga de trabajo) hacen que los cronogramas se retrasen.



Debido a estos y otros tantos problemas que están presentes en la industria de juegos, que como podemos percatarnos, muchos de ellos no se dan con la misma intensidad en la industria de software, es que se ha hecho necesario plantearse la aplicación de metodologías de desarrollo que permitan estandarizar muchos procesos, actividades y documentación generada. 

Debido a la semejanza en los procesos de desarrollo de software tradicional y los procesos de desarrollo de los juegos se decidió utilizar las mismas metodologías existentes para el desarrollo de software con adaptaciones que incluyeran las actividades y documentación necesaria para la construcción de un juego.

Game Unified Process

Esta metodología fue se desarrollo producto de un proyecto de un videojuego de casino online. Durante este proceso, el patrocinante del proyecto decidió que deberían hacerse cambios a la forma de desarrollo de manera que pudieran cumplirse con los plazos, y de esta manera se decidió utilizar una combinación de dos metodologías de desarrollo utilizadas comúnmente en el software tradicional. 

La primera es la utilización del Rational Unified Process el cual plantea un diseño estricto y una documentación rigurosa de cada paso y funcionalidad a implementar. Luego de dividir el equipo se decidió que aquellos familiarizados con el proceso (ingenieros en su mayoría) utilizaran este enfoque, dándoles una organización mayor durante el proceso y el trabajo en equipo. 

El otro equipo adoptó la metodología eXtreme Programming con algunas variaciones para que pudiera ser aplicado por personas de otras disciplinas. En este proceso los ciclos cortos ayudaron a mantener la comunicación fluida entre equipos y el componente artístico se sentía menos restringido que con el RUP y con mayor capacidad comunicativa.

Extreme Game Development (XGD)
Es una adaptación de eXtreme Programming (XP), una práctica muy común en el desarrollo de software ágil. Esta metodología está enfocada especificamente para programadores, por lo que se hizo necesario hacer adaptaciones para que pudiera ser utilizada por artistas, diseñadores, gerentes, productores, etc. Esta metodología utiliza un elemento análogo a los casos de uso, que se denomina historia de usuarios.

lunes 1 de marzo de 2010

Metodología de desarrollo de juegos (Primera Parte)

El desarrollo de juegos está muy relacionado con el desarrollo de software tradicional, por lo que debería implementarse un proceso similar para lograr un trabajo más organizado. La industria de los juegos en general no tiene estandarizado una metodología para el desarrollo de sus productos, es por eso que en muchas ocaciones los costos se van por encima de lo planificado, los tiempos de entrega se alargan y los desarrolladores cargan con excesos de trabajo. Debido a esta situación han sido muchas las empresas que se han dedicado a plantearse una metodología que permita un desarrollo adecuado y estandarizado. Estas metodologías no son más que adaptaciones de las ya existente para el desarrollo de software tradicional solo que ajustadas a las especificidades del proceso de desarrollo de un juego.

Semejanzas y diferencias entre el software tradicional y los juegos
Comenzaré a mencionar una serie de características presentes en ambos y espero que uds. sean capaces de distinguir cuándo es una semejanza y cuando una diferencia.
  • Ambos parten del mismo punto y se desarrollan en ocasiones con tecnologías similares.
  • Los software tradicionales se enfocan en su facilidad de uso en todos los aspectos, mientras que los juegos se enfocan en que la jugabilidad debe ser “fácil de aprender” y “dificil de dominar”.
  • Los software tradicionales se enfocan en la funcionalidad y los juegos se enfocan en la diversión.
  • Los software tradicionales tratan de facilitar labores del mundo real y los segundos permiten una inmersión en un mundo virtual creado por sus desarrolladores.

Ingeniería de software aplicada a los juegos

Muchos han sido los juegos que se han desarrollado aplicando los principios que nos plantea muchas de las metodologías clásicas de desarrollo de software. Muchos de estos proyectos han tenido un tiempo de desarrollo según lo previsto con escasos riesgos que no hayan sido identificados y mitigados en su desarrollo. Muchos de estos proyectos ha sido tan estricto la aplicación de las metodologías clásicas para desarrollo de software que han olvidado que los juegos tienen sus particularidades, reconocidas incluso ya por la industria y la academia, muchas de las cuales he mencionado anteriormente.
Otros proyectos que también han tenido éxito en su desarrollo se han planteado metodologías intermedias en la que se tienene en cuenta las actividades específicas que se realiza en el desarrollo de un juego con la estabilidad que brinda las metodologías tradicionales de desarrollo de software.

A continuación se listan algunas de las metodologías más utilizadas para el desarrollo de juegos.
  • Metodología de cascada
  • Desarrollo ágil de videojuegos
    • Scrum
    • Game Unified Process
    • Extreme Game Development (XDG)

En próximas entradas les comento sobre éstas metodologías.

miércoles 24 de febrero de 2010

Perfil del jugador

Un informe de la consultora Deloitte prevé que para el 2010 habrá 80 millones de adultos en todo el mundo que serán jugadores activos, de los cuales, nueve de cada diez se concentrarán en Europa, Estado Unidos y Japón Actualmente, en Reino Unido, el país europeo que más videojuegos consume, el 37% de la población de entre 16 y 49 años se describe a sí misma como jugadora; en España esa cifra es del 28%. En Europa, la edad media del jugador activo oscila entre los 33 años en el Reino Unido y los 26 años en España. Los hombres juegan el doble que las mujeres en España (y casi me atrevería a afirmar que en el mundo entero).

Interesante!!

Juegos de navegador con la potencia de DirectX

Cada vez son más las posibilidades que se están abriendo para los desarrolladores de juegos y para los jugadores, especialmente los que les apasiona los juegos de navegador.
Son varias las empresas que actualmente están compitiendo por lograr fijar sus propuestas en el mercado. Ya es posible contar con soporte para el navegador de la API DirectX11. Dentro de muy poco serán muchos los juegos de navegador que tendrán animaciones y gráficas 3D tan nítidas como cualquier videojuego desktop de los que existen actualmente. Esto como todo tiene sus limitaciones.
Para poder correr juegos de navegador que utilicen esta API, los usuarios necesitarán tener una tarjeta gráfica que sporte DX11, actualmente la ATI Radeo HD 5000 son las únicas que lo soportan, eso sin mencionar el ancho de banda que habrá que tener.
De todas formas son avances que vamos teniendo.

martes 23 de febrero de 2010

Comienza el desarrollo

Una vez analizado algunos de los juegos de estrategia de simulación económica y social que están en estos momentos atrayendo a cientos de jugadores adictos a este tipo de juegos, comenzaremos a definir algunos aspectos que son necesarios tener en cuenta a la hora del desarrollo de nuestro juego de estrategia online.

Para garantizar que el resultado de nuestro trabajo tenga la calidad requerida desde el punto de vista del software, vamos a hacer uso de algunas técnicas que proponen algunas metodologías de desarrollo de software como RUP, XP y otras. No nos vamos a centrar en ninguna en particular porque la menos exigente, se necesita de determinada cantidad de artefactos de software (documentación) para llevar a cabo la implementación del sistema. Como nosotros no tenemos clientes definidos. Estamos desarrollando lo que se conoce como "productos empaquetados" a diferencia de los que se denominan "productos a la medida" que si requieren una serie de restricciones (requisitos de software) que define el cliente y/o usuario final.

En nuestro caso nosotros somos los clientes y desarrolladores, y entre todos daremos nuestras opiniones, críticas, sugerencias y todo lo que se nos ocurra para hacer de este trabajo un punto de partida y guía para todos los aficionados a los juegos y al desarrollo de software.

Definición de las herramientas, tecnologías y lenguajes a utilizar

Con respecto a este punto que siempre es algo que acarrea un análisis profundo para lograr obtener la combinación óptima que nos permita obtener los mejores resultados con el menor costo posible.
Luego del análisis para la selección decidí utilizar Visual Paradigm como herramienta CASE para llevar a cabo todo el análisis y diseño del sistema. En próximas entradas mostraré algunas de las "figuritas" que he ido generando ya con esa potente herramienta.
Todavía estoy decidiéndome si utilizar un framework robusto como Zend Framework u otro cualquiera combinado con Doctrine o utilizar un CMS como Drupal para olvidarme de todos los temas de administración y seguridad del sistema.
El lenguaje, si se dieron cuenta, según los frameworks y CMS que mencioné me decidí por PHP porque es un lenguaje soportado por la mayoría de los hosting gratuitos que existen actualmente en internet.
La interfaz de usuario debe ser bastante amigable, he decidido utilizar ExtJs, librería de javascript muy potente para hacer uso de la tecnología AJAX, combinado con alguna otra librería javascript de juegos como gamelib para recrear un ambiente un tanto parecido a Monopoly Tycoon.

Se darán cuenta que es un proyecto ambicioso, pero que poco a poco saldrá adelante, y lo más importante es que quedará todo su desarrollo reflejado en esta web.

En próximas entradas comentaré sobre la idea general y las características que tendrá nuestro juego (sistema), verán que es una combinación de muchos de los juegos comentados hasta el momento.

Además dentro de las posibilidades tendremos algunas entradas relacionadas con los nuevos juegos de esta categoría que salgan o que se comenten por la red, así como algunas noticias relacionadas con el desarrollo de software. Espero que se hayan percatado que aquí hay para todos. Jugadores y Desarrolladores Web.

Espero sus comentarios.