lunes, 30 de diciembre de 2013

jueves, 12 de diciembre de 2013

Equilibrio magnético

Mirad que efecto magnético tan bien elaborado:




Hay un punto a la distancia adecuada en la que la atracción y la repulsión se igualan y gracias a la forma de "triángulo" el sistema es estable. ¿Alguien se anima a aplicar las leyes de Maxwell para calcular esa distancia de equilibrio a partir de los radios relativos de los imanes? Yo es que ahora tenía que hacer una cosa o ir a un sitio... no me va bien.

miércoles, 11 de diciembre de 2013

La homeopatía ya cansa

Esta terapia alternativa siempre genera mucha discusión a su alrededor. Con sus iracundos detractores y sus pánfilos partidarios siempre hay alguna gresca o algún nuevo argumento. Encima los legisladores no parece que tengan muy claro lo que deben hacer, por un lado admiten que no tiene indicacion terapéutica pero por otra parte hay dinerito a la vista, así que el tema va para largo.

Yo no quería ser menos y también voy a dar un bonito argumento para contribuir a la "cansinidad".

Un día se me ocurrió comentarle a un amigo que usar homeopatía en lugar de medicina "normal" es como teletransportarse con la mente en lugar de ir en coche. Me respondió que no es lo mismo porque el teletransporte aún no está inventado... pero al pensarlo bien, ¡Es muy parecido! ¡Es idéntico!

Solo falta inventar el teletransporte. Muy fácil, voy a patentar una pastilla que al ser irradiada con luz solar absorbe la propiedade de velocidad de la luz y por tanto al ingerirla me transmitirá la posibilidad de desplazarme a esa misma velocidad. Hala, número de patente XJ56473TH88.

Vamos a mostrar que es lo mismo con una tabla comparativa:


Teletransporte en pastillas Homeopatía
Me he inventado un principio de funcionamiento más o menos coherente (por no decir que es muy absurdo) Los principios homeopáticos son igual de coherentes
La pastilla no me hace teletransportar directamente, mi cuerpo ha de colaborar andando, iba a ir igualmente sin la pastilla. La pastilla homeopática no me cura, al cuerpo "se le pasa", se iba a autocurar igualmente sin la pastilla.
Quizás la pastilla me anima a intentar ir, si no fuera por ver si funciona me habría quedado en el sofá. El remedio homeopático provoca un placebo en el cuerpo, igual que cuando te decían "Cura sana, cura sana".
Tiene menos contraindicaciones tomar la pastilla de teletransporte que por ejemplo ir en coche. Tiene menos contraindicaciones la pastilla homeopática que un medicamento normal.
Si no ando y no voy en coche o de alguna manera... no voy a llegar al destino solo con la pastilla. Si no se me pasa solo, y no tomo medicamentos efectivos... no me curo solo con la pastilla.
La pastilla en realidad no contiene el principio activo que supuestamente ha de hacer el efecto. Idem.
Etc.etc. ...

martes, 26 de noviembre de 2013

Librería 3D Web three.js

Me he topado con esta librería para crear y gestionar elementos 3D en el navegador. Se programa con javascript y solo necesitas un navegador actualizado para ver el resultado.

Aquí os dejo una prueba que he hecho intentando no complicarme mucho. Al mover el ratón el objeto rota en la misma dirección y al hacer click se eliminan algúnos cubos aleatoriamente. Cuando elimines todos vuelve a llenarse.

Testingtons

Se puede escoger la complejidad del objeto, sería un buen test para ver cuantos cubos puede gestionar vuestro PC. Aquí con un Celerón 1,73GHz y 1GB de RAM empieza a dar saltos si pongo 8 (512 cubos).

El código está ahí mismo en el html (Ver código fuente), solo tenéis que descargar el archivo al escritorio, editar lo que sea y dar doble clic para ver cómo cambia. Con un poco más de seriedad se podría convertir por ejemplo en un cubo de rubik de tamaño N.

En la web oficial muestran que se puede sacar mucho partido y crear juegos o entornos interactivos impresionantes.

domingo, 24 de noviembre de 2013

Las 101 series mejor escritas

Ahi va la lista de las 101 series mejor escritas según el gremio de guionistas americanos (WGA): http://www.wga.org/content/default.aspx?id=4925

Destacaré sólo las que más me gustan de la lista. No comparto el orden que les han asignado a algunas, aunque me parece 'pasable' porque en la lista no se han colado demasiadas porquerías, cosa que cabía esperar... Eso si, sigue siendo indiscutible que la mejor es Los Sopranos.

