martes, 31 de julio de 2012

Detección de colisiones entre Sprites

Por fin he llegado a una de las partes que más me preocupaba: La Detección de Colisiones

Y me ha sorprendido gratamente el poco esfuerzo que le supone al ordenador detectar la colisión entre 313 sprites.

En el ejemplo actual me he puesto a dibujar monedas de euro por todo el escenario, hasta un total de 313. Lo ideal sería que antes de dibujar cada frame se comprobasen las posibles colisiones de una zona reducida del escenario para de este modo ahorrar recursos. El caso es que aun no he llegado a ese punto y en cada frame comprueba las posibles colisiones de todos los sprites del escenario (de los 313), cosa que me parece un despilfarro de recursos, y cuál fue mi sorpresa al ver como mi iMac de más de 3 años lo hacía prácticamente sin despeinarse.

A continuación os dejo los enlaces al código fuente, al ejecutable y al vídeo subido a youtube.



Código fuente: 

Ejecutable:

sábado, 14 de julio de 2012

XCode y Open GL: Parte 1 Configurando el proyecto

Para que nos sea más sencillo empezar con nuestro proyecto Open GL he pensado que lo mejor será explicar todos los pasos a seguir uno a uno.

Y lo primero es configurar nuestro nuevo proyecto siguiendo las instrucciones de este vídeo



viernes, 13 de julio de 2012

Personaje compuesto por varios sprites y animados

Con las últimas mejoras en el código fuente ya podemos especificar más de un sprite para el personaje, de forma que podamos añadirles armas, escudos, casco, etc.

También es posible especificar diferentes estados y por lo tanto animar al personaje.

En este enlace está el código fuente (Lion) 

Y en este otro está el ejecutable (Lion) 



lunes, 9 de julio de 2012

Plataformas o Tower Defense?

En un principio tenía pensado hacer un juego tower defense al estilo de Paladog, por su simplicidad técnica en comparación con un juego de plataformas clásico como el propio Mario Bros o Lep's World (por poner un ejemplo de la App Store) en donde el control de colisiones me parece más complicado.

Ya he conseguido desarrollar la parte sencilla del juego: un poco de gravedad, aceleración e interacción con el Tilemap (el escenario). Pero juzgar vostr@s mism@s, os dejo un vídeo, el código fuente y la aplicación compilada para Lion OSX



lunes, 5 de diciembre de 2011

Nuevo Año Nuevo Proyecto

Pequeño avance de juego para mac del cual trataré de tener una versión temprana durante el año 2012.


He estado mucho tiempo meditando si hacer un juego de naves espaciales al estilo desplazamiento horizontal o un plataformas tipo Mario Bros y finalmente he decidido que intentaré hacer un Tower Defense que ahora están tan de moda.

Espero tener algo listo en los próximos meses.

viernes, 26 de agosto de 2011

Multithread y fuente de caracteres

Tras unos meses de sequía por fin he vuelto a sacar tiempo y ganas para seguir con esta pequeña pasión que tengo.

Entre las novedades de esta versión está la separación del flujo de programa en dos threads principales.

El primer thread se encarga de todo lo relacionado con los cálculos de posición, comprobación de colisiones y lectura del teclado. Mientras que el segundo hilo tiene la principal función de interpretar los resultados del hilo anterior y mostrarlos en pantalla.

Con esta simple modificación se puede apreciar un aumento en el rendimiento del programa.

La última novedad es la inclusión de una fuente de caracteres para en un futuro poder añadir texto explicativos u opciones de menú.

Sin más os dejo los enlaces al binario ejecutable y al archivo comprimido con el código fuente.

Espero que lo disfrutéis

Ejecutable


Se agradecerá cualquier comentario o sugerencia, bien sea en este mismo blog o en twitter a @DanielSanRiv o @JuegosBolsillo

viernes, 1 de abril de 2011

De vuelta!

Vuelvo con ganas renovadas de seguir aprendiendo todo lo que sea posible sobre el apasionante mundo de Opengl + Mac + ObjectiveC.

Y para celebrarlo cuelgo la última versión.

Código fuente próximamente...

La diferencia con versiones anteriores radica en que he corregido un bug que se manifestaba con ciertas versiones de Mac OSX 10.6 y que evitaba un correcto redibujado de la pantalla.

Para ello he tenido que añadir estas líneas en la función prepareOpenGL


GLint swapInt = 1;
[[self openGLContext] setValues:&swapInt forParameter:NSOpenGLCPSwapInterval];



También podréis notar un pequeño guiño que he querido hacer al Grupo de Usuarios Mac de Asturias al cual tengo la suerte de pertenecer.

Aprovecho para hacer una pequeña recomendación: Si tenéis un Grupo de Usuarios Mac (GUM) en vuestra ciudad no dudéis en "alistaros" pues es una oportunidad de aprender y conocer gente con la que seguro compartís inquietudes.

Saludos