domingo, 19 de junio de 2011

Numis & Letrix: Juegos con AndEngine

Hola a todos,

Buno, pues tal y como os comenté, os voy a contar un poquillo el proceso que he seguido para crear Numis y Letrix.

No me voy a centrar en los aspectos más técnicos porque para eso hay webs y sitios mucho más indicados, pero os dejaré las referencias que a mí me han servido más.

Vamos a empezar por las malas noticias. Y es mi opinión personal o lo que me ha pasado a mí, pero si hacéis juegos sólo para ganar pasta, sería más lucrativo irse a buscar monedas a las cabinas o buscar entre los cojines de los sofás del salón. Salvo que tengais un juego innovador y rompedor o un canal de márketing excepcional.
Menos mal que de vez en cuando alguien pulsa en algún anuncio...

O tenéis que aguantar que alguien os escriba y os diga que vuestro juego es una mierda porque no reconoce la palabra “VARRER”... si, si, veridico. En fin, qué vas a hacer, le sacas de su error con diplomacia y ya está.

Las buenas noticias?
Oye, a mí me divierte hacerlos y aprendes.
Y la respuesta de la gente (salvo rarísimas excepciones como la que os he comentado) suele ser MAGNÍFICA. Y eso se agradece.
Yo por ejemplo nunca me esperé recibir tantos ánimos y halagos por parte de la gente como recibo por LotoApuestas, que a lo tonto está la primera (de las españolas) si buscas “loterias” en el Market y ya pasa holgadamente las 5000 descargas... Es algo que llena.
Es como la cocina, si lo haces con cariño se nota.



(Por cierto... ¿Aún no te has bajado LotoApuestas?... Pero hombre...!)

Bueno vale ya de chapa y vamos al lío.

Antes de nada, yo aconsejaría tener muy muy claro qué es lo que se va a hacer. Dibujarlo, escribirlo, hacer un esquema de navegación, lo que se os ocurra. Para evitar eso de si “..¿y si además meto esto y ahora mejor esto aquí y esto acá...? ...” . A ver, no es que si se os ocurre un cambio estupendo no lo metais, sino que en la medida de lo posible los cambios estupendos estén ya pensados de antemano.

Yo me haría un esquema de “navegación” y unos dibujetes muy claros de lo que va a pasar durante el juego.


Mirad, el AndEngine (el motor que he usado) se puede resumir de una manera bastante simple: Son unas cuantas capas superpuestas, dentro de cada cual tú pintas y mueves lo que quieras; todo esto acompañado por un hilo que está en constante ejecución moviéndolo todo.

Para que veais qué cosas se pueden hacer y se os ocurran ‘cienes y cienes’ de ideas, lo mejor es echarle un ojo a la demo de AndEngine.

https://market.android.com/details?id=org.anddev.andengine.examples

http://code.google.com/p/andengineexamples/

Yo cuando vi caer los cuadrados de uno de los ejemplos, al momento ví el Numis. Supongo que os pasará algo parecido con cualquiera de los ejemplos.

Solo con lo que hay en esa demo teneis el 80% de lo que podais necesitar.

Se pueden plantear los juegos de dos maneras: usando el motor de física o sin él.

Si usais el motor de física, creais un “mundo físico” y le dais cierta gravedad, (o ninguna) de manera que los objetos caigan con mayor o menor “ímpetu”.
Luego basta con crear objetos dentro de ese mundo físico y dotarles de ciertos valores, elasticidad, fricción... de forma que tú decides cómo interactuarán con los otros elementos de su mundo cuando colisionen.

Todo esto se asocia a una (o varias ) de las capas superpuestas que os comentaba antes, de modo que en la primera capa tendrás la imagen de fondo, en la siguente puedes tener los elementos moviéndose y en la otra, los textos, puntuaciones, botones....

Ya os digo que no voy a entrar en detalles técnicos porque hay gente que lo ha hecho ya antes y mejor, pero hacedme caso, esos dos enlaces son fundamentales. Sólo hace falta ganas de destriparlos y sacarles el jugo.

Imprescindible también:

http://www.andengine.org/forums/

Aquí hay ORO PURO, pero hay que bucear y desoxidar el inglés.

En español lo mejor (o lo único) que he encontrado es :

http://knol.google.com/k/juan-de-dios-maldonado-s%C3%A1nchez/gu%C3%ADa-tutorial-para-programar-juegos-2d/yf7xkfmg7vie/3#

Excelente trabajo el de este muchacho.

Y bibliografía oficial, que yo sepa, no hay.

Ahora sí que os voy a aportar mi granito de experiencia:

Esto come memoria como un cosaco. Imprescindible reutilizar todos los objetos que podais.

Un pool de objetos es, para entendernos, un repositorio de objetos ya creados que almaceno para no tener que andar todo el rato creando / destruyendo...
Cuando necesito uno de estos objetos (por ejemplo, disparo y sale una bala)  miro en el pool, si existe alguno, lo recojo, modifico las propiedades que sean y lo reutilizo. Si el pool está vacío, obviamente tengo que hacer un new Bala().

Son  clases de lo más sencillas y ejemplos en internet habrá a patadas.

Al terminar de usarlo (p.ej. la bala da en el blanco y desaparece) lo que hago es volver a meterla al pool.

Sed vivillos para optimizar el pool. Os cuento mi caso.

