jueves 11 de febrero de 2010
Proyecto Butterfly finalizado.
Luego de mucho tiempo permaneciendo culminado e inactivo, finalmente pude presentar el proyecto butterfly en su versión final.
Sufrió muchos cambios a lo largo del tiempo, y maduro para llegar a poder utilizarse en PC de bajos recursos, como por ejemplo una netbook. Si bien no es una versión para usuario final, no necesita mayores ajustes para que pueda correr en diversas condiciones de luz, posición respecto a la camará, timming's y etc.
El proyecto fue calificado con un nueve! Teniendo en cuenta que todavía se puede mejorar más.
La buena noticia, es que al rendir este final, me he recibido de Analista, y ahora con mucha suerte y esfuerzo puede que el año que viene obtenga la licenciatura.
Dejo para descargar el archivo ejecutable, y el trabajo escrito con una explicación del mismo.
http://www.4shared.com/file/220253406/c1c10397/Butterfly.html
Para poder usarlo se necesita reproducir la herramienta para lograr el aumento analógicamente, también descripto en el trabajo. Además se debe tener instalado OpenCV (https://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.0/)
Un saludo.
miércoles 13 de enero de 2010
Rejugabilidad.
Existen varias formas de lograr la rejugabilidad en un juego. Pero antes de empezar a hablar de ello, por obligación, hay que definir a que nos referimos con este término.
La rejugabilidad se refiere simplemente al hecho de volver a jugar un juego (o una fase de un juego) una vez completado el mismo. Su principal objetivo es, por lo tanto, estirar la vida útil del título por propia voluntad del jugador, viéndose incentivado por diversos factores que son el tema de discusión de este artículo.
Hay que señalar que si bien es uno de sus objetivos, estirar el tiempo que se juega no significa darle rejugabilidad. Los aspectos que consideremos para esto deben ser aquellos que tiendan a lograr que jugador vuelva a jugar, y no que retrase el final del juego.Existe una sutil diferencia entre estirar el tiempo de juego (rejugabilidad) y estirar un juego (Añadir elementos repetitivos, dar vueltas sobre los mismo para que el jugador tarde en ganar).
Algunas de las herramientas de las que voy a mencionar son: Score, Secretos, Múltiples finales, Caminos alternativos, Contenidos desbloqueables, Multiplayer, Niveles de dificultad, Selección de Escenas, Subquest, creación de contenidos, trucos y por último selección de personajes.
Score.
Una de las herramientas más utilizadas y clásicas en el mundo de los videojuegos, es el score. Sin embargo, el origen del score no es propio de los videojuegos sino que es un concepto tomado de los juegos en general. Se puede ver tanto desde un punto de vista multiplayer, en por ejemplo el fútbol donde la acción de hacer un Gol incrementa el puntaje del equipo; hasta el otro extremo desde un punto de vista single player, por ejemplo en el juego "solo uno" (juego de mesa en donde se tiene un tablero lleno de fichas y el objetivos es dejar solo una pieza en el centro, la cantidad de fichas que quedan son el puntaje y cuanto menor sea, mejor se jugó).
La idea aplicada en videojuegos es simple, asignarle un puntaje (positivo o negativo) a las acciones que se consideran oportunas para crear, a fin de cuentas, un puntaje para cada jugada.
Que satisface en el jugador.
Esta mecánica apela principalmente al sentido de la competencia que tienen los jugadores, y es por ello que es conveniente que este puntaje se pueda compartir con otros jugadores para montar una especie de desafío implícito que lo incentive a batir records. Otro aspecto del que se puede sacar provecho por medio de esta herramienta es la autosuperación del jugador.
No hay que olvidarse que la competencia es una necesidad de carácter social por lo que es bueno formar la tabla de highscore que identifique quien y cuantos puntos se hicieron, de manera que se puedan comparar los resultados.
Compartir.
Sería ideal armar una tabla online donde todos los jugadores en distintas partes del mundo puedan subir su puntaje y asi posicionarse en un ranking mundial. El problema que se puede plantear es que, una vez que el juego es viejo (o adquiere cierta edad), los puntajes más altos quedan primeros en las tablas para siempre lo que podría llegar a decepcionar a nuevos jugadores por no lograr aparecer nunca. Soluciones posibles son dos
No siempre es posible compartir puntajes de manera online (ej una consola no conectada internet, un dispositivo movil, u otros motivos que pueden ser tan solo capricho de un miembro del equipo), en su lugar se pueden plantear dos estrategias distintas totalmente compatibles.
Por un lado, una tabla de highscore "local" (clásicos en Arcades), para compartir con amigos y familiares.
Otra opción es crear una especie de calificación para la jugada basada en puntaje (ej: Odin Sphere). Este consiste en la asignación de una letra por ejemplo A B C D F, o bien númerica 1..10 (menos utilizada) según el desempeño en el juego. Esto requerirá de un buen proceso de playtesting para conocer los puntajes óptimos humanamente posibles.
Esta última variante actúa más bien un sentido de autosuperación que de competencia, aunque este puntaje puede ser compartido de palabra entre los jugadores.
Aspectos negativos.
Incluir puntaje en un videojuego no siempre es posible ya que suele romper atmósferas de terror, suspenso, drama, e incluso puede afectar negativamente la inmersión en el mundo del juego. El puntaje también puede romper la ilusión de realismo, y puede llegar a obstruir en la historia si desvía demasiado la atención del jugador (Seguir juntando puntos mientras machacan a un aliado).Incluir o no un puntaje depende de estilo del juego y del mensaje que se busca transmitir (si es que hay alguno).
Implementaciones.
Se puede aplicar puntajes positivos a acciones que se quieren premiar o puntajes negativos a las que se quieren presentar como "malas".
En los puntajes positivos, la idea es dar mayor puntaje a las acciones más dificiles, pocos probables o poco frecuentes en el juego. Otorgar puntaje a una acción puede ser útil también para darle una pista al jugador de que esta haciendo lo correcto (por ejemplo acertar los disparos en el punto débil de un Boss).
Los puntajes negativos, se suelen usar para guiar al jugador por el camino que deseamos (por ejemplo moralmente), o bien en trampas donde la astucia del jugador lo premia al evadirlas (no caer en un hoyo).
Como estrategia moral podemos citar la acción clásica de quitar muchos puntos por matar a un aliado o a un civil.
Score como dinero.
Suele utilizarse también una variante del score, donde se puede utilizar una medida paralela (o la misma) para comprar items en el juego. Estos items pueden usarse para facilitar el juego y hasta pueden ser elementos meramente decorativos, lo ideal es que este dinero sea acumulativo para que al volver a jugar una fase siga incrementándolo.
Secretos.
Otra forma de incrementar la rejugabilidad es la introducción de secretos. Los secretos pueden ser items útiles (armas, vida) , zonas ocultas, o incluso fragmentos de la historia. Para que este tipo de factor sea importante, es ideal mostrar la cantidad total de secretos en un nivel sobre la cantidad de secretos descubiertos, para que una vez finalizada la fase el jugador sepa si quedaron zonas sin descubrir (si lo que se quiere es rejugabilidad, y no tan solo premiar la curiosidad).
Que satisface en el jugador.
Esta herramienta apela al sentido de exploración en un jugador, como también la curiosidad. Por descubrir un secreto más, el jugador puede estar dispuesto a recorrer el mapa de arriba a abajo una y otra vez.
Ventajas indirectas.
Al incluir secretos en un juego, ampliamos la atención que presta el jugador al mismo, ya que estará en la continua búsqueda de pequeños detalles que le den pistas que revelen un secreto, esto tiene como consecuencia que el jugador aprecie el diseño del nivel, y el arte puesto en el mismo, a prestar tanta atención a los detalles.
Aspectos negativos.
La inclusión de secretos suele complicar la tarea de un level designer si no se quiere desviar la atención del jugador del flujo principal del juego. Otro aspecto a tener en cuenta es que deben estar bien ocultos y al mismo tiempo deben existir las pistas necesarias para que sean descubiertas sin exagerar ninguno de los extremos.
Deben ser la cantidad apropiada para cada nivel, y deben poder descubrirse sin interferir con el objetivo del nivel (no es bueno que el secreto se confunda con un puzzle que permita al jugador avanzar).
La falta de secretos luego de una exploración en lugares o tareas monótonas puede terminar convirtiéndose en un factor de decepción.
Múltiples finales.
Suele ser una tarea costosa y no es aplicable a cualquier tipo de juego, depende mucho de la historia principal (a diferencia de la mayoría de las herramientas aquí discutidas) y en general son el resultado de tomar caminos alternativos, o decisiones alternativas.
Es importante también el factor de inmersión en el mundo del juego que se logra en el jugador, ya que dependiendo del mismo es que puede ser que el jugador este dispuesto a jugar todo desde el comienzo o simplemente volver a intentarlo desde un savepoint. Una solución elegante es crear auto-guardados ocultos que al finalizar el juego son desbloqueados, o bien utilizando un selector de niveles (luego discutido en el articulo) .
Cuanto más simple y corta sea la historia(o el juego en general) más fácil suele ser la inclusión de distintos finales.
Que satisface en el jugador.
Si la historia o el mundo del juego son lo suficientemente atrapantes, saber de la existencia de un final alternativo despertará curiosidad en el jugador.
Como contarlo.
La decisión de como informar de estos finales son varias, pueden ser incluidas directamente en el mismo juego (por ejemplo con un contador de finales I wish I were the Moon), puede ser revelada por algún dialogo con un personaje, o bien puede ser el resultado de lanzar una noticia luego de publicado el juego. También se puede optar mantenerlo en secreto, y esperar a que un jugador lo descubra y corra la vos.
Caminos alternativos, mismo resultado.
Esta herramienta es similar a la anterior, parte de la idea de un camino alternativo o decisión alternativa, solo que esta vez desemboca en un mismo desenlace desde el punto de vista de la historia general. Este tipo de alternativa se debe aplicar simplemente al recorrido del nivel pero no debe afectar el desenlace final de la historia (aunque se puede modificar parte de ella).
La curiosidad es la que juega un papel importante en este recurso, es por ello que las decisiones deben ser atractivas para que el jugador se sienta incentivado a volver a intentarlo.Un buen ejemplo son las etapas de decisión en el RE3.
Contenidos desbloqueables.
A través de un determinado score, la finalización del juego, la recolección de todos los secretos del nivel, la recolección de todos los items de cierto tipo o cualquier otro tipo de estrategia, puede tener como resultado y para incentivar tales acciones, destrabar un contenido desbloqueable.
Este contenido es variado y pueden ser de varias índoles. Apela al sentido de curiosidad del jugador.
Pueden ser muestras de material del desarrollo del juego como concept art de niveles o personajes, e incluso pueden ser fotos del equipo de desarrollo, distintos trajes, vehículos, personajes, niveles bonus, distintos modos de juego y un gran etc.
Niveles bonus.
Crear niveles bonus que tengan un limite de tiempo, o algún tipo de puntaje, o bien fragmentos secundarios de la historia, es una buena herramienta para incentivar al jugador a seguir con nuestro juego. Estos niveles pueden ser totalmente paralelos a la historia principal, incluso no tener el menor sentido, o al otro extremo podemos contar un pequeño fragmento de la historia que ayude a cerrarla, también podemos contar algo acerca de los personajes secundarios.
Modos multiplayer.
Competir, cooperar, socializar, son necesidades comunes en los jugadores, y es bueno aprovechar el gameplay desarrollado, tal vez para singleplayer, proponiendo modos de juegos cooperativos o diferentes tipos de desafíos entre los jugadores. Este modo multiplayer puede estar totalmente alejado de la historia, e incluso ni siquiera concordar con el gameplay central (Ejemplo: TimeSpliters).
El desarrollo de un modo multiplayer es un tema complejo que no pretendo abordar dada la idea del articulo, pero es importante destacar que incluir un modo multiplayer puede darle mucho valor al juego (Ejemplo Halo).
Niveles de Dificultad.
Se pueden plantear dos objetivos para incluir en un juego la selección de dificultad:
Selección de escenas.
Es esencial contar con un selector de niveles para permitir una rejugabilidad más relajada. Hay que darle la libertad al jugador para revivir aquellos momentos que más haya disfrutado, o bien lograr batir records o completar subquest, probar caminos alternativos, etc.
Un buen selector de niveles deberá informar sobre las estadísticas del jugador (tiempo, puntaje, secretos, etc) y mostrar imágenes descriptivas sobre el nivel de manera que el jugador pueda reconocerlo fácilmente.
Trucos.
Si bien suelen representar herramientas de debug no retiradas, usualmente pueden cumplir con una segunda función que es la incentivar al jugador a probar el juego rompiendo las reglas del mismo. Suelen cumplir deseos de exploración, la curiosidad o simplemente las ganas de comprar o adquirir todo lo que el juego posea. Estos trucos incluso pueden ser revelados al jugador como contenido desbloqueable al finalizar el mismo, o bien prohibir su uso hasta que el juego se haya concluido al menos una vez.
SubQuests.
Generalmente los subquest son herramientas para darle más vida al juego, darle libertad de decisión y estira la duración del mismo, pero también pueden considerarse como una herramienta de rejugabilidad. Los subquest deberían seguir estando activos incluso una vez finalizado el juego, de manera que un juegador vuelva a visitar niveles en que hayan quedado subquest sin completar.
También se pueden destacar subquest del tipo en que se deben recoger/eliminar/descubir X cantidad de elementos de un mismo tipo en un nivel; para poder convertir esto en un factor de rejugabilidad debería contar con un selector de niveles que permita conocer información acerca de los subquest cumplidos.
Creación de contenidos.
Esta herramienta apela a la creatividad del jugador. Puede observarse dentro de cualquier genero desde un FPS (Dibujar su nombre con la marca de disparos en una pared) hasta juegos RTS ( disposición de edificios en un ciudad), el jugador buscará expresarse por medio de las herramientas que tenga disponible.
Existen muchos tipos de elementos con los que el jugador puede expresarse, y es conveniente, dependiendo del contenido generado, permitir compartir las creaciones entre los jugadores.
Editor de niveles.
Una herramienta común puede ser un editor de niveles. Este editor debe ser lo más simplificado posible y al mismo tiempo debe permitirle al jugador expresar su creatividad sin romper los limites de ejecución del hardware (Poner demasiada cantidad de emisores de partículas,enemigos con IA de alto consumo de CPU, o demasiados objetos en un mismo nivel). El editor debe ser, en medida de lo posible, fácil de aprender y dominar.
Es bueno también tener la posibilidad de exportar los niveles para que se pueda compartir con otras personas, y este factor es mejor aún, si el propio juego ofrece opciones dentro de él para hacerlo.
Si el editor de niveles es demasiado completo puede no ser utilizado por el común de los jugadores, aunque atraerá la atención de level designer (o futuros level designer) los cuales crearán comunidades sobre la creación de mapas para el juego, y el juego ganará niveles de gran calidad técnica.
Si el editor es limitado puede cohibir la creatividad del jugador y al mismo tiempo puede ser la oportunidad para aquellos jugadores que no dispongan del conocimiento o tiempo necesario para aprender la herramienta.
Personalización del Avatar.
Ya sea un vehículo, un personaje de un RPG, o un "Sim" si el jugador puede personalizarlo y algunas de las herramientas para hacerlo son desbloqueables se puede utilizar como factor de rejugabilidad.
Un muy buen ejemplo de esto llevado al extremo es el juego Spore.
Elementos propios del gameplay.
Pueden incluirse dentro del juego es si mismo herramientas que fomenten la creatividad por si solas (ejemplo Crayon Physics), donde el jugador cree elementos interactivos o simplemente visuales sobre el cual pueda actuar o admirar. Un item que le permita dejar una marca le permitirá al jugador dibujar y escribir, elementos físicos con que el jugador pueda interactuar le permitirán inventar diversas estructuras y soluciones (Trine, World of Goo ). Generalmente este tipo de rejugabilidad es un resultado imprevisto o no planeado (No es el caso de los ejemplos citados), pero no debe ser ignorado, ya que dependiendo de cuanto afecte al mundo del juego o cuan expresiva sea, puede ser un elemento que incentive al jugador a plantear diferentes soluciones en puzzles, o simplemente crear pequeñas obras de arte, y por ende volver a jugar el juego.
Elección de personajes.
Elección de personajes debe distinguirse de la elección de skin o la personalización de un avatar. El cambio del personaje deberá implicar cambio en la jugabilidad, si lo hace, pueden plantear elementos de gameplay distintos que hagan encarar a todo el juego de manera distinta.
Esta suele ser una herramienta típica de un RPG donde se selecciona las clases, pero no debe restringirse solo a este genero ya que es una herramienta muy poderosa. Un personaje con un gameplay distinto en un mismo mundo de juego con una misma historia puede valer la pena siempre y cuando estos factores(histora y mundo de juego) no hayan sido los centrales.
Ultimas palabras.
Todas las herramientas aqui expuestas pueden ser utlizadas en simultaneo según se crea necesario, he incluso mezclarse para lograr crear nuevas. Sin embargo dadas la cantidad de herramientas que existen para hacerlos el articulo queda corto.
Cabe destacar como último detalle, que si el juego no resulta adictivo o simplemente no resulta bueno, todo el esfuerzo puesto en la rejugabilidad será en vano, por lo que la introducción de elementos de rejugabilidad no deben interferir nunca con el desarrollo central del gameplay y del juego en general.
Espero que te haya sido tan útil la lectura como a mí la escritura de este artículo, cualquier sugerencia, comentario, regaño es más que bienvenido!
Un saludo
La rejugabilidad se refiere simplemente al hecho de volver a jugar un juego (o una fase de un juego) una vez completado el mismo. Su principal objetivo es, por lo tanto, estirar la vida útil del título por propia voluntad del jugador, viéndose incentivado por diversos factores que son el tema de discusión de este artículo.
Hay que señalar que si bien es uno de sus objetivos, estirar el tiempo que se juega no significa darle rejugabilidad. Los aspectos que consideremos para esto deben ser aquellos que tiendan a lograr que jugador vuelva a jugar, y no que retrase el final del juego.Existe una sutil diferencia entre estirar el tiempo de juego (rejugabilidad) y estirar un juego (Añadir elementos repetitivos, dar vueltas sobre los mismo para que el jugador tarde en ganar).
Algunas de las herramientas de las que voy a mencionar son: Score, Secretos, Múltiples finales, Caminos alternativos, Contenidos desbloqueables, Multiplayer, Niveles de dificultad, Selección de Escenas, Subquest, creación de contenidos, trucos y por último selección de personajes.
Score.
Una de las herramientas más utilizadas y clásicas en el mundo de los videojuegos, es el score. Sin embargo, el origen del score no es propio de los videojuegos sino que es un concepto tomado de los juegos en general. Se puede ver tanto desde un punto de vista multiplayer, en por ejemplo el fútbol donde la acción de hacer un Gol incrementa el puntaje del equipo; hasta el otro extremo desde un punto de vista single player, por ejemplo en el juego "solo uno" (juego de mesa en donde se tiene un tablero lleno de fichas y el objetivos es dejar solo una pieza en el centro, la cantidad de fichas que quedan son el puntaje y cuanto menor sea, mejor se jugó).
La idea aplicada en videojuegos es simple, asignarle un puntaje (positivo o negativo) a las acciones que se consideran oportunas para crear, a fin de cuentas, un puntaje para cada jugada.
Que satisface en el jugador.
Esta mecánica apela principalmente al sentido de la competencia que tienen los jugadores, y es por ello que es conveniente que este puntaje se pueda compartir con otros jugadores para montar una especie de desafío implícito que lo incentive a batir records. Otro aspecto del que se puede sacar provecho por medio de esta herramienta es la autosuperación del jugador.
No hay que olvidarse que la competencia es una necesidad de carácter social por lo que es bueno formar la tabla de highscore que identifique quien y cuantos puntos se hicieron, de manera que se puedan comparar los resultados.
Compartir.
Sería ideal armar una tabla online donde todos los jugadores en distintas partes del mundo puedan subir su puntaje y asi posicionarse en un ranking mundial. El problema que se puede plantear es que, una vez que el juego es viejo (o adquiere cierta edad), los puntajes más altos quedan primeros en las tablas para siempre lo que podría llegar a decepcionar a nuevos jugadores por no lograr aparecer nunca. Soluciones posibles son dos
- Borrar las tablas cada cierto periodo de tiempo, lo cual es totalmente injusto para los jugadores que se pasaron horas y horas para estar arriba de todo en la lista. Un posible intento de suavizar este defecto, es pasar al primero de la lista a una lista de "Top legend", donde queda almacenado históricamente los puntajes más altos, llevada en paralelo con la lista de higscore temporal.
- Armar categorias: por zonas, por tiempo, por edad, etc... La forma más clásica es armar puntajes por tiempo, es decir highscore del día, highscore del mes, highscore total.
No siempre es posible compartir puntajes de manera online (ej una consola no conectada internet, un dispositivo movil, u otros motivos que pueden ser tan solo capricho de un miembro del equipo), en su lugar se pueden plantear dos estrategias distintas totalmente compatibles.
Por un lado, una tabla de highscore "local" (clásicos en Arcades), para compartir con amigos y familiares.
Otra opción es crear una especie de calificación para la jugada basada en puntaje (ej: Odin Sphere). Este consiste en la asignación de una letra por ejemplo A B C D F, o bien númerica 1..10 (menos utilizada) según el desempeño en el juego. Esto requerirá de un buen proceso de playtesting para conocer los puntajes óptimos humanamente posibles.
Esta última variante actúa más bien un sentido de autosuperación que de competencia, aunque este puntaje puede ser compartido de palabra entre los jugadores.
Aspectos negativos.
Incluir puntaje en un videojuego no siempre es posible ya que suele romper atmósferas de terror, suspenso, drama, e incluso puede afectar negativamente la inmersión en el mundo del juego. El puntaje también puede romper la ilusión de realismo, y puede llegar a obstruir en la historia si desvía demasiado la atención del jugador (Seguir juntando puntos mientras machacan a un aliado).Incluir o no un puntaje depende de estilo del juego y del mensaje que se busca transmitir (si es que hay alguno).
Implementaciones.
Se puede aplicar puntajes positivos a acciones que se quieren premiar o puntajes negativos a las que se quieren presentar como "malas".
En los puntajes positivos, la idea es dar mayor puntaje a las acciones más dificiles, pocos probables o poco frecuentes en el juego. Otorgar puntaje a una acción puede ser útil también para darle una pista al jugador de que esta haciendo lo correcto (por ejemplo acertar los disparos en el punto débil de un Boss).
Los puntajes negativos, se suelen usar para guiar al jugador por el camino que deseamos (por ejemplo moralmente), o bien en trampas donde la astucia del jugador lo premia al evadirlas (no caer en un hoyo).
Como estrategia moral podemos citar la acción clásica de quitar muchos puntos por matar a un aliado o a un civil.
Score como dinero.
Suele utilizarse también una variante del score, donde se puede utilizar una medida paralela (o la misma) para comprar items en el juego. Estos items pueden usarse para facilitar el juego y hasta pueden ser elementos meramente decorativos, lo ideal es que este dinero sea acumulativo para que al volver a jugar una fase siga incrementándolo.
Secretos.
Otra forma de incrementar la rejugabilidad es la introducción de secretos. Los secretos pueden ser items útiles (armas, vida) , zonas ocultas, o incluso fragmentos de la historia. Para que este tipo de factor sea importante, es ideal mostrar la cantidad total de secretos en un nivel sobre la cantidad de secretos descubiertos, para que una vez finalizada la fase el jugador sepa si quedaron zonas sin descubrir (si lo que se quiere es rejugabilidad, y no tan solo premiar la curiosidad).
Que satisface en el jugador.
Esta herramienta apela al sentido de exploración en un jugador, como también la curiosidad. Por descubrir un secreto más, el jugador puede estar dispuesto a recorrer el mapa de arriba a abajo una y otra vez.
Ventajas indirectas.
Al incluir secretos en un juego, ampliamos la atención que presta el jugador al mismo, ya que estará en la continua búsqueda de pequeños detalles que le den pistas que revelen un secreto, esto tiene como consecuencia que el jugador aprecie el diseño del nivel, y el arte puesto en el mismo, a prestar tanta atención a los detalles.
Aspectos negativos.
La inclusión de secretos suele complicar la tarea de un level designer si no se quiere desviar la atención del jugador del flujo principal del juego. Otro aspecto a tener en cuenta es que deben estar bien ocultos y al mismo tiempo deben existir las pistas necesarias para que sean descubiertas sin exagerar ninguno de los extremos.
Deben ser la cantidad apropiada para cada nivel, y deben poder descubrirse sin interferir con el objetivo del nivel (no es bueno que el secreto se confunda con un puzzle que permita al jugador avanzar).
La falta de secretos luego de una exploración en lugares o tareas monótonas puede terminar convirtiéndose en un factor de decepción.
Múltiples finales.
Suele ser una tarea costosa y no es aplicable a cualquier tipo de juego, depende mucho de la historia principal (a diferencia de la mayoría de las herramientas aquí discutidas) y en general son el resultado de tomar caminos alternativos, o decisiones alternativas.
Es importante también el factor de inmersión en el mundo del juego que se logra en el jugador, ya que dependiendo del mismo es que puede ser que el jugador este dispuesto a jugar todo desde el comienzo o simplemente volver a intentarlo desde un savepoint. Una solución elegante es crear auto-guardados ocultos que al finalizar el juego son desbloqueados, o bien utilizando un selector de niveles (luego discutido en el articulo) .
Cuanto más simple y corta sea la historia(o el juego en general) más fácil suele ser la inclusión de distintos finales.
Que satisface en el jugador.
Si la historia o el mundo del juego son lo suficientemente atrapantes, saber de la existencia de un final alternativo despertará curiosidad en el jugador.
Como contarlo.
La decisión de como informar de estos finales son varias, pueden ser incluidas directamente en el mismo juego (por ejemplo con un contador de finales I wish I were the Moon), puede ser revelada por algún dialogo con un personaje, o bien puede ser el resultado de lanzar una noticia luego de publicado el juego. También se puede optar mantenerlo en secreto, y esperar a que un jugador lo descubra y corra la vos.
Caminos alternativos, mismo resultado.
Esta herramienta es similar a la anterior, parte de la idea de un camino alternativo o decisión alternativa, solo que esta vez desemboca en un mismo desenlace desde el punto de vista de la historia general. Este tipo de alternativa se debe aplicar simplemente al recorrido del nivel pero no debe afectar el desenlace final de la historia (aunque se puede modificar parte de ella).
La curiosidad es la que juega un papel importante en este recurso, es por ello que las decisiones deben ser atractivas para que el jugador se sienta incentivado a volver a intentarlo.Un buen ejemplo son las etapas de decisión en el RE3.
Contenidos desbloqueables.
A través de un determinado score, la finalización del juego, la recolección de todos los secretos del nivel, la recolección de todos los items de cierto tipo o cualquier otro tipo de estrategia, puede tener como resultado y para incentivar tales acciones, destrabar un contenido desbloqueable.
Este contenido es variado y pueden ser de varias índoles. Apela al sentido de curiosidad del jugador.
Pueden ser muestras de material del desarrollo del juego como concept art de niveles o personajes, e incluso pueden ser fotos del equipo de desarrollo, distintos trajes, vehículos, personajes, niveles bonus, distintos modos de juego y un gran etc.
Niveles bonus.
Crear niveles bonus que tengan un limite de tiempo, o algún tipo de puntaje, o bien fragmentos secundarios de la historia, es una buena herramienta para incentivar al jugador a seguir con nuestro juego. Estos niveles pueden ser totalmente paralelos a la historia principal, incluso no tener el menor sentido, o al otro extremo podemos contar un pequeño fragmento de la historia que ayude a cerrarla, también podemos contar algo acerca de los personajes secundarios.
Modos multiplayer.
Competir, cooperar, socializar, son necesidades comunes en los jugadores, y es bueno aprovechar el gameplay desarrollado, tal vez para singleplayer, proponiendo modos de juegos cooperativos o diferentes tipos de desafíos entre los jugadores. Este modo multiplayer puede estar totalmente alejado de la historia, e incluso ni siquiera concordar con el gameplay central (Ejemplo: TimeSpliters).
El desarrollo de un modo multiplayer es un tema complejo que no pretendo abordar dada la idea del articulo, pero es importante destacar que incluir un modo multiplayer puede darle mucho valor al juego (Ejemplo Halo).
Niveles de Dificultad.
Se pueden plantear dos objetivos para incluir en un juego la selección de dificultad:
- Permitir que personas no experimentadas en el genero (o que simplemente no quieran complicar las jugadas) puedan jugar el juego de acuerdo a su experiencia o deseos.
- Fomentar la autosuperación, al tratar sugerir al jugador completar el juego (o nivel) en las distintas dificultades (Guitar Hero, Doom).
Selección de escenas.
Es esencial contar con un selector de niveles para permitir una rejugabilidad más relajada. Hay que darle la libertad al jugador para revivir aquellos momentos que más haya disfrutado, o bien lograr batir records o completar subquest, probar caminos alternativos, etc.
Un buen selector de niveles deberá informar sobre las estadísticas del jugador (tiempo, puntaje, secretos, etc) y mostrar imágenes descriptivas sobre el nivel de manera que el jugador pueda reconocerlo fácilmente.
Trucos.
Si bien suelen representar herramientas de debug no retiradas, usualmente pueden cumplir con una segunda función que es la incentivar al jugador a probar el juego rompiendo las reglas del mismo. Suelen cumplir deseos de exploración, la curiosidad o simplemente las ganas de comprar o adquirir todo lo que el juego posea. Estos trucos incluso pueden ser revelados al jugador como contenido desbloqueable al finalizar el mismo, o bien prohibir su uso hasta que el juego se haya concluido al menos una vez.
SubQuests.
Generalmente los subquest son herramientas para darle más vida al juego, darle libertad de decisión y estira la duración del mismo, pero también pueden considerarse como una herramienta de rejugabilidad. Los subquest deberían seguir estando activos incluso una vez finalizado el juego, de manera que un juegador vuelva a visitar niveles en que hayan quedado subquest sin completar.
También se pueden destacar subquest del tipo en que se deben recoger/eliminar/descubir X cantidad de elementos de un mismo tipo en un nivel; para poder convertir esto en un factor de rejugabilidad debería contar con un selector de niveles que permita conocer información acerca de los subquest cumplidos.
Creación de contenidos.
Esta herramienta apela a la creatividad del jugador. Puede observarse dentro de cualquier genero desde un FPS (Dibujar su nombre con la marca de disparos en una pared) hasta juegos RTS ( disposición de edificios en un ciudad), el jugador buscará expresarse por medio de las herramientas que tenga disponible.
Existen muchos tipos de elementos con los que el jugador puede expresarse, y es conveniente, dependiendo del contenido generado, permitir compartir las creaciones entre los jugadores.
Editor de niveles.
Una herramienta común puede ser un editor de niveles. Este editor debe ser lo más simplificado posible y al mismo tiempo debe permitirle al jugador expresar su creatividad sin romper los limites de ejecución del hardware (Poner demasiada cantidad de emisores de partículas,enemigos con IA de alto consumo de CPU, o demasiados objetos en un mismo nivel). El editor debe ser, en medida de lo posible, fácil de aprender y dominar.
Es bueno también tener la posibilidad de exportar los niveles para que se pueda compartir con otras personas, y este factor es mejor aún, si el propio juego ofrece opciones dentro de él para hacerlo.
Si el editor de niveles es demasiado completo puede no ser utilizado por el común de los jugadores, aunque atraerá la atención de level designer (o futuros level designer) los cuales crearán comunidades sobre la creación de mapas para el juego, y el juego ganará niveles de gran calidad técnica.
Si el editor es limitado puede cohibir la creatividad del jugador y al mismo tiempo puede ser la oportunidad para aquellos jugadores que no dispongan del conocimiento o tiempo necesario para aprender la herramienta.
Personalización del Avatar.
Ya sea un vehículo, un personaje de un RPG, o un "Sim" si el jugador puede personalizarlo y algunas de las herramientas para hacerlo son desbloqueables se puede utilizar como factor de rejugabilidad.
Un muy buen ejemplo de esto llevado al extremo es el juego Spore.
Elementos propios del gameplay.
Pueden incluirse dentro del juego es si mismo herramientas que fomenten la creatividad por si solas (ejemplo Crayon Physics), donde el jugador cree elementos interactivos o simplemente visuales sobre el cual pueda actuar o admirar. Un item que le permita dejar una marca le permitirá al jugador dibujar y escribir, elementos físicos con que el jugador pueda interactuar le permitirán inventar diversas estructuras y soluciones (Trine, World of Goo ). Generalmente este tipo de rejugabilidad es un resultado imprevisto o no planeado (No es el caso de los ejemplos citados), pero no debe ser ignorado, ya que dependiendo de cuanto afecte al mundo del juego o cuan expresiva sea, puede ser un elemento que incentive al jugador a plantear diferentes soluciones en puzzles, o simplemente crear pequeñas obras de arte, y por ende volver a jugar el juego.
Elección de personajes.
Elección de personajes debe distinguirse de la elección de skin o la personalización de un avatar. El cambio del personaje deberá implicar cambio en la jugabilidad, si lo hace, pueden plantear elementos de gameplay distintos que hagan encarar a todo el juego de manera distinta.
Esta suele ser una herramienta típica de un RPG donde se selecciona las clases, pero no debe restringirse solo a este genero ya que es una herramienta muy poderosa. Un personaje con un gameplay distinto en un mismo mundo de juego con una misma historia puede valer la pena siempre y cuando estos factores(histora y mundo de juego) no hayan sido los centrales.
Ultimas palabras.
Todas las herramientas aqui expuestas pueden ser utlizadas en simultaneo según se crea necesario, he incluso mezclarse para lograr crear nuevas. Sin embargo dadas la cantidad de herramientas que existen para hacerlos el articulo queda corto.
Cabe destacar como último detalle, que si el juego no resulta adictivo o simplemente no resulta bueno, todo el esfuerzo puesto en la rejugabilidad será en vano, por lo que la introducción de elementos de rejugabilidad no deben interferir nunca con el desarrollo central del gameplay y del juego en general.
Espero que te haya sido tan útil la lectura como a mí la escritura de este artículo, cualquier sugerencia, comentario, regaño es más que bienvenido!
Un saludo
A pajarito's life.
Este juego A pajarito's life lo hice originalmente para el concurso 100x100 px, y tuvo la suerte de salir en primer lugar!El corazón del juego esta en contar una historia bien simple, tratando de exponer un background de tristeza. Para lograr este objetivo utilice grñaficos de colores grises, música melancólica y un gameplay minimista e "inmersivo". Tiempo después, y conociendo las dificultades de distribuir un juego hecho en Game Maker en otras plataformas (ademas de Windows), es que me vi incentivado aprender un poco del mundo flash. Gracias a un conjunto de scripts de AS3 llamado Flixel, pude lograr rehacer el juego en una version Flash.
Pueden probarla desde acá: A pajarito's life.
Espero que lo disfruten, eso es todo!
domingo 20 de diciembre de 2009
Butterfly (ex pusepu).
Concluyendo el proyecto.
Me reuní con el profesor de Procesamiento de Imagen y Sonido para mostrarle lo que había llegado a hacer con el proyecto, y me dió un par de ideas para mejorarlo. La que mayores frutos rindió fue la de hacer un "zoom" analógico sobre el sector de interés. Con esto, me ahorro los cálculos de la detección del rostro, gano velocidad y simplifico el programa, además de obtener una mejor resolución sobre el área de interés.
Para armar este zoom, utilice una lente, un envase de yogurt, un pedazo de tela de polar negra, y una base de plastico, el resultado lo que se puede ver en las fotos.
Le recorte la parte de abajo del envase, y pegue allí la lente. A su vez pegue estos a la base plástica para que la cámara calce bien. Luego, al notar que la luz hacia que se refleje la webcam sobre el lente, recubrí todo con tela polar negra.
Le recorte la parte de abajo del envase, y pegue allí la lente. A su vez pegue estos a la base plástica para que la cámara calce bien. Luego, al notar que la luz hacia que se refleje la webcam sobre el lente, recubrí todo con tela polar negra.
Figura 1. Zoom analógico. Cámara.

Figura 1. Zoom analógico. Lente.
Estas son las instrucciones del uso del software que se pueden ver cuando se ejecuta el mismo. Primero se debe localizar la webcam sobre el monitor, y el usuario debe estar frente a la cámara (inmóvil, dada su condición, si no se tiene dicha discapacidad tiene que imitarse la falta de movilidad quedandose siempre en el mismo lugar) ver figura 3.
Figura 3. Instruccion 1
Para que el software busque la pupila debe abrirse los párpados lo más posible por un periodo breve, un sonido indicará que se a detectado correctamente la pupila y que la se pueden relajar los parpados.
Para mover el mouse se debe indicar una dirección con la mirada. Para hacer un click se debe cerrar el ojo un periodo de tiempo superior al de un parpadeo, hasta que se escuche un sonido que indica el "click".
Figura 4. Instrucción 2
Luego de haberse tomado las medidas, una persona debe señalar marcando con el mouse la sección correspondiente al ojo, no de deben incluir las cejas ya que puede traer problemas de detección.
A continuación un video que muestra el software en acción.
Figura 6. Estado detectar pupila.
Se comienza con la adquisición, luego de que se adquiere la imagen se aplican los filtros de media y de detección de bordes. Se aplica la transformada de Hough para detectar círculos, si se detectan círculos se comprueba si es similar al anterior, si lo es se promedia con el anterior y si supera un timer se toma una fotografía de la pupila y se pasa al siguiente estado, sino se detecta se vuelve a adquirir, y si se detecta y es diferente a los círculos que se detectaron antes, entonces se reinicia el promedio con la información del círculo actual.
Figura 7. Estado seguir pupila y actualizar cursor.
En este estado se realiza un matching por correlación. Si supera un valor minimo se actualiza la posición del cursor segun la velocidad determinada por la distancia desde el centro, siempre y cuando el centro se haya fijado, si no fue así se fija el centro hasta superar un timer. Si no se detecta la pupila se acumula un timer, si este timer llega al valor en que debe hacer click, se simula un click, sino si no supera el timer de perdida sigue con la nueva adquisición. Si supera el timer perdida se vuleve al estado anterior.
Eso es todo por ahora espero sus comentarios.
Un saludo.
jueves 15 de octubre de 2009
Pusepu (Nuevo enfoque)
Mostrando los avances.
Luego de un periodo de experimentación con las herramientas y con el proyecto mismo surgieron unas complicaciones algo obvias.
1º: Nunca abrimos totalmente el ojo, por lo tanto la pupila rara vez se adquiere como un circulo.2º: El ruido en la imagen hace que se detecten falsos positivos. (Ver figura 1)
Luego de adquirir la imagen, si no se determina el ROI entonces se vuelve a adquirir otra subimagen, si se detecta el ROI entonces se pasa al procesado.Hasta ahora todo igual, pero lo que cambia es el procesado que actua como una maquina de estados finitos muy simple.

Si el estado es buscar ojo hace lo siguiente:
Se usa la transformada de Hough para reconocer círculos si se detectan se compara con el circulo que fue detectado anteriormente (Ver figura 2.). Si no se detecta un círculo o el círculo anterior no coincide con el actual se poner el timer en 0 (cero) .
Si el círculo se detecto se suma uno al timer.
Si el timer supera un tiempo máximo, entonces quiere decir que se detectó el ojo, y su tamaño y posición están determinados por el promedio de las "x","y", y radio de los círculos detectados que fueron similares.
En el momento en que el timer llega al tiempo de espera se toma una "fotografía" del ojo.
En el estado de Reconocer ojo se hace un matching entre la fotografía y el ROI. Si se encuentra se procede a actualizar la posición del cursor, sino se vuelve al estado de buscando ojo.
Todavía hay que ajustar unos cuantos parámetros y optimizar el código, pero el proyecto esa cada vez más sólido.
Espero les siga siendo interesante, en cuanto lo termine publico la aplicación para que la prueben un poco.
Etiquetas:
accesibilidad,
OpenCV,
proyecto,
Pusepu,
UNLu
domingo 20 de septiembre de 2009
PuSePu (debo cambiarle el nombre)
Implementando a poco.
Figura 1. (si eso soy yo, guarden sus comentario, gracias :P)
Como se puede ver en la figura 1, la implementación llega hasta la fase de pre-procesado, aunque faltan ajustar algunos parámetros de los filtros.
En la imagen más grande se puede ver como el modulo de OpenCV detecta el rostro, marcado en rojo. Esto determina un primer ROI (Area de interes) que es refinado , el rostro se divide en 4 partes, y se toma el segundo cuarto que representan los ojos y las cejas (figura 2.).

Figura 1. (si eso soy yo, guarden sus comentario, gracias :P)Como se puede ver en la figura 1, la implementación llega hasta la fase de pre-procesado, aunque faltan ajustar algunos parámetros de los filtros.
En la imagen más grande se puede ver como el modulo de OpenCV detecta el rostro, marcado en rojo. Esto determina un primer ROI (Area de interes) que es refinado , el rostro se divide en 4 partes, y se toma el segundo cuarto que representan los ojos y las cejas (figura 2.).

Figura 2. ROI ajustado.
Luego esa imagen es filtrada con un filtro de difuminado gausiano y se pasa a escala de grises (figura 3.)
Figura 3. Filtro smoothing y escala de grises.
Como se puede apreciar en esta última imagen, todavía falta reducir aún más el ruido que tiene la imagen ya que el ROI quedo perfectamente determinado en todas las pruebas.
El próximo paso es la detección de los círculos (el iris y la pupila).
Figura 3. Filtro smoothing y escala de grises.En el ultimo paso se aplica un filtro para la detección de bordes, en este caso Canny, y se obtiene la imagen de la figura 4.
Como se puede apreciar en esta última imagen, todavía falta reducir aún más el ruido que tiene la imagen ya que el ROI quedo perfectamente determinado en todas las pruebas.
El próximo paso es la detección de los círculos (el iris y la pupila).
miércoles 16 de septiembre de 2009
Puntero Por Seguimieno de Pupila (PuSePu)
Diseñando el software.
Luego de una fase de experimentación y de repasar conceptos, esto es lo que hay que hacer para lograr mover el mouse con los ojos (o al menos eso parece).

0 - Pre-adquisición: Preparar la cámara web, obtener una iluminación mínima, y localizar al usuario a una distancia razonable. Los parámetros reales de a que distancia, cual es la iluminación óptima etc... se conocerán al finalizar el proyecto, y luego de una ardua tarea de depuración.
1: Adquisición de la imagen. Obetner la imagen desde la cámara web hacia el programa. Si bien son dos o tres lineas de código, conceptualmente es importante destacarlo.
2: Determinar el área de interés: Aprovechando un algoritmo que provee openCV para la detección de rostros, se puede reducir el ROI (Área de interés) a la cabeza, y luego de sacar algunas medidas determinar aún mejor en proporción al tamaño de la cabeza la seccion de la cara donde estan los ojos, para reducir más la ROI y al mismo tiempo reducir falsos positivos en la detección de circulos, como pueden ser los orificios nasales.
3: Preprocesado: En esta fase se prepara la imagen con la que se va a trabajar. Se debe convertir la imagen a escala de grises para facilitar la implementación. Se debe suavizar la imagen adquirida para reducir el nivel de ruido de la imagen, y detectar bordes para reducir la cantidad de puntos que deberá verificar la transformada de Hough.
4: Procesado: Se aplica la transformada de Hough y se obtienen los círculos. Posteriormente se realizará un trakcing para determinar el movimiento del cursor.
5: A partir de la posición anterior y otros cálculos aún no definidos se actualiza la posición del cursor.
Todavía quedan algunos cabos sueltos en el diseño, pero se irán refinando a medida de se adquiera conocimientos sobre el tema y el proyecto en sí.
Los mantendré al tanto, estas entradas tiene un doble objetivo: obligarme a documentar el proyecto, y obtener feedback de parte de ustedes, y en lo posible ayudar a alguien en un futuro que se encuentre en fase de experimentación con este apasionante mundo de Procesado de imágenes digitales.
Un saludo.
Suscribirse a:
Entradas (Atom)




