jueves, 26 de septiembre de 2013

Y ahora.... la Versión 2.0

En la presentación de 9 de septiembre se expuso el juego terminado a los demás grupos de desarrollo, en donde gracias a sus comentarios descubrimos detalles que podríamos mejorar. Detalles como que el juego tenia una velocidad lenta y que se demoraba demasiado en llegar a etapas mas difíciles. Otros aspectos técnicos al proyecto de curso es que no logramos conectar el IPhone al proyector (aspecto necesario para la presentación final), por lo cual optamos por dejar concluida la versión 1.0 del videojuego y adaptar estos cambios a un nuevo dispositivo.

Migracion de plataforma iPhone a iPad

Se rediseña el juego para poder visualizarse en un iPad-mini el cual tiene la siguiente resolución 768x1024, siendo muy superior que la actual que poseía el iPhone el cual tenia cargadas 2 resoluciones la del iPhone normal, puesto que estábamos programando para un dispositivo 3GS y su resolución 320x480 y adicionalmente cargábamos la resolución retina que es 640x960, tambien hubo que crear un perfil para el dispositivo y cambiar casi el 30% del código, puesto que al cambiar a XCode5, se eliminaron varios formas de llamar a las funciones y eliminaciones por obsolescencia de parte de Apple de instancias, por ejemplo las llamadas del acelerometro ya no funcionaban, pasaron de UIAcelerometer incluido en el framework Foundation, a ser utilizado mediante CoreMotion. 
Me ha sorprendido lo drástico que pueden llegar a ser los cambios de versiones en XCode, ya que prácticamente son librerías completas las que dejan de funcionar.


Generamos nuevamente el escenario de juego para adaptarlo a las nuevas resoluciones y como fue mencionado anteriormente las dimensiones en la programación fueron adaptadas a las nuevas del iPad.


En cuanto a las ventajas que se ganaron con esta nueva resolución y hardware del dispositivo, fue la opción de poder generar mas obstáculos como fue visto en la presentación (de 5 a 15 rocas), pero no se implementó el modo vibración ya que que los iPads no incorporan esta característica. 
Otro de los detalles de esta nueva versión es que al momento de entrar en Full Screen el juego no oculta la barra de navegación del iPad, aspecto que si ocurría en el dispositivo iPhone 3GS, el tema será resuelto a medida que se tome mas familiaridad con las nuevas implementaciones y/o se mejore la documentación que trae iOS7.

Con esta actualización se da por obsoleto el dispositivo con el cual constatamos y el cual fue presentado en la preview de la semana antes de fiestas patrias de como funcionaban todos los aspectos a los cuales nos habíamos comprometido, y el planB por la no visualización del iPhone 3GS en el proyector recayó en la adoptaron de presentar en iPad y por eso se genera este post, porque es importante mencionar todas las labores extras que se debieron realizar.




-En la Imagen: Vista del  XIB de inicio para la plataforma iPad.




lunes, 9 de septiembre de 2013

Solución de Bugs, ediciones varias

Bueno en el testing del juego nos encontramos con errores que hacían que la aplicación se colgara o quedara sin movimiento y otras relacionadas con el sonido, se describirán en detalla a continuación.

v1.0.1- Se han resulto los problemas que ocasionaban que el auto quedase inmóvil al comisionar con 2 obstáculos a la vez, esto generaba que las respuestas por parte del acelerometro no fuesen procesadas y se terminaba por perder la partida.

Porque ocurría esto ?. Ocurría porque no habíamos puesto un Release en la parte donde se hace referencia al evento que maneja las colisiones, puesto que no estamos trabajando con ARC, como se menciono en spot anteriores, el significado de los ARC, son quienes destruyen los objetos para liberar la memoria.