Mi caso es un poco especial, yo por ejemplo en Letrix tengo 27 elementos distintos que sólo se diferencian en el atributo Valor (qué letra es) y en la imagen. Entonces me hice un pool normal y un pre-pool que es un array de 27 posiciones. Las cajas A van a la pos. 0 del array, las B al 1... Así si necesito una letra, miro en el pre-pool, y si hay algo, me evito tener que tirar del pool normal y cambiar la imagen.
Lo mismo al reciclar un elemento, primero lo intento meter al pre-pool, y si ya está ocupado, al pool normal. Mucho mejor resultado que el pool a secas.

Cada cual en su juego tendrá sus trucos para ahorrar memoria, pero ya os digo que es básico. En los primeros días Numis tenía más problemas de memoria que un pez, y eso lo penalizó bastante; pero al meterle los pools y cuidando de no crear objetos a lo tonto quedó bastante bien.

Yo reutilizo incluso las explosiones de las letras.

Tened cuidado también a la hora de crear las texturas, encajadlo todo lo mejor posible para optimizar el espacio ocupado.

Cada vez que acabéis un nivel eliminad todo aquello que no sea reutilizable, limpiad vectores, arrays... Ya vendrá el Garbage Collector a comérselos.

También los sonidos .ogg son más eficientes que otros formatos, al menos en cuanto a tamaño.

Y no sé qué mas contaros... ¿Tiempo necesario? Hombre pues es como todo, el primero cuesta un siglo (y más teniendo en cuenta que te pones a ratos, cuando te dejan) y los demás ya van saliendo solos. Bueno, que yo he hecho solo dos, pero teniendo Numis, parir a Letrix fue bastante sencillo.

Bueno, ya tenéis el juego. Lo habéis probado lo mejor posible pero... ¿cómo estar seguro de que todo va a ir bien allá fuera?

Mano de Santo: ACRA :  http://code.google.com/p/acra/

Supongo que habrá mil formas más, a mi esta me gusta.

Y después de esto... ¿MARKETING? Si, todo el que podais. Yo de esto no tengo ni idea, pero aparte de dar la chapa a los colegas para que se lo bajen, escribir en foros, unos twitters y unos facebooks, poco se puede hacer. Si teneis más apps hechas con anuncios, podéis meter algún banner.
Pero me estoy dando cuenta de que el márketing es fundamental, tan importante o más que tener una app competente. Así que a cualquiera que pueda aportar alguna idea a este respecto le estaremos muy agradecido ;)

Bueno, sé que no es gran cosa, pero con lo que os he contado (o mejor dicho con los enlaces que os he dado) cualquiera puede meterse en harina.

Gracias por leerme, de verdad, y cualquer cosilla ya sabéis dónde estoy.

Y para quien no los haya probado... Échate un Numis o un Letrix, hombre!!

Saludos !

domingo, 5 de junio de 2011

Letrix: En castellano se juega mejor ;) !!

Hola!!

Ya tenemos nueva app. Espero que os guste:

Letrix en Español

Letrix en Español es un juego orientado a hispanohablantes aficionados a los pasatiempos "de letras".



Es una divertida combinación de Tetris y Scrabble para todas las edades.

Funcionalmente recuerda a Numis, realmente está generado a partir de éste último, tras subsanar ciertos detalles de rendimiento.

Con este juego pretendo colaborar a llenar el vacío de juegos de este tipo en español que existe en el market.

Obviamente también puede ser usada por cualquier persona no hispanohablantes que quiera afianzar sus conocimientos de nuestro idioma. También he comprobado que a los niños les encanta...

El objetivo del juego es ir construyendo palabras correctas en castellano con las letras que van apareciendo, pero hay que darse prisa y pensar rápido, antes de que la pantalla se llene de letras.

Cuanto más largas sean las letras, más puntuación. También depende de las letras usadas, ya que se sigue la puntuación del Scrabble.

Las letras aparecen siempre en función a su probabilidad real en español; por ejemplo, es más probable una A que una T.

Existen varios tipos y dificultades de juego, algunos de ellos sólo disponibles en la versión Pro.

En el modo Tour, todas las letras se limpian cada vez que acabamos un nivel y recibimos unas pocas nuevas, pero en el modo Asesino, las letras no desaparecen entre niveles.

Para los efectos de caída de las piezas se ha utilizado el motor de física AndEngine, lo que confiere un alto grado de realismo a los efectos de las piezas al caer y chocar entre sí.

Además de los puntos máximos conseguidos, el juego te recuerda cuál es la palabra más larga que has llegado a construir.

Integrado con ScoreLoop para que puedas subir tus puntuaciones y retar  al resto del mundo.


Además de la app en castellano, voy a ir desarrollando, con la misma base, apps para distintos idiomas. En concreto de momento ya tenemos Letrix English, con idénticas características pero en inglés. Las versiones en otros idiomas estarán disponibles muy muy pronto.


Os dejo unas pantallas. Son de la versión inglesa.






Versiones PRO de Letrix:
- Sin anuncios
- No es necesario estar conectado a Internet
- Todos los modos de juego y niveles disponibles


Aquí podréis consultar las distintas aplicaciones "Letrix" que vaya creando.


o bien en en este enlace

Y nada más, probadlo porque seguro que os va a gustar.

¡Gracias y un saludo!

Jugad mucho !!