Análisis de The Witness

Recientemente me he pasado el juego de puzzles The Witness, la última obra de Jonathan Blow. Me lo había recomendado un buen amigo y al poco me enganché. Voy a hacer un spoiler mínimo, lo justo para que os quedeis con los dientes largos.

Nota musical:

Si te has pasado el juego al 100% lo entenderás

The Witness se inicia de manera enigmática para el jugador acostumbrado a la jugabilidad Nintendo. Con jugabilidad Nintendo me refiero a la típica de juegos como Mario Party donde antes de cada juego se explican las instrucciones por escrito y se puede incluso practicar. La propia pantalla de carga produce intriga al jugador.

TheWitnessLoad

Aparecemos en un pasillo, en una isla, al principio solo podemos avanzar hacia delante. El juego nos indica que podemos usar las teclas WASD para movernos y que usemos el ratón. Es la única ayuda que nos dará.

TheWitness

Para avanzar tendremos que resolver puzzles. Todos los puzzles poseen la misma estructura, empezamos por un círculo gordo y tenemos que dibujar una ruta por la cuadrícula hasta el final, una línea que se sale de la cuadrícula. Pero no vale con llegar, tendremos que cumplir las condiciones que los símbolos geométricos y el entorno nos impongan. Al principio estos símbolos no aparecen pero según vayamos avanzando, empezaran a aparecer hexágonos, cuadrados amarillos, cuadrados azules, cuadrados blancos, estrellas rosas, triángulos y el entorno también influirá en la resolución del puzzle.

Una vez atravesamos la primera parte, se nos deja sueltos en la isla y entonces podemos hablar de un auténtico sandbox de puzzles.

TheWitnessApple

El significado de cada símbolo, de porque un puzzle se resuelve de esta manera y no de otra es algo que queda para nosotros. Tenemos que resolver los puzzles, pero además tenemos que saber qué nos pide el puzzle. Y muchas veces creemos haber llegado a una conclusión que es incorrecta, y tenemos que replantearnos todo lo anterior. Muy bien pensado. Cuando ya sepamos el significado de los símbolos y como influye el entorno en el puzzle el reto ya no será descifrar su significado, sino resolverlo, puesto que serán más complejos. Un trabajo de científicos…

El vídeo es un desbloqueable que encontramos en el juego si somos avispados, ya que las piezas del gran puzzle que es encontrar los vídeos se encuentran desperdigadas por la isla. En este fragmento vemos a James Burke al final de la serie Connections de la BBC (1978). The Witness está plagado de filosofía empirista por todas partes. Además de estos vídeos (que hay 6) nos encontramos con 43 audios con frases, explicaciones y pensamientos de Albert Einstein, William Faulkner, Feynman y gente relacionada con la filosofía de la ciencia y otros personajes de la filosofía zen moderna, como Gangaji y David Golding. Algunos audios son más estimulantes que otros, algunos te hacen pensar y otros son un poco rollo. Lo cierto es que crea una atmósfera que mezcla elementos zen y el empirismo.

El zen es tan importante que en un determinado momento nos preguntaremos si todo esto es un kōan, es decir un problema que el maestro plantea al alumno para comprobar sus progresos, muchas veces un problema absurdo que para ser resuelto el alumno debe desligarse del pensamiento racional común para así entrar en un sentido racional más elevado y así aumentar su nivel de conciencia para intuir lo que en realidad le está preguntando el maestro, que trasciende al sentido literal de las palabras. Una explosión mental en toda regla que nos acerca, en esos momentos de explosión al contacto más directo con la realidad, sin pasar por el pensamiento, pues este ha sido destrozado.

Sin embargo toda esta filosofía que planté a el juego no acaba bien, por lo menos desde mi punto de vista. El juego parece que según vas avanzando llegarás a una conclusión final, que te hará replantearte tu vida. Esto no ocurre. Quizá sea un reflejo de la vida. Creemos que tiene algún sentido, que algún día comprenderemos. Pero al final solo hemos dado unas pinceladas aquí y haya, pero seguimos sin tener “eso”. “Eso” que acabaría con “aquello”. Así que el final no es malo, pero quizá cuando lo veas por primera vez, después de haber estado jugando te sepa a poco. Es lógico. Pero tras un razonamiento, haciendo analogías con la vida, no me parece un final tan malo.

El apartado estético es alucinante, cada vez que lo pienso más me asombra. No es especialmente realista, podríamos llamarlo impresionista, con formas toscas, esquinas gigantes pero una iluminación y un colorido espectacular. Aparte de la belleza de por sí de la naturaleza y los edificios tenemos juegos de sombras:

TheWitnessMalabarista

En este caso por ejemplo, vemos la estatua de un pobre hombre, parece que gritando al cielo, una gran desgracia la ha acontecido. Pero su sombra, que combina con las piedras del suelo nos deja otra imagen, se encuentra haciendo malabares, un símbolo de felicidad. No todo es lo que parece.

TheWitnessGranEstatua

 

En esta imagen vemos la estatua una mujer tallada en la montaña. Tiene un porte de grandeza, se va a comer el mundo, es fuerte y mira al cielo, aspirando a lo más alto.

TheWitnessEstatuaAyuda

