martes, 7 de noviembre de 2006

Padre Carlos II

Hoy envié a Padre Carlos a ser testeado en su nueva versión, la cual incluye el nivel dos. Y ya que estamos, sigo con esta serie de cómo se fue construyendo el juego.

Cuando decidí iniciar el proyecto, tenía en mente aprovechar parte del código y motor que había hecho en los intentos de meses anteriores. Es decir, un arcade de scroll lateral y plataformas. Mi intención era hacer algo no muy difícil, buscando el mercado casual. Para ese mercado, también necesitaba gráficos de buen tamaño y coloridos. En parte, un desafío, porque ya se sabe lo que significan esas características para los móviles.

Sprites de 50 x 40 píxeles

En esas pruebas estaba cuando me encontré con un engine isométrico open source para MIDP 1.0: IsoJ2ME.

http://sourceforge.net/projects/isoj2me

Si bien no parecía estar actualizado, le dediqué algo de tiempo para ver sus posibilidades. El engine fue desarrollado por un italiano. No estaba documentado y bastante hardcodeado. Pero venía acompañado por un simple juego como muestra de su funcionamiento.
Me pareció una buena solución. Inclusive me comuniqué con su creador y me dijo que lo estaba mejorando.
Así que, dejando de lado todo lo que ya tenía hecho, me decidí a reformular el proyecto para darle una vista isométrica.

Como la idea era que Padre Carlos anduviera por la ciudad persiguiendo enemigos, tenía que decidir el compromiso del tamaño de los edificios... Si trataba de mantener las proporciones, me quedaba un personaje sumamente pequeño y no era lo que buscaba. Por lo tanto, preferí mantener los sprites de buen tamaño (56 x 40 píxeles) y que la ciudad en sí fuera más pequeña, pero muy colorida. De ahí que el edificio más alto no supera los 80 píxeles.
Creo que esta solución fue apropiada, porque no afectó al gameplay el hecho que Padre Carlos o los demonios fueran más altos que un estadio de fútbol... y al mismo tiempo dio lugar a trabajar mejor cada sprite. Vale aclarar que la resolución elegida para desarrollo fue de 176 x 208 píxeles.
Un buen efecto lateral de esto es que sólo necesitaré dos juegos de gráficos. Uno para screens de 128 x XX y otro para las superiores. Es decir, el juego se ve bien en móviles QVGA, con resoluciones de 320 x 240 o mayores.
Por el lado de la programación, traté de mantener los mínimos requerimientos, para llegar a la mayor cantidad de móviles posibles. Así, mantuve la CLDC 1.0 y de MIDP 2.0 sólo utilicé la clase Sprite, para facilitar rotaciones y demás. Si quiero portarlo a móviles MIDP 1.0, será para los que dispongan un API con mirror, etc., como Nokia por ejemplo.
Otra restricción que me impuse, fue que el jar final no superara los 120 Kb para el juego de gráficos más grande. A medida que fui creando los recursos, me di cuenta que muchas de las ideas serían imposibles para sostener ese límite. Por lo tanto, desaparecieron algunos enemigos, ítems, edificios y demás. De todos modos, quedó mucho para divertirse :))
Pasados unos 45 días ya tenía una funcionalidad aceptable. Padre Carlos se movía por la ciudad al igual que los enemigos (prostituta, gay y serpiente) y todos disparaban sus armas. Probé el juego en varios emuladores y en dos móviles: Samsung x486 y Motorola ROKR. En ese Samsung nada anda bien, así que no me preocupé por la baja velocidad... pero en el Motorola corría a unos 10 fps, lo cual me pareció suficiente.
Todo el material, junto a un resumido documento de diseño, fue enviado a algunos posibles publishers... más para conocer sobre lo que pensaban de la idea, que de cómo estaba el juego en sí.
Sus respuestas fueron tranquilizadoras. Podría llegar a arder en la hoguera en algún momento... pero si dejaba el juego presentable, ellos lo distribuirían :))

Así se cumplió la primer etapa del proyecto.
Espero que sea de utilidad a alguien lo expresado más arriba :)


Ya vendrá un nuevo post sobre cómo siguió la vida del Padre Carlos...
Nos leemos!!

