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.