1 - The sopranos
3 - The twilight zone
7 - Mad men
9 - The wire
10 - The west wing
11 - The Simpsons
13 - Breaking bad
18 - Six feet under
32 - Deadwood
35 - Twin peaks
40 - Game of thrones
48 - Homeland
63 - South park
66 - Dexter / The office (US)
71 - The shield
76 - I, Claudius
79 - Alfred Hitchcock presents / Monty Python's fliying circus
83 - Get smart
88 - Band of brothers
93 - Boardwalk empire

Quien no haya visto alguna de estas series ya tiene algo con lo que pasar las tardes (porque algunas tienen un montón de temporadas)!


sábado, 23 de noviembre de 2013

FUD (II)

En 2007 colgué unos cuantos ejemplos del FUD de M$ contra Linux. Pues parece que se han dado cuenta de que ya no pintan nada en internet ni en el campo de los browsers y ahora van descaradamente a por Google!

http://www.dailytech.com/Cheeky+Possibly+Illegal+Microsoft+Memorabilia+Trolls+Google+Over+Data+Theft/article33791.htm

Scroogled

sábado, 16 de noviembre de 2013

eL cOMETA dEL sIGLO??? ISON



Hola Sukarrats,

la llegada de un cometa siempre es un acontecimiento en el mundo de la astronomía. Y más cuando este cometa es la primera vez que visita el interior del sistema solar. Es el caso del cometa ISON, técnicamente C/2012 S1 ISON [ descubierto el 2012 durante la segunda quincena de septiembre ], que recibe el nombre de la International Science Optical Network, una red internacional de telescopios operados automáticamente y que se dedica a rastrear el cielo en búsqueda de objetos cercanos. Pues bien, ISON para los amigos, nos visita por primera vez tras abandonar la Nube de Oort, una misteriosa región que se extiende mucho más allá de la órbita de Neptuno y que llega hasta 1 año luz, casi un cuarto de la distancia a la estrella más próxima, Proxima Centauri.

La expectación en este aspecto está justificada. Los elementos de la Nube de Oort son pequeños fragmentos de hielo y roca, expulsados del Sistema Solar durante la formación de éste. Así, pueden considerarse los restos de esa formación y que pertenecen a una región sobre la cual el Sol sigue ejerciendo su dominio.

Cualquier pequeña perturbación, el paso de una estrella cercana o el estallido de una de ellas, puede desencadenar un desequilibrio que hace que estos fragmentos caigan bajo la atracción gravitatoria del Sol.

Así pues, ISON, es uno de los restos del origen del Sistema Solar, lo cual da mucho que pensar. Ahora bien, los medios de comunicación, como siempre suelen exagerar un poco las cosas y antes de ayer leí la siguiente noticia en un medio de prestigio como RTVE:


También he puesto los links del País y del ABC para que veáis que el sensacionalismo no es exclusiva de un solo medio.

Leído esto, no podía más que madrugar e intentar verlo. El viernes pasado (15Nov2013) me levanté a las 5:30 para observarlo justo antes del amanecer, dado que su proximidad al Sol lo sitúa muy bajo en el horizonte una hora antes del amanecer. Armado de prismáticos y el mini telescopio, puedo afirmar lo siguiente:

1. No es visible a simple vista.
2. A través de unos prismáticos 10x50 puede verse como un pequeña bola de nieve muy difusa.
3. A través de mi pequeño telescopio, utilizando visión lateral puede llegar a apreciarse la cola... con mucha fe.

Para que os hagáis una idea, os pongo una imagen hecha con una cámara fotográfica con una exposición gran angular de 20 segundos, f/5 y 200 de ISO. ISON está dentro del círculo verde y las líneas son las trazas de las constelaciones realizadas en http://nova.astrometry.net, una web espectacular en la cual subís una foto del cielo y un software reconoce las estrellas, constelaciones y objetos presentes.

En los próximos días desaparecerá tras del Sol y no podrá verse (en dos semanas), con lo cual si queréis verlo antes de que emerja por detrás del Sol debéis daros prisa. Si logra sobrevivir al perihelio (paso más cercano al Sol), habrá que seguirlo pues entonces sí que puede alcanzar más brillo. A partir de ese momento podrá verse justo después del ocaso, con lo que será más factible su observación. Ahí ya intentaremos hacer una foto en la que se aprecie mejor. Hasta entonces podéis seguir su evolución en esta web donde aficionados cuelgan sus espectaculares fotos. También en la página principal de http://spaceweather.com podéis ver mapas estelares para observarlo.


PD1: A esas horas también era visible el cometa Lovejoy en la constelación de Leo, que curiosamente tiene más brillo.