martes, 29 de agosto de 2006

Padre Carlos

Meses atrás, vivimos una parafernalia de prensa generada para vender "El Código Da Vinci", en todas sus versiones multimedia. Como no soy de correr detrás de esas campañas, me resistí a leerlo y por supuesto, tampoco fui a ver la película.
En esos meses, pasó bastante desapercibida (o al menos eso intentaron) una serie animada de la BBC inglesa: PopeTown http://en.wikipedia.org/wiki/Popetown
Prohibida su emisión por TV en Inglaterra, sí la pasaron en Alemania y se publicó en DVD, etc.
En las notas que hablaron del hecho de censura previa, comentaron de qué se trató la serie. Una parodia de la vida en el Vaticano.
La curiosidad me llevó a dar una vuelta por el e-mule... y allí encontré los 10 capítulos completos en inglés.
La serie es realmente divertida, sin considerar que la persona creyente pueda sentirse ofendida. Yo diría que más que divertida... tiene mucho de cotidiano.
Bueno, a qué viene esta introducción...

Después del concurso de móviles y Think Robot! pensé con qué podía seguir. Por un lado, Species Circus, que lo tengo abandonado y me falta estímulo para continuarlo. Por otro lado, está lo de juegos para móviles, que estoy seguro se le puede sacar buen jugo aún.
Comencé una idea de scroll lateral y plataformas, en cavernas, con un personaje de movimientos similares al viejo Prince of Persia... pero la historia no terminaba de atraparme...
En eso estuve... hasta PopeTown.
Cuando vi la serie, tuve una revelación :p y una interesante aventura para móviles fue tomando forma en mi mente.
¿Qué pasa si tengo un personaje que es un sacerdote? Pero no los de fantasía, sino uno de los de verdad :)
¿Y si los NPC´s son gente común, sólo que a los ojos de este sacerdote son enemigos? Digamos... un enemigo es un ladrón, un terrorista... pero también lo son un gay, una prostituta, un predicador de otras sectas...
Ufff... Comencé a sentir que me metía en terrenos peligrosos...
¿Y cómo pelea este sacerdote? ¡Sin dudas que con sus armas más poderosas! ¡La Cruz y la Biblia!
Bueno, ya estoy con el lodo hasta el cuello...
¿Y ahora qué sigue? ¿Un sacerdote matando gente? ¡Voy a arder en la hoguera!
No, no los mata, simplemente los enemigos renacen como gente normal... siempre a los ojos de este sacerdote ;)
¿Y de qué le sirve todo esto al sacerdote? ¿Sólo limpiar su cuidad de elementos indeseables?... mmmm... esteeeeee... ¡NO! ¡Le sirve para subir en jerarquía y así llegar a ser Papa!
¿Y simplemente con esos actos llega a Papa? ¿Tan fácil?
No es tan fácil... ¿para qué tenemos siempre a mano los aterradores demonios y hasta el mismo Diablo?

Bien, estos y varios pensamientos más dieron vueltas en mi cabeza, hasta que se fue armando la historia...
Me gustó cómo iba quedando, pero siempre con una gran duda... ¡¿a quién se lo vendo?!
Así que con esa duda, di inicio al proyecto. Para intentar vender, una idea no sirve. Hay que mostrar algo...
Por suerte, hay un par de publishers que se interesaron en el tema y lo creen viable.

Padre Carlos, así se llama mi juego, ya está bien avanzado y con muy buenas perspectivas de ser publicado en un par de meses :)

Vaya a saber por qué el señor Blogger hoy no deja subir imágenes... así que paso unos links con screenshots de muestra.

http://www.cervetto-ref.com.ar/backSplash.jpg
http://www.cervetto-ref.com.ar/level1_sample2.jpg
http://www.cervetto-ref.com.ar/level2_sample1.jpg

En estos días, seguirán algunos posts más técnicos, contando cómo comenzó y continúa el proyecto.

Nos leemos!

miércoles, 21 de junio de 2006

Cuando la vida hace un click