En cambio, desde el punto de vista correcto, la situación cambia por completo, la mujer está siendo ayudada por otra, parece que va a morir, que las cosas le van mal y la otra mujer, por encima de ella la intenta subir a donde está ella, un lugar mucho más estable.

TheWitnessPuzzleAmbiental

 

Y dejamos lo mejor para el final, los puzzles ambientales. Se trata de puzzles que aparecen en la naturaleza. En la imagen vemos uno muy sencillo, el del río, que además cuenta con panel explicativo. Cuando veamos uno de ellos simplemente nos dirigimos al punto gordo y vamos hasta el final. Veremos estrellitas resplandecer y si finalizamos la ruta se hará un gran estruendo. Hay muchísimos. Y muchos donde no te los esperas. Por haber hay hasta uno dentro de una película del cine, que, os adelanto, dura una hora el recorrido que tenemos que hacer.

TheWitnessEnvironmentalPuzzle

¡Están por todas partes!

TheWitnessCastleBefore

TheWitnessCastleAfter

Mi recomendación final es que un juego magnífico, llegar al final estándar no es muy difícil, pero el jugador que le entre el gusanillo puede aspirar a conseguir todos los vídeos, entrar al nivel de la cueva y desvelar el final secreto.

Comprar en eBay Comprar en Amazon Comprar en Steam

Rust Essentials, reseña del libro

Dicen que a las personas importantes les pide la gente su opinión. Así que no entiendo porque tengo ahora que dar opiniones…

Hoy voy a hablar del libro Rust Essentials de Ivo Balbaert. En primer lugar quiero agradecer a la editorial Packt Publishing por haber contado conmigo a la hora de valorar este libro para que todos vosotros conozcais algo más acerca de él.

RustEssentials

Rust Essentials es un libro de introducción al lenguaje de programación Rust, lenguaje del que ya he hablado anteriormente. El libro está en inglés y asume que no conoces nada o muy poquito de Rust pero sí que has programado con anterioridad. Así pues, el libro no explica conceptos de programación tales como funciones o variables sino que directamente expone sus peculiaridades. Es recomendable haber programado C para entender algunas partes del libro al 100%.

El libro se estructura en 9 capítulos, a saber:

  • Starting with Rust
  • Using variables and types
  • Using functions and control structures
  • Structuring data and matching patterns
  • Generalizing code with high-order functions and parametrization
  • Pointers and memory safety
  • Organizing code and macros
  • Concurrency and parallelism
  • Programming at the boundaries

En estos temas se tratan desde cosas tan triviales como los comentarios (que no lo son, pues según explica el libro, puedes hacer comentarios de RustDoc, que serán compilados como documentación en HTML y tienen marcado Markdown) hasta la gestión multihilo de Rust, para aprovechar uno de los 3 apartados en los que se enfoca Rust: la concurrencia.

Veremos la magia de Rust, respetando la convención de estilo (esto es importante, no vaya a pasar como con JavaScript) y las características que hacen de Rust un gran lenguaje de programación. El libro contiene ejercicios e incluso analizarás porque en determinados lugares obtenemo un error de compilación.

Hacen falta un tiempo para que dejes de ver al compilador de Rust como un protestón sin sentido y lo empieces a ver como tu mejor amigo en la programación

El libro también se adentra a explicar las partes de programación funcional de Rust, no sin antes explicar las closures y las funciones de primer orden. Más tarde nos adentramos en las traits, que posibilitan la programación orientada a objetos pero no como se plantea desde C++, C# o Java. En Rust, es mucho más flexible y unido a las funciones genéricas podemos evitar la repetición del código en un 100%. DRY (don’t repeat yourself). El capítulo 6 es interesante y quizá algo denso para alguien que venga de lenguajes donde la gestión de memoria es administrada por una máquina virtual o intérprete. No es difícil, pero hay que saber las diferencias. Rust tiene muchos tipos de punteros y he de decir que este libro los explica mejor que mi antiguo libro de C de Anaya.

Rust

Más tarde se ve el sistema de módulos y la creación de macros en Rust. Las macros en Rust son muy potentes, más que en C donde también son bastante usadas. El capítulo 8 se dedica por completo a los hilos y la gestión de datos entre distintos hilos. El capítulo 9 nos explica cosas interesantes pero que no tienen mucha densidad y no se merecen un capítulo propio como la intercomunicación entre C y Rust o instrucciones en ensamblador directamente en el código.

Me gusta que tenga ejercicios para practicar (las soluciones están en GitHub), que use las herramientas disponibles de Cargo, que explique porque un determinado código no compilará, que hable de como desarrollar tests unitarios y de que explore todas las características del lenguaje de manera incremental, muchas veces modificando ejemplos anteriores.

No me gusta que quizá sea un libro muy rápido que presupone algunos conceptos y que casi no explora la librería estándar mas que para hablar de ciertas traits muy útiles y la gestión de hilos. No habla en ningún momento de como leer archivos por ejemplo aunque en el anexo menciona librerías para leer distintos tipos de archivos.

En definitiva es un libro que recomiendo a todos aquellos que ya tengan experiencia programando y quieran aprender un nuevo lenguaje, lleno de peculiaridades diseñadas para trabajar en: velocidad, seguridad y concurrencia. No se lo recomendaría a alguien que no hubiese programado nunca.