PD2: Edito. Un observador desde EEUU, me comenta lo siguiente:
When I was out yesterday a.m. I was in a good dark site at low elevation and I did not have good dark-adaptation.  But in an 8x50 binocular it was quite easy to see the tail - and I'd note that the exit pupil of the binocular was likely larger than my eyes' pupil at the time.
Con lo cual entiendo que posiblemente en Badalona la contaminación lumínica haya influido en mi observación. Es cierto que el fondo de mi cielo no era oscuro al 100%.

jueves, 14 de noviembre de 2013

Complejo Paradójico

Imagina que paramos a dos personas aleatoriamente por la calle y les proponemos el siguiente juego: Sacad todo el dinero que llevéis encima. El que lleve una cantidad menor se queda todo.



Así, la primera persona podría pensar: "Si pierdo me quedo sin la cantidad que llevo pero si gano es porque la otra persona tiene más, por tanto gano una cantidad mayor. ¡El juego está a mi favor!"
Pero, por supuesto, la otra persona puede hacer la misma deducción y pensar que el juego le es favorable.



Dadas dos personas aleatorias en realidad el juego es justo. Por tanto ¿Donde está el error en la deducción de ambos contrincantes?

jueves, 24 de octubre de 2013

vIAJE aL cORAZóN dE lA eSA - eSTEC

MIRAS, SMOSLeiden CentralEnvisatAndré Kuipers - Astronauta HolandésLuca Parmitano- ISSERS-1
ESTECAriane 4 y 5Soyuz TMASMOS MIRASPLANCKariane 5 - Soyuz
Micrometeorito en el panel solar del HubbleMotor de PlasmaMotor IónicoLife Support SystemBase LunarTest Center Bay 4
Holograma MovieReinhold Ewald - SoyuzReinhold Ewald - Soyuz TMAReinhold Ewald - MIRReinhold Ewald - Pruebas FísicasReinhold Ewald - MIR
2013-10 ESA-ESTEC-Noordwijk, a set on Flickr.
Hola sukarrats, the winter is coming y toca volver a escribir.

Aprovechando la jornada de puertas de la ESA en ESTEC, tres blogueros bater, coco y un servidor, decidimos hacer una incursión en el corazón de nuestra Agencia Espacial, la Europea.

Después de un fin de semana en Amsterdam lleno de sensaciones y situaciones rocambolescas el cual explicaremos en sukarraX, el domingo con las fuerzas que nos quedaban nos dirigimos a Noordwijk, a una hora en transporte de Amsterdam. Desde la Estación Central de Amsterdam, se coge un tren hasta Leiden y allí unos autobuses te llevan hasta ESTEC.

ESTEC es un enorme complejo en el que la ESA tiene el centro de control de misiones y los laboratorios de fabricación de satélites.

La jornada de puertas abiertas de la ESA se realiza cada año al rededor del aniversario del lanzamiento del primer satélite artificial, el Sputnik, el 4 de Octubre.

La jornada se hizo corta para ver tanto como había allí. Toneladas y toneladas de pósters, trípticos, folletos y dosieres de los que sólo pudimos traer unos cuantos. También hay una tienda, donde venden una taza muy bonita de la ESA y donde se pueden adquirir los famosos lápices rusos.

La jornada fue brillante, teniendo como punto culminante la intervención de astronautas. Escuchar a Ewald, que participó en la misión del incedio de la MIR, fue todo un acontecimiento, aunque siendo al rededor de la hora de comer, alguno aprovechó para dar una cabezadita.

Había un montón de estands, con información sobre un montón de cosas relacionadas con el espacio, como alimentos, materiales usados, misiones en marcha como el sistema Galileo y curiosos como uno en el que podía manipularse un complejo brazo robótico que era capaz de transmitirte sensaciones de tacto o presión. También había una parte dedicada a los Erasmus y los estudiantes, muy interesante si eres profesor o alumno.

Una lástima no haber podido ver con más detenimiento la Space Expo, una exposición permanente sobre el espacio, y no haber podido ver más de cerca el recinto donde se construyen los satélites, y también eché en falta que nos dejaran ver la sala de control… bueno, queda para el próximo viaje.

Espero que disfrutéis del reportaje fotográfico.

miércoles, 9 de octubre de 2013

The world brain

¿La pesadilla de H.G. Wells está a la vuelta de la esquina?


Documental muy recomendable con participación de TVE y TV3 

lunes, 7 de octubre de 2013

Javacup 2013

Vayan preparando las vuvuzelas que la JavaCup 2013 ya está aquí!