En este mes se cumplen 21 años. A fines de junio de 1985 fue que me decidí.
Es que las manos me temblaban continuamente. Hacía ya días que casi no dormía. Sólo probaba algunos bocados de a ratos, cuando el hambre amenazaba con desvanecerme.
Me daba cuenta de lo que me pasaba. Había probado esa droga y ya era un adicto. La necesitaba. Fue creada para mi.
Entonces, cuando ya nada importaba, saqué los 500 dólares que tenía ahorrados y fui al comercio que vendía televisores y lavarropas en mi ciudad.
Me enfrenté, al empleado que leía el manual de una tostadora y dije, balbuceante: "Quiero esa TK 85"
El hombre me miró, giró hacia los televisores, pero no registraba ningún modelo de ese tipo. Luego, tratando de esconder su ignorancia, hizo un ademán hacia los nuevos radriograbadores... tampoco.
Finalmente, mirándome entre desconcertado y curioso, me preguntó: "¿qué cosa?"
Le señalé allá arriba, en la estantería, la caja verde entre medio de los veladores...
Por supuesto que la compré sin garantía, sin probarla, sin que nadie entendiera el manual en portugués... Pero era mía!! Tenía mi droga y ya mi pulso volvía a la normalidad.
Luego, sólo fue necesario conectarla a la tele, encenderla y mirar su pantalla en blanco y negro mostrando un "OK"...
De ahí en más, todo muy fácil... aprender Basic. Porque no se conseguía ni un sólo cassette para esas máquinas...
Pero qué alegría!!! La felicidad me embriagaba!!! Tenía la poderosa TK85 de 16 Kb de RAM!!! Mi amigo Daniel se moría de envidia, con su Timex Sinclar 1000 de 2 K!!! jajaja y bueno, que sufriera, si fue él quien me introdujo en esa adicción de las computadoras...

Es cierto el título de este post... la vida hizo un click para mi ese año. Porque todo, de allí en más, giró en torno de las compus. Primero, como simple hobby, luego como trabajo.
Hoy no se concibe la existencia sin estar rodeados de pc´s... pero hace más de 20 años, en el interior del interior de Argentina... el "boludo" de las computadoras encontraba sentido a su vida.

lunes, 15 de mayo de 2006

Lanzamiento oficial de Dylo's Adventure

Vuelvo al blog después de meses... Es que andaba con otras cosas, y no eran mujeres, lamentablemente.
Con muy poco tiempo, sigo desarrollando. Algo de Species Circus, algo de móviles... Ya habrá novedades más importantes para comentar.

Lo importante hoy es que South Winds Games (el amigo Pogacha) anuncia la puesta en venta oficial de su juego Dylo's Adventure.

El link: http://www.southwindsgames.com/site/Home.php

Quien conoce lo difícil que es desarrollar juegos en Argentina, comprende que terminar un proyecto y publicarlo es un logro inmenso. Y es seguro que éste es sólo el primer paso de una larga serie de buenos títulos por parte de la empresa.

Dylo's Adventure no es un AAA, ni tampoco se apuntó a eso. Pero el amante de los arcades y plataformas tendrá diversión para rato.
Gráficos y música bien cuidados, variedad de enemigos, interesantes efectos como el rebote de las piedras, todo hace a un juego agradable y entretenido. Ideal para un mercado casual.

A ver si se bajan la demo, que pesa menos de 6 MB y corre sin problemas en equipos no tan potentes. Y luego, van y lo compran!!

Bueno, digamos que para crítico no sirvo ni un poco. Pero South Winds Games hizo lo que pocos hacemos (aunque avanzamos cada día) que es terminar un proyecto... y empezar a vivir de él.

Un abrazo Pogacha!!!

lunes, 13 de febrero de 2006

THiNK, Robot! y 3

Analizando críticamente el código fuente del juego, acepto que lo volvería a escribir desde cero.
A medida que fui conociendo el lenguaje y la plataforma, me di cuenta de lo que no usaba... o usaba mal.
Finalmente, como el tiempo apremiaba, tuve que recurrir a los siempre odiosos parches para salir del paso.