v1.0.2- Se han resulto problemas referentes a la perdida del sonido, inclusive cuando este estaba activado en las opciones, esto ocurría cuando se iniciaba el juego y el dispositivo estaba con el silenciado o vibrador activado, se iniciaba el juego, y este no volvía a cargar los sonidos. Por que ocurría ?. Este punto comenzó a ocurrir cuando se empezaron a migrar referencias de iOS6 hacia iOS7, por lo tanto se alude el problema a los cambios que hace iOS 7 en AudioToolBox, se soluciona volviendo al estado anterior.

v1.0.3- Se resuelven problemas que ocasionan que al entrar en la view de detalles se perdiera la view del juego, esto también ocasionaba que el juego iniciara sin poder ver la vista del juego.
Por que Ocurría?. Se habían declarado 2 veces los Outlet de la vista inicial, la splash y al entrar en la vista detalles, quedaba un Outlet pasado, es como si entrase 2 veces, se soluciona eliminando un Outlet y dejando el Action tal cual, pues esa parte estaba bien declarada.

Ahora pasamos a los cambios gráficos, se cambia el logo del juego por uno con colores rojos con degrades y sombras, cambio de la gráfica de los botones, y la inclusión de una imagen al lanzar la aplicación.

Nuevo logo.


lunes, 2 de septiembre de 2013

Manejando los sonidos del juego.

Este sera de los últimos Post, ya que tenemos la aplicación funcionando en un dispositivo IOS.
En este Post incluyo el trabajo con los sonidos del juego (que ya esta implementado y funcionando en la aplicación).
Los sonidos escogidos fueron:


  • Choque: sonido que es usado cuando la posición del objeto de nuestro personaje principal en la pantalla intersecta con la de los otros objetos. es decir, es el sonido que hace cuando sufre una colisión.

  • Botón Selección: sonido que hace al presionar uno de los botones del juego (ej: botones de configuración). 
  • Puntuación: sonido utilizado cuando se muestra los resultados de la puntuación.

    Desafíos encontrados:
    Durante el desarrollo de esta etapa nos dio problemas cuando queríamos reproducir mas de un sonido a la vez, también al reproducir sonidos de gran tamaño, lo que fue solucionado al comprimir los archivos de audio lo mas posible tratando a la vez de que no pierda tanta calidad.

    Enlaces:
    Pack de sonidos gratis utilizado: http://www.audio4dj.com/2013/07/01/free-sample-pack-cybernetic-tools/



Carga de RunCrash a dispositivo IOS


En esta ocasión veremos la forma de carga de nuestra aplicación a un dispositivo móvil, en este caso será un iPhone 3GS, donde se compila el código, se verifica que el identificador corresponda al que debe contener el equipo móvil, y si estos perfiles, como los llama Apple están previamente ingresados en la Web de Developers de Apple, tal como se muestran en los post anteriores, donde se mostraron los procedimientos para crear un Identificador de Aplicación. 


Esta es la visualización en XCode en la que vemos una representación de como se vería en un dispositivo IOS, podemos ver que se ve el icono de inicio de nuestro juego. (el otro icono corresponde a una aplicación pequeña creada en la fase de pruebas de factibilidad).


Y luego al pasarlo al dispositivo IOS y ejecutarlo, comprobamos que el juego funciona correctamente. (En la imagen se muestra la foto sacada con la aplicación disponible en el mismo dispositivo):





lunes, 19 de agosto de 2013

Testing de RunCrash en Dispositivo

Bueno en esta entrada se mostrara los fps al correr RunCrash en el dispositivo, como podemos apreciar el juego corre a 60 fps con los cuales obtendremos una muy buena fluidez del mismo, agregando como nota que utilizamos código compatible con el actual iOS7, dejamos notas en el código fuente referente a esto, porque al momento de migrar a XCode 5 el cual esta en fase beta para developers, no correría el juego o lanzaría los típicos warnings de que se esta utilizando código desechado



Bueno eso seria la entrada, después se podría colgar un video del juego en acción.

Visión de los XIB de RunCrash