El objetivo de este primer año como entrenador debería ser pasar de la liguilla, pero como dicen los intelectuales (millonarios) que viven de esto y salen por la tv: 'fútbol es fútbol', 'juegan 11 contra 11' y 'no hay rival pequeño', así que a ver qué tal se nos da.

El plazo de inscripción termina el miércoles. Atentos que esto empieza ya!

jueves, 3 de octubre de 2013

domingo, 11 de agosto de 2013

Más dimensiones de las necesarias

No podemos dejar pasar todo el verano sin un solo aporte, no?
Aquí os dejo a Carl Sagan explicando para todos los públicos la cuarta dimensión y la clásica representación del hipercubo.


lunes, 1 de julio de 2013

Gliding Over All

Gliding Over All

Gliding o'er all, through all,
Through Nature, Time, and Space,
As a ship on the waters advancing,
The voyage of the soul—not life alone,
Death, many deaths I'll sing.

Walt Whitman, Leaves of Grass

sábado, 25 de mayo de 2013

Deberían Trabajar Para Ti: el código

Para los curiosos, he subido a GitHub el código de la web que he montado para que presente los datos de las diferentes consultas y agregaciones. Por ahora sólo muestra los rankings de ausencias y presencias y algunos datos agregados de las diferentes votaciones parlamentarias. Iré añadiendo algunos más poco a poco.