El hábito de programar orientado a objetos, por ejemplo, en móviles se debe reconsiderar. Al menos en algunos aspectos. Con un heap tan bajo en ciertas plataformas, es una buena práctica dejar de lado métodos como get y set, sustituyéndolos con accesos a variables protegidas.

Como todo está hecho en MIDP 1.0, tuve que ver cómo cargaba las imágenes en memoria. (En MIDP 2.0 hay clases que administran eso sin problemas)
Me hice una clase para cargar una gran imagen y extraer tiles y sprites desde allí. Pero permanentemente se me escapaba la memoria heap. Nunca pude comprobar si era algún error mío o los emuladores me indicaban mal el heap ocupado. Así que decidí crear y cargar archivos individuales para cada imagen. Esto llevó a tener un archivo .jar de mayor tamaño y realmente no es lo que debe hacerse... pero al no poder probar sobre celulares, no quise arriesgarme a que luego nada funcionara por falta de memoria.

Traté de seguir las guidelines de Nokia para el armado de los menúes y uso de teclas.
Me hubiera gustado crear los menúes usando la UI de bajo nivel, con un juego de caracteres gráfico y efectos especiales... pero el tiempo no daba para todo eso.
Como dije en su momento... cada celular trata de forma distinta a los fonts del sistema, por lo que en cada emulador he visto un meú diferente... Ahora estoy escribiendo un framework para desarrollar menúes de texto o gráficos en forma más genérica.

La última semana, además de pulir todo, fue dedicada al sonido. Encontré algunos loops .wav interesantes en www.flashkit.com y otros midi que convertí a tonos a través de la Suite de Nokia.
Demás está decir que también puede ser mejorado...

Terminando con todo esto de THiNK, Robot!... considero que fue una gran experiencia.
Desarrollar para móviles, no sólo juegos, es un camino que recién se comienza a andar...
Cuando analizo un poco este mercado, me pongo en la situación de los años en que programaba para las home computers... limitada plataforma... inmenso futuro y la posibilidad de aún poder competir contra las grandes desarrolladoras.

Nos leemos.

lunes, 30 de enero de 2006

THiNK, Robot! segunda parte

Pantalla splash del juego (agradecimiento especial a mi amigo Eduardo Comoglio, uno de los mejores dibujantes que he conocido)

Este texto es porque el blogger me borra lo que está pegado a la imagen... vaya uno a saber por qué

Presentación del documento de diseño:

"THiNK, Robot! Es un juego de ingenio por niveles.
El gameplay desafía al jugador a resolver los diferentes problemas presentados, desplazando al robot, empujando bloques y evitando el ataque de los aliens.
El juego se orienta al usuario
casual adulto, que gusta de la resolución de problemas como pasatiempo.
No hay una lucha contra el tiempo. Tampoco se mantienen puntajes máximos ni récords. La idea es sólo entretener sin estrés.
A través de los niveles que suben en dificultad, se garantiza una divertida experiencia para el jugador."


Como pueden leer en un post anterior, el juego se basó en Eggerland, un juego de ingenio para las viejas home computers.

Decidida la idea a utilizar en el concurso, decididos los demás elementos como ser el IDE, lenguaje, etc. inicié el proyecto a fines de noviembre del 2005.

Digamos que todo fue programar y aprender al mismo tiempo... cosas que un viejo programador se puede dar el lujo de hacer :))

Primer inconveniente para el neófito: el sitio de Nokia. Es muy bueno en cantidad y calidad de información y herramientas. Pero navegarlo y encontrar lo que realmente hace falta.... uffff difícil. Todo bien, finalmente pude instalar los emuladores necesarios. Los cuales, como ya dije, andan como y cuando quieren...
Ejemplos: en algunos, que en teoría son para los mismos móviles, funciona el sonido y en otros no. Algunos tratan bien el almacenamiento permanente de los datos y otros dan error. El mismo código muestra un texto en pantalla en un emulador... y en otro lo presenta de distinto tamaño.
En fin, es todo prueba y error. Y por lo que se puede investigar en los foros... con los celulares también ocurre.