Bueno en esta entrada se mostraran los archivos XIB que contiene RunCrash, pero que es un XIB, bueno a grandes rasgos un XIB es un Xcode Interface Builder, el cual en versiones anteriores a XCode 4 incluía una heramienta que hacia la labor de las interfaces gráficas de las aplicaciones tanto de los dispositivos móviles como de las aplicaciones de escritorio. Bueno pero pasemos a las XIB de RunCrash.

Primero mostraremos la Pantalla de Bienvenida, la que se nos muestra al momento de correr a RunCrash, como se puede apreciar en la propiedad de los objetos este XIB consta de 2 objetos los cuales son, en realidad consta de 2 objetos expuestos y 4 etiquetas en la parte oculta del imageView, es por esto que no se muestran en la selección de objetos pero al seleccionar el imageView se podrá tener acceso a ellos, bueno esto no es muy relevante pero para quien quiera saber de donde sale ese texto esa es la respuesta. Pasandp a los Outlets o las acciones para que se entienda mejor, vemos que el imageView no contiene ningún Outlets asociado, no así el Botón el cual se vera en la siguiente imagen


En esta imagen como se mencionaba con anterioridad se puede apreciar los eventos que posee el botón Configuración los cuales son ejecutados en el evento TouchUpInside cuando es tocado,


Posteriormente mostraremos el XIB al cual se accede desde el botón Configuraciones, este es la ventana de configuraciones SettingsWindow, aquí se podrá manejar los aspectos de los sonidos relevantes al juego, como son la activación o desactivación del sonido de fondo y las mismas opciones pero para los efectos de sonido, los cuales son los sonidos de las colisiones, etc.

Como podemos observar este XIB contiene una vista (View) con 6 objetos anidados a la vista nos centraremos en los valores que nos muestra el Switch que maneja los efectos de sonido, donde podemos observar que en el evento de ValueChanged, es decir cuando cambia el valor de nuestro Switch este lo enviara a la variable que tiene por nombre effectswitch el cual debe estar declarada con anterioridad en nuestro archivo .h para poder ser visualizada en el XIB o para que nos muestre la opción de seleccionarla, de similar forma sucede con el otro Switch que tenemos creado, y como se menciono la forma de trabajar con los botones será la forma en que trabajara el botón guardar, claramente que en los archivos cabecera (.h) y los archivos cuerpo (.m) estarán las acciones de todos los objetos que en la interfaz estamos relacionando



Bueno nuestro siguiente XIB será el display que nos muestra una vez que hemos perdido las 5 vidas que posee el juego, claramente si no hemos obtenido bonificaciones por llegar a os 10.000 ese será el numero de vidas que obtendremos. Como podemos apreciar este XIB solo posee una View sin objetos, pero cuando corramos el juego veremos que aparecen textos, esto ocurre porque como se muestra en la imagen estamos reverenciando el XIB GameOverViewController a sus clases cabecera y cuerpo, es decir, cuando se crearon estas clases GameOverViewController .h y .m se selecciono en XCode que asociara un XIB por esta razón todo se programa directamente allí y después se le dice al File Owner cual es su clase.



De similar forma al anterior funciona el XIB RunCrashViewController, claramente con opciones diferentes, como por ejemplo en la anterior se manejaban la muestra del puntaje mayor y el sprite de gameover, aquí se hace la parte de mayor trabajo como la contracción de los obstáculos los contadores de vidas , el puntaje la forma en que se mostraran los objetos, los movimientos etc.


lunes, 5 de agosto de 2013

De vuelta al proyecto.

Después de un  tiempo de pausa en el proyecto, estamos de vuelta, esta vez con el proyecto mas avanzado de lo que se muestra publicado. Hemos definido los Sprites del juego y hemos superado una de las etapas mas difíciles que fue trabajar con las colisiones de los objetos.

Prontamente estarán publicados.
saludos.