Como comentaba en mi anterior post, los datos han sido cogidos de la web del congreso (por ejemplo, sesión plenaria #108) y ligeramente adecuados para mejorar el posterior acceso a los mismos. El script es tan tonto que no creo que valga la pena ni comentarlo. Sólo hay que tener en cuenta que los xml se encuentran en urls del tipo

http://www.congreso.es/votaciones/OpenData?sesion=XXXX&completa=1&legislatura=10

y que hay sesiones sin datos!

El website corre sobre Silex, un micro-framework PHP basado en Symfony y utiliza una base de datos NoSQL (MongoDB) para la persistencia y explotación de la información.

Estoy preparando el site público en http://dtpt.eu01.aws.af.cm/. Cuando lo tenga funcionando 100%, ya avisaré.

lunes, 20 de mayo de 2013

Deberían trabajar para tí

Ayer estuve viendo el programa del 'follonero' sobre la transparencia y me gustó bastante la idea de la página http://www.theyworkforyou.com/. Miré a ver qué se hace por aquí y encontré http://www.trabajanparati.es/ de la Junta de Andalucía y la página del Congreso... Pero nada que ver con el modelo inglés, sobretodo en lo referente a saber qué hace día a día cada uno de nuestros representantes. Así que decidí hacer una pequeña explotación de los datos que nuestras instituciones nos ofrecen (que dicho sea de paso, ¡son lamentables!) para obtener algunos listados que me parecen bastante relevantes, como por ejemplo el número de ausencias en las votaciones de cada diputado.

Y, a riesgos de que me salga un post muy largo, aquí dejo la lista de la vergüenza. Juzgad vosotros mismos.

HALL OF SHAME:

Errekondo Saltsamendi, Xabier Mikel : 1319
Urbina Fernández, Iker : 1236
Ariztegui Larrañaga, Maite : 1129
Rajoy Brey, Mariano : 1045
Cuadra Lasarte, Sabino : 1035
Iñarritu García, Jon : 915
Silva Rego, María del Carmen : 800
Valenciano Martínez-Orozco, Elena : 756
Larreina Valderrama, Rafael : 736
Enbeita Maguregi, Onintza : 709
Arias Cañete, Miguel : 706
Blanquer Alcaraz, Patricia : 706
Pérez Rubalcaba, Alfredo : 701
Soria López, José Manuel : 680
Surroca i Comas, Montserrat : 669
Zarrías Arévalo, Gaspar Carlos : 661
Bosch i Pascual, Alfred : 661
Cabezón Ruiz, Soledad : 649
Caamaño Domínguez, Francisco Manuel : 647
Quevedo Iturbe, Pedro : 638
Nuet Pujals, Joan Josep : 631
Fernández González, Daniel : 617
Jordà i Roura, Teresa : 607
Iglesias Fontal, María Olga : 593
Rodríguez-Piñero Fernández, Inmaculada : 590
Duran i Lleida, Josep Antoni : 562
Moragas Sánchez, Jorge : 537
Pozuelo Meño, María Isabel : 523
Coscubiela Conesa, Joan : 520
Carcedo Roces, María Luisa : 514
Pastor Julián, Ana María : 506
Chacón Piqueras, Carme : 504
Ruiz Llamas, Román : 501
Rodríguez Ramírez, María José : 484
Narbona Ruiz, Cristina : 466
Tardà i Coma, Joan : 462
Iglesias Santiago, Leire : 452
Fernández Díaz, Jorge : 449
Veray Cama, Concepció : 438
Ortiz Castellví, Laia : 414
Martínez Gorriarán, Carlos : 364
Pàramo i Ponsetí, Carles : 364
Martínez Saiz, Teófila : 359
Esteve Ortega, Esperança : 350
Centella Gómez, José Luis : 342
Lara Moya, Cayo : 340
García Álvarez, María Caridad : 336
Campuzano i Canadés, Carles : 332
Mato Adrover, Ana : 324
Garzón Espinosa, Alberto : 319

La anterior lista muestra los 50 diputados que más votaciones parlamentarias se han 'saltado' desde enero de 2012. Desde entonces se han realizado un total de 1622 votaciones en 67 sesiones a las que han asistido de media 320 de los 350 diputados. A ver qué empresa consentiría a su plantilla un absentismo del 10% sostenido.

edito: ¡creo que acabo de iniciar una nueva serie de posts! iré colgando más de vez en cuando. Las votaciones más concurridas y las menos, los periodos de mayor absentismo, las sesiones con mayor variación de asistencia, etc, también dicen mucho sobre nuestro sistema y nuestra clase polítca. ¡se aceptan peticiones!

jueves, 16 de mayo de 2013

Programando para Android - 4. La chispa

Ya que el protipo empieza a funcionar le he buscado alguna vuelta de tuerca para que no sea un plataformas tradicional, para que tenga una jugabilidad especial. De momento he hecho que el jugador pueda controlar la dirección de la gravedad con unos nuevos botones:


El primero rota 45º y el segundo -45º. Además si arrastras de un botón de rotación hacia el otro  rotas de golpe 180º.


La idea es diseñar los niveles de manera que solo se puedan superar usando adecuadamente los cambios de gravedad. Para limitar este superpoder habrá un número limitado de cambios disponibles que se pueden consultar en la parte inferior (G-Changes). Habrá que tomar decisiones de si vale la pena dar los 180 de golpe o ir por pasos, si hay que rotar en el aire, dar dos cambios seguidos de 180º para hacer una especie de salto largo...

El efecto físico que muestra el personaje cuando se cambia la gravedad es muy convincente y es bastante cómodo de controlar. Claro que al principio cuesta acostumbrarse a apretar izquierda para ir a la derecha cuando está boca abajo, pero ahí está parte de la gracia.

El problema ahora es que ha dejado de tener sentido diseñar las pantallas a base de bloques gordos. En la imagen de arriba se ve el personaje intentando andar en diagonal y el suelo le queda como un diente de sierra y no puede andar bien. Lo próximo tendrá que ser cambiar la creación del escenario y la gestión de las colisiones con el suelo y paredes para introducir unos mapas de este estilo suavizado:

Por tanto con este cambio deja de tener importancia el debate sobre si usar txt o png para guardar los mapas. Pero con suerte empezaremos otro: cómo debería almacenar la información para unos mapas redondeados como estos? Inicialmente voy a apostar por png optimizado. Este mapa concretamente tiene una resolución de 1000 por 700 px y ocupa unos 3kbytes. Otras opción podría ser usar algún formato vectorial, guardar líneas bezier con información de los vértices y curvaturas. Podría ser quizás el formato svg aunque he probado guardarlo y comprimir en zip y ocupa 1,7KB, que tampoco es tanto ahorro para los problemas que traería. Se aceptan sugerencias.

martes, 14 de mayo de 2013

Un cuento.

Había una vez un campesino chino, pobre pero sabio, que trabajaba la tierra duramente con su hijo.
Un día el hijo le dijo:
- ¡Padre, qué desgracia! ¡Se nos ha ido el caballo!
- ¿Porqué le llamas desgracia? – respondió el padre -Veremos lo que trae el tiempo…
A los pocos días el caballo regresó, acompañado de otro caballo.
- ¡Padre, qué suerte! – exclamó esta vez el muchacho -Nuestro caballo ha traído otro caballo.
- ¿Porqué le llamas suerte? – repuso el padre -Veamos qué nos trae el tiempo…
En unos cuantos días más, el muchacho quiso montar el caballo nuevo, y éste, no acostumbrado al jinete, se encabritó y lo arrojó al suelo. El muchacho se rompió una pierna…
- ¡Padre, qué desgracia! – exclamó ahora el muchacho -.¡Me he roto la pierna!
Y el padre, retomando su experiencia y sabiduría, sentenció:
- ¿Porqué le llamas desgracia? Veamos lo que trae el tiempo…
El muchacho no se convencía de la filosofía del padre, sino que gimoteaba en su cama.
Pocos días después pasaron por la aldea los enviados del rey, buscando jóvenes para llevárselos a la guerra.
Vinieron a la casa del anciano, pero como vieron al joven con su pierna entablillada, lo dejaron y siguieron de largo.
El joven comprendió entonces que nunca hay que dar ni la desgracia ni la fortuna como absolutas, sino que siempre hay que darle tiempo al tiempo, para ver si algo es malo o bueno.

viernes, 10 de mayo de 2013

Raspberry Pi

En la universidad hice un curso de RTOS y me pareció algo alucinante. Durante un tiempo fui siguiendo por encima las novedades que iban saliendo (básicamente, reducciones de tamaño). Incluso tenía un par de aplicaciones ideadas para jugar con la primera plaquita que me comprase. Pero por precio y falta de tiempo lo fui dejando hasta que lo olvidé por completo.

Hoy se ha presentado un compañero del curro con su nuevo juguete: una Raspberry Pi. Menudo descubrimiento. Mañana mismo me compro una!


No se si lo primero que haré será tunear algún coche teledirigido (o cualquier cosa que se mueva) para controlarlo con el mando de la wii


O si al final sólo la usaré como smartTV-TiVo casero


Pero las posibilidades son infinitas!


miércoles, 1 de mayo de 2013

Never End Peace And Love

Ayer me pasaron esta noticia y llevo un buen rato intentando completar la historia. Por ahora sólo he encontrado la versión de Simone Moro, y me parece bastante verosímil, por el historial de este tío y por cómo van algunas empresas de guías por las montañas. Eso sí, tal como cuidan el turismo en Nepal, me da que, con o sin razón, los tres guías/asistentes 'investigados' van a pillar.

Aquí la nota de prensa de Moro traducida: http://www.barrabes.com/actualidad/noticias/2-8412/graves-incidentes-everest-simone-moro.html

¿Quien dijo que entre alpinistas todo es camaradería?

martes, 30 de abril de 2013

Programando para Android - 3. El mapa

El colega kpacha me hace una pregunta muy interesante en el capítulo anterior y merece un mínimo análisis.
Me dice que eso de guardar el mapa en un archivo de imagen podría ocupar demasiado espacio comparado con almacenarlo en un archivo de texto plano, que tiene un byte por casilla y encima se puede comprimir.

Puede ser, porque el archivo de mapa de bits probablemente deberá tener al menos 3 bytes por cada píxel, uno para cada componente de color (RGB) otra para el canal alfa y vete a saber qué más y no podríamos aprovechar la compresión jpg porque necesitamos píxels "perfectos". Aunque sí podríamos usar compresiones tipo zip.

Para empezar aviso que en realidad la gracia de hacer el mapa con una imagen no es el espacio, es que se pueden "dibujar" las plataformas muy cómodamente con cualquier editor de imagen. Yo las he hecho con el Gimp y es escandalósamente rápido con la herramienta lápiz.

Pero sí es verdad que si se tratase de un juego con muchísimos mapas o que fuesen muy grandes podría empezar a notarse el espacio ahorrado. Así que he hecho uno de los mapas en txt a ver qué pasa.


Son 28 columnas y 15 filas. Aquí podéis ver los archivos que he hecho para comprobar el tamaño:


El excel lo he hecho para crear más rápido el de texto, pero está claro que no sale a cuenta, ocupa mucho más incluso comprimido. En formato csv comprimido mejora pero no alcanza a los otros.

El tamaño 1KB que marca es inexacto, hay que ir a propiedades de cada archivo o bien abrir nuestra querida consola de comandos:


Donde podemos ver que la cosa está más reñida de lo que parece.
map3.png es el archivo original que uso en el progama. Son 240 bytes sin hacer nada especial. No está nada mal y es mejor que el mapa.txt (450B) sin comprimir y mejor que el csv comprimido.
Entonces vemos que el mapatxt.zip es bastante mejor y que nos ahorra una buena proporción de espacio. Sería el momento de comprimir el png pero vemos que map3png.zip... ¡Ocupa más que sin comprimir! Lo cual nos da la idea de que el formato png lleva incorporadas compresiones lossless bastante buenas.
Entonces parece que ocupa menos el txt comprimido... pero hay algunas opciones en el formato png para ahorrar información en la cabecera del archivo. Si al guardar desactivamos todas estas opciones ganamos muchos bytes:


Así el archivo de 28x15 = 420 píxels se queda en 145 Bytes. Que ya está muy bien. Seguro que podríamos inventar algún formato para mejorar esos números, supongo que aún estamos lejos de la entropía mínima. Pero también habría que programar toda la lectura y análisis del archivo mientras que ahora es una única línea.

Incluso hay una opción para minimizar aún más el png, que sería usar color indexado. Si indicamos que solo va a haber un máximo de 8 colores se reduce la cantidad de bits por píxel y se consigue que ocupe 130B.

Además este minimapa tipo png se puede usar directamente dentro del juego para diferentes cosas como un "mapa en pantalla" superpuesto para que el jugador se ubique. También como previsualización en una hipotética pantalla de selección de niveles. Pero sobre todo pintar las plataformas con el ratón me ha convencido desde el principio.

Más cosas, he retocado el control de juego para hacerlo más estándar y he dibujado los controles en pantalla y las monedas. También he cambiado imágenes y el recorrido, los parámetros físicos del personajes y otros detalles...


jueves, 25 de abril de 2013

Programando para Android - 2. En marcha

Ya tengo un primer prototipo muy esquemático con el funcionamiento básico.
Está organizado en dos pantallas usando las Screens del libgdx, una de bienvenida y después la del juego en sí. En punto de entrada carga la MainScreen que a su vez carga la GameScreen cuando se toca la pantalla.

En la GameScreen se carga un escenario de una manera que he visto por ahí y me ha parecido muy curiosa y muy útil. Se prepara previamente una imagen de mapa de puntos así:

Y luego el programa lee la imagen y según el color de cada píxel crea cada elemento en el lugar adecuado. Pero no crea el gráfico, solo el objeto. Todo queda flotando en el mundo de las ideas de Platón. Es lo que sería el Modelo en una arquitectura tipo MVC (Modelo-Vista-Controlador). Todas las operaciones, movimientos, interacción, lógica... se calcula en el modelo. Una vez esté preparado hay que renderizarlo, que es la función de la Vista, coger los elementos y representarlos en la pantalla. La idea sería esta:

El controlador en cambio lo he mezclado con el modelo así que es probable que tenga que reorganizar cosas. Aunque tampoco hay tanto que "controlar", no es tan grave.

La Vista (archivo WorldRenderer.java) se encarga de preparar la ventana de la aplicación, apuntar la cámara a la zona que nos interese, poner una imagen de fondo (está desactivado de momento) y representar cada elemento del juego con su imagen correspondiente en la posición adecuada. Aquí pongo un ejemplo en que se recorre toda la lista de bloques (paredes y suelo) y se dibuja una imagen en cada posición:

for(Block bl: world.blocks){
              batch.draw(blockImage, bl.position.x-240, bl.position.y);

}

De momento solo sale el personaje y los bloques. La única interacción es conseguir que el personaje no pueda entrar en las paredes. Esto ha sido un poco lío pero al final parece que va bien. La estrategia es seguir estos pasos:
  1. Mover la componente x del personaje a las bravas.
  2. Comprobar si colisiona con algún bloque.
  3. Si colisiona retrocedemos un poco y volvemos al punto 2.
  4. Lo mismo con la componente y.
Aunque suene lógico y sencillo hay muchas variables en juego y el equilibrio es frágil.

Queda muchísimo camino para que esto pueda ser llamado juego. Al menos el primer paso ya está hecho. Ahora hay que tomar decisiones sobre la jugabilidad, sobre el concepto, el arte, diseño de niveles, secciones, ayuda, música, animaciones, puntuación, vidas, marcador, optimización... y mil cosas más.

Quien quiera probarlo y modificarlo puede seguir los pasos del post anterior. Si solo queréis probarlo podéis ir a esta dirección desde un móvil android: Descargar juego NoWhereGame. Por supuesto lo hacéis bajo vuestra responsabilidad. Esta app puede derretir tu dispositivo y atropellar a tu gato.

El control del personaje de momento consiste en tocar la pantalla por abajo a la derecha o a la izquierda para ir en esa dirección y tocar por arriba para saltar. No se puede parar.

He estado a punto de poner aquí un pantallazo pero si no lo pongo es ligeramente más probable que lo instaléis.

miércoles, 17 de abril de 2013

Programando para android - 1. Inicio

Voy a iniciar otra serie (incluso sin haber acabado la del pedal, qué nivel) para poner en marcha un pequeño juego para android. La motivación es practicar un poco el java que lo tengo peor que oxidado. El hecho de ponerlo aquí en el blog me sirve para no dejarlo abandonado a la primera de cambio y para que os apuntéis los que estéis interesados en trastear un poco todo este tinglado.

He decidido usar una librería que parece interesante libgdx, sirve para facilitar un poco las cosas típicas de juegos como la gestión de los gráficos, la música, etc... y además se encarga de que el resultado sea compatible con pc, android, web y iphone. Para quien se apunte aquí está lo que hay que instalar previamente y aquí posteriormente.

Para iniciar el proyecto y preparar todos los archivos y dependencias viene un pequeño ejecutable (gdx-setup-ui.jar) que genera el esqueleto inicial:


Después voy a importarlos a Eclipse mediante Import => Existing project into workspace. Aquí ya podríamos empezar a picar pero si somos un poco elegantes preferiremos...

Ponerlo en sistema de control de versiones: He usado el subclipse para subirlo a code google goingnowhere. Ahí ya podéis ver el código inicial generado que es una especie de Hola mundo. Para verlo en funcionamiento hay que compilarlo en el Eclipse. Es muy útil lo de que se compile por igual en varias plataformas, no será necesario abrir un emulador de android ni conectar un dispositivo en modo debug porque simplemente podemos ejecutar la versión PC que es más directo y sabemos que luego funcionará también en las otras versiones.

Al ejecutar se muestra esto:

Una pantalla de inicio sencilla que muestra una imagen.

Si solo queréis probar (y colaborar) justo esta aplicación que he colgado los pasos se reducen y se simplifican:
  • Instalar el JDK de Java.
  • Instalar el ADT-Bundle de google (que lleva eclipse + un montón de cosas necesarias).
  • Añadir el plugin subeclipse al Eclipse en Help => Install new software y en Work with ponemos la dirección  http://subclipse.tigris.org/update_1.8.x e instalamos los paquetes que aparecerán.
  • Importar mi proyecto mediante File => Import =>SVN => y ponemos la url https://goingnowhere.googlecode.com/svn/trunk
Para probar si funciona hacéis botón derecho en la carpeta goingnowhere-desktop y vais a Run as => Java Aplication (y marcáis el Main si lo pregunta).

miércoles, 20 de marzo de 2013

Pedal para guitarra TS808 - Capítulo OCHO

El siguiente paso es conseguir una conmutación que permita bypasear el circuito mediante pulsador y que sea lo bastante dura como para aguantar muchos pisotones. Lo más fácil es usar un pulsador conmutador de  3 polos en 2 posiciones, abreviando 3PDT para los amigos. Aquí podéis ver el que me acaba de llegar:

Esta pieza que parece un componente de lo más vulgar es bastante caro y no suele estar disponible en tiendas del MunRealTM. Al final me costó "solo" 4€ envío incluido.

Es un interruptor interesante, vamos a situarnos:
El interruptor más simple sería un SPST, un polo, un camino (abierto o cerrado)
El conmutador más simple sería el SPDT, un polo, dos caminos (que se conmutan)
El conmutador más simple que se podría usar para este tipo de bypass sería el DPDT, dos polos, dos caminos cada uno.
Pero ya puestos nos interesará otro polo más que usaremos para controlar un led que nos indique si el pedal está en funcionamiento o no. Así tenemos el 3PDT, tres polos, dos caminos cada uno.

La conexión es algo así:


En la foto vemos la posición OFF, la guitarra es dirigida a través del cable rojo directamente al altavoz. La señal pasa limpiamente. El led está conectado por un lado a la tensión de alimentación pero no pasa corriente porque el circuito está abierto.
Cuando se pisa el pulsador, pasamos a ON, las tres palancas cambian la posición a la vez y en esa situación la señal de guitarra es dirigida al cable verde, atraviesa el circuito y sale hacia el altavoz. Simultáneamente se cierra el circuito del led permitiendo que se ilumine.

Además es muy útil que la pila se desconecte cuando no hay cable conectado al pedal para que así no se vaya gastando. Para eso hará falta un  Jack de 6,5 estéreo. Uno como éste:

Normalmente un conector jack estéreo tiene un funcionamiento así:

Cada contacto a su sitio, como es de esperar.

En este caso el truco es aprovechar el canal extra para conseguir unirlo a la malla cuando se enchufa el jack mono así:
Así la pila verá un circuito abierto cuando no haya nada enchufado y se cerrará el circuito al poner el jack.
Añadiendo estos detalles a la cría de pulpo podemos decir que ya tenemos un pulpo adulto en toda regla:
En la foto también se aprecia el led de encendido y un conmutador por arriba para convertir el overdrive en booster.

Ya falta menos.