Siguiendo. Como la lógica del juego exige ver toda la pantalla simultáneamente, tuve que decidir un compromiso entre tamaño de los sprites y cantidad de "celdas" por nivel, a fin de lograr una buena variedad de problemas. Además, el concurso exige presentar el juego para móviles S60 y S40 de Nokia, con resoluciones de 176 x 208 y 128 x 128 píxeles.
Si diseñaba sprites grandes y bonitos, me quedaba sin espacio para buenas combinaciones de elementos a fin de armar los niveles.
Finalmente, decidí:
Sprites y tiles de 24 x 24 píxeles para los móviles Serie 60
Sprites y tiles de 18 x 18 píxeles para los móviles Serie 40
Esto me permitió armar grillas de 7 x 7 tiles para el layout de los niveles, y al mismo tiempo me dejó un tamaño aceptable para los gráficos.

Si bien inicié el desarrollo apuntado a la S60, traté de crear todo de forma que me permitiera hacer el port a S40 lo más rápido y fácil posible. Resultado: el port me llevó nada más que dos días. Siendo lo más lento de eso, el diseño de un nuevo set de gráficos.

La creación de los niveles tuvo su fase cómica. Mis hijos de 12 y 7 años son fanáticos de los juegos de estrategia (algo de culpa tengo) así que cuando les mostré una emulación del Eggerland para PC, se pasaron horas con eso. De allí, cuando Stéfano (7) me vió diseñando niveles, se puso con lápiz y papel a armar algunos... Y THiNK, Robot! lleva cuatro niveles que recogieron las ideas del pendex... y no son los más fáciles, lo aseguro.

Bien, esto va para largo, así que lo sigo en otro post. Dejo la pantalla de un nivel como muestra...

THiNK, Robot! mi experiencia con celulares...

Después de casi dos meses sin escribir, voy a tirar algunas líneas para actualizar un poco el blog.

Hoy, finalmente terminé el juego para móviles que estaba desarrollando. Justo sobre la fecha de cierre del concurso... como debe ser :))

Como puse en el post anterior, fue mi primer experiencia con esta tecnología y creo que el tema da para contar algunas cosas vividas y sufridas... que lo haré en dos partes, para que no se haga largo.

Este post también podría titularse: Cómo hacer juegos para móviles... sin tener un móvil.

Es que no tengo :)) y no me interesa adquirir alguno por ahora... digamos que así me siento menos perseguido... je

Bien, entonces... sin móvil... cómo lo hacemos? Pues fácil... están los emuladores!!! Esos te muestran todo tal cual lo verás luego en el aparato.

jajajajajajajajajajajajja

Bueno, desde el principio.
Pequeña investigación de mercado:

- Más de cien modelos de móviles distintos por lo menos.
- Lenguaje más usado, J2ME... pero habría que prestarle atención a Flash para móviles, con su versión FlashLite... concociendo cómo penetró el mercado de browsers, no me extrañaría que sea casi un standar para móviles.
- IDEs para programar, NetBeans de Sun, Eclipse, el Java Wireless Toolkit de Sun, la Suite de Nokia...
- No leí nada avanzado aún para conectividad (por falta de tiempo)
- Tamaños de pantalla más utilizados: 128 x 128 y 176 x 208 píxeles
- La mayoría con MIDP 1.0, aunque el MIDP 2.0 lo va reemplazando de a poco.

- Y por lo general: todos funcionan distinto :( Que la memoria, que las APIs, que el sonido, que las imágenes... una verdadera ensaladera de opciones.

Como leí en algún foro sobre el tema. Una frase de John Carmack:
Write-once-run-anywhere. Ha. Hahahahaha. We are only testing on four platforms right now, and not a single pair has the exact same quirks. All the commercial games are tweaked and compiled individually for each (often 100+) platform. Portability is not a justification for the awful performance.

En definitiva, para hacer THiNK, Robot! me decidí por:
- IDE: NetBeans 4.1
- Lenguaje: J2ME (lo exigían las reglas del concurso)
- MIDP 1.0 (lo exigían las reglas del concurso)
- CLDC 1.1
- API externa: Nokia API, para acceder a clases FullCanvas y Sound

- Emuladores de Nokia y el Mpowerplayer (lo exigían las reglas del concurso)

En otro post cuento un poco el desarrollo del juego.

Nos leemos.