Mi primer juego para iPhone, el 2048 accesible, ya está disponible

¡Hola!

¿Os acordáis de esta entrada que publiqué hace tiempo, sobre la programación? [] https://blog.oriolgomez.com/?p=318

Por fin empieza a dar sus frutos. Después de meses de duro trabajo, por fin puedo presentar mi nuevo juego, creado a partir de mucha dedicación, esfuerzo y comunicación con diseñadores: ¡El 2048 accesible!

Pantalla inicial del 2048 accesible
Pantalla inicial del 2048 accesible

Link de obtención: [] https://apps.apple.com/us/app/id1530728911

Este juego, que ya estaba disponible para iPhone en otras versiones, no era accesible para invidentes hasta ahora. Se trata de combinar casillas de números que se van añadiendo y multiplicando hasta alcanzar el 2048, cosa que no es fácil. Los números se van sumando y se va llenando el tablero, y si se llena el tablero completamente habremos perdido. Existen varios modos de juego y he añadido de momento el clásico, pero no descarto sacar más versiones en un futuro próximo para añadir más desafío al juego.

El proceso de creación ha sido difícil, porque hemos tenido que combinar mi programación con supervisión de otras personas que se han asegurado de que mi juego no sería solamente para ciegos, sino que también puedan jugar personas con baja visión al igual que sin problemas de visión.

Esto es un gran logro para mí, porque desde hace años he querido desarrollar juegos para iPhone para invidentes: Si salimos del inglés, existen por el momento muy poquísimos juegos para ciegos;

Es para mí muy importante poder anunciar este juego ya que llevaba muchos años queriendo desarrollar juegos para iPhone sin ver. Siempre ha sido muy complicado desarrollar con herramientos tipo Interface Builder, porque hay que posicionar la interfaz, hacer que tenga el tamaño y el diseño adecuados, etc. Gracias al nuevo framework de Apple, SwiftUI, que funciona con código (estilo CSS), he conseguido desarrollar este juego. Ahora estoy trabajando en otros, como un ahorcado accesible o el cofre de la suerte. Doy lagracias a todos los que me han ayudado con el diseño y los sonidos (Carlos Correa, Guillem León), y a los miembros del grupo de programación de juegos, por las constantes capturas de pantalla que he ido enviando.

También me gustaría agradecer especialmente a los amigos de Currently Untitled Audio por los sonidos que han aportado para el juego, y a carlos Correa, que ha diseñado los iconos y me ha ayudado con el diseño y programación de algunas partes de este juego.

Currently untitled audio [] https://currentlyuntitled.design

El juego cuesta €2,29, y comprándolo me ayudarás a crear más juegos inclusivos, accesibles, tanto sencillos como más complejos. Como dije antes, estoy creando un juego de ahorcado y otro del cofre de la suerte, que publicaré pronto también para iPhone.

Os dejo el enlace del juego para descargarlo: https://apps.apple.com/us/app/id1530728911

También podéis encontrar el juego directamente en vuestro dispositivo simplemente poniendo 2048 accesible en el app store.

Post sobre el slay the spire

Introducción

Bienvenidos a este nuevo post. En mi blog no suelo hablar sobre juegos. Aún siendo una de mis «pasiones», digamos que el blog lo reservo para temas más serios. Sin embargo, creo que este juego lo merece y la complejidad que tiene su instalación y manejo necesitan de una explicación.
El juego del que os quiero hablar es el Slay the Spire, un juego de combates basado en cartas y, en menor medida, exploración.
Os cuento también que no necesita precisamente de muchos recursos gráficos ni de CPU, cosa que me sorprendió grátamente porque últimamente todos los juegos que veo requieren una ingenta cantidad de ram y demás.

En esta ocasión os voy a hablar sobre un videojuego que vale tanto para ciegos como para jugadores con visión total (o parcial). No es un juego accesible por sí solo, pero mediante la instalación de unos mods desarrollados por varios compañeros podemos jugarlo casi en su totalidad, y digo casi porque es difícil acceder a algunos menús pero no son imprescindibles para jugar.

¿Cómo se juega?

El juego slay the spire tiene su interfaz, sus gráficos y sus pantallas. Todo eso está muy bien, pero no es accesible. Por lo tanto, los mods que nos descargamos habilitan el uso de una ventana de comandos. En esa ventana de comandos escribiremos órdenes sencillas (en inglés) normalmente seguida de una opción, por ejemplo para escoger una carta. Ejemplos básicos de órdenes pueden ser: hand 1, map, proceed, leave, etc.

Instalación

Primero hay que instalar Steam.
Una vez tengas una cuenta de Steam creada y Steam instalado, hay una forma fácil y rápida de hacer login en el cliente de Steam mediante la creación de un acceso directo en el escritorio (o modificando el existente) añadiendo lo siguiente en la línea de comandos:
«C:\Program Files (x86)\Steam\Steam.exe» -no-dwrite -login usuariodepepito contraseñadepepito language spanish
Por lo tanto, vemos que después de las comillas (que ya vienen en el acceso directo) añadimos una serie de comandos. El –no-dwrite sirve para hacer más accesibles ciertas pantallas y añadimos también el idioma y el login.

El proceso de instalación de slay the spire hace necesaria la suscripción a varios elementos gratuitos de steam workshop. Para ello, una vez tengamos Steam configurado,
Para instalar el juego hay que hacer lo siguiente:
– comprar el juego en steam (también se puede hacer por Gog pero el pack de accesibilidad no se actualiza tanto): https://store.steampowered.com/app/646570/Slay_the_Spire/
– Suscribirse a los mods que necesitamos, que vienen a continuación. Para saber si estamos suscritos al mod es muy fácil. solo hay que darle a un enlace dentro de la página del mod que pone subscribe. Puede que te salga alguna ventana de confirmación. Una vez estemos suscritos, ese enlace cambiará su nombre a «subscribed», con la d al final.
Si la página te sale en español, imagino que será subscribir y suscrito.

Mods que necesitamos a continuación:
– text the spire: https://steamcommunity.com/sharedfiles/filedetails/?edit=true&id=2130936088
– Communication mod: https://steamcommunity.com/sharedfiles/filedetails/?id=2131373661
– base mod: – base mod: https://steamcommunity.com/workshop/filedetails/?id=1605833019
– mod the spire: https://steamcommunity.com/sharedfiles/filedetails/?id=1605060445
– achievement mod: https://steamcommunity.com/sharedfiles/filedetails/?id=1692554109
– Descargar java (si no lo tenemos): Tan fácil como ir a www.ninite.com, activas todas las casillas que ponga java (los development kit jdk no hacen falta) y le das a get your ninite.
– read the spire: Es opcional pero sirve de mucho ya que hace que automáticamente lea las pantallas del juego, si no, es muy engorroso: https://github.com/pitermach/ReadTheSpire

Para el read the spire, hay que ir a la pestaña releases y descargar la última. También recomiendo que dentor del archivo zip del programa, en el archivo watchlist.txt, añadas una línea con la palabra:
Event
Haciendo eso (que no entiendo por qué no está por defecto), añade la ventana de Eventos del juego al programa para que se lea automáticamente también.

A partir de ahí, lo único que falta es arrancar rts.exe una vez extraído el zip de read the spire y se haya descargado todo desde Steam. Si algo falla o no encuentra el archivo, asegúrate de que se ha instalado bien el juego y los mods en la siguiente carpeta:
C:\Program Files (x86)\Steam\steamapps\common\SlayTheSpire\mts-launcher.jar

Si falta ese archivo, algo no se ha instalado.

Jugando a slay the spire

Cuando arrancamos rts.exe del read the spire, si todo ha ido bien, nos dirá que esperemos un momento y que se va a iniciar la pantalla de los mods. Aquí, solo hay que tocar 2 cosas, si tocas algo más, la lías. Hay que tocar un botón que dice select/deselect all mods, y luego darle a uno que pone play.
Si todo va bien el juego iniciará, y saldrán unas cuantas ventanas: Prompt, choices, output… El read the spire debería empezar a leer las opciones para jugar al juego.
Lo primero que te leerá es: You are on the save slots screen, type a name and hit enter.
Deberemos ir a la ventana de slay the spire, escribir un nombre y pulsar enter. A partir de ahí ya debería empezar a decirnos choices: start, restart, etc.

Desde ahí podemos obtener ayuda, escribiendo los comandos en la pantalla prompt. Te recomiendo que escribas help y te familiarices un poco con los comandos.

También hay varias teclas útiles: Ya que el juego se divide en ventanas, el programa read the spire también divide su lectura por ventanas. Con alt + los números podemos cambiar de ventana y con alt + flechas nos movemos arriba, abajo o a los lados, alt inicio y alt fin nos desplazan al inicio o al fin sin tener que cambiar nosotros de ventana pudiendo quedarnos en el prompt para poder escribir lo que queremos hacer.

Mecánica del juego

Una vez hemos escrito start + el nombre de uno de los personajes (al principio solo podemos start ironclad porque es el único personaje desbloqueado), nos aparece ya el mapa, donde podemos elegir dónde queremos dirigirnos.
A partir de ahí, con el comando map podemos ver dónde queremos ir y escribir map [planta] [coordenada] para dirigirnos a esa posición. Eso actualizará la ventana de choices con unas indicaciones en inglés, on track y diverge. Una salida del mapa con diverge significa que nos desviamos de dónde íbamos y on track significa que iremos bien. Si elegimos una salida con diverge, ya no podremos volver a donde íbamos, así que con cuidado.

Habiendo explicado todo esto, creo que lo único que hace falta es explicaros un poco cómo funcionan los combates.
En los combates tenemos varias cartas, yo lo que hago es lo siguiente:
Lo primero es ver lo que va a hacer el enemigo (eso se ve mediante la ventana monster, que nos dirá su intención (intent: attack, buff, debuff, etc). La ventana monster también muestra un dato muy útil, que es el número que viene después del incoming: Incoming significa cuántos puntos de ataque totales nos van a lanzar los enemigos, lo que nos ayuda a la hora de elegir qué cartas queremos tirar.
Una vez sabemos eso, nos vamos a la ventana hand (alt 6 por defecto en el read the spire) y vemos las cartas que tenemos. Para lanzar una carta solo hay que escribir su número seguido del número del enemigo si hay varios. Los números de los enemigos salen en la pantalla monster.
Si no sabemos qué hace una carta, es tan sencillo como escribir hand y el número, por ejemplo hand 4. Eso nos dirá si le hace daño al enemigo, si nos da bloqueo (protección) o nos da algún poder.
Para saber lo que hacen los poderes es cuestión de experimentar o buscarlo en internet, sería difícil explicar aquí todos los poderes pero por el nombre más o menos sabemos lo que hacen.

Con esto termino la guía por hoy pero no descarto actualizarla en el futuro porque este juego es bastante complejo, sobre todo id experimentando y me contais. Si has visto esta guía y estás jugando al juego, por favor dime algo y si quieres que la mejore y añada algo me lo dices.

¡Proyecto tele para todos tiene una nueva web!

¡Hola a todos!
EL proyecto tele para todos, traducción de audiodescripciones al español nos abandona… ¿Quéeee?
Noooo, es broma! Solo cambia de web!
Para encontrarlo, haz click en el icono tele para todos que encontrarás en el menú principal de este blog, o en mi página web.
Por cierto, he tardado más de media hora para escribir este post. Vaya tela con el editor de bloques de WordPress… Al final, he instalado el editor clásico y a tomar por saco.

Programación, diseño web y la ceguera

El otro día hablando con alguien me dí cuenta de que, para el que no conoce el tema de la programación, se hace complejo entender qué es lo que hace un programador. Y no voy a entrar en el tema de distintas clases de programadores, porque sería irse por la tangente.

En esencia, el trabajo de un programador es producir instrucciones que un ordenador entienda para realizar una acción, crear un programa determinado, ya sea un juego, una página web o un programa que consulta información en una base de datos y la muestra al cliente en un formato que pueda entender fácilmente. La forma en que programamos, pues, depende de cómo enfoquemos una tarea o las condiciones de cada proyecto o empresa.

En esta ocasión no voy a entrar mucho en el tema de la discapacidad, aunque sí que mencionaré en algún punto el tema de la ceguera (soy ciego total), y programo a ciegas. Sin embargo, creo que los ciegos podemos producir un programa (en adelante, código), igual que los demás.

El tema de las matemáticas y la programación: ¿Mito o realidad?

Ay las matemáticas, qué bonitas que son y qué necesarias que son para un programador… O no. Siempre que hablo de programación, hay alguien que me dice que bueno, tengo que saber mucho de mates, que si no, no se puede programar.

Oh, sorpresa. Eso es un mito.

Las matemáticas y la programación realmente tienen poco que ver. Pongamos algo en perspectiva:

Pongamos que estoy haciendo un programa para un cliente cuya función es conectarse a un servidor y realizar una serie de acciones como habilitar la entrada de una serie de usuarios con un correo electrónico, contraseña y a partir de ahí, dejarlos que descarguen una serie de archivos. ¿Necesito matemáticas? Para nada. Quizás hace 30 años, cuando la única manera de programar era con un lenguaje de programación de muy bajo nivel (qué digo, quizás hace 50 o 60 años).Con bajo nivel me refiero a que casi casi había que escribir en lenguaje máquina para que el ordenador te entendiera. En esos tiempos quizá eran más necesarias las matemáticas porque el lenguaje binario era muy complicado.

Pero para el caso que nos ocupa, no utilizaríamos para nada las matemáticas. Es más, en el programa del que hablábamos no utilizaríamos ni una fórmula matemática.

Ahora bien, digamos que estamos haciendo un juego de coches y hay que hacer un sistema de rotación basado en ángulos, velocidad de giro, aceleración, gravedad, fricción… Para eso sí que necesitamos matemáticas, física y demás. Empecé a hacer un juego de coches con esas características y, la verdad, es ponerse y acostumbrarse.

Programación vs. Diseño

Programar una web no es diseñar. Un ciego puede programar una web, pero no te haré el diseño gráfico. Eso no significa que la web que haga un ciego será fea, ni mucho menos.

Es verdad que mi web principal tiene un diseño completamente plano, pero eso es por vagancia pura y porque la mayoría de los que entran son ciegos y por eso pasé de ponerle css o imágenes. Pero hay formas de que un ciego haga una web bonita:

Una es a través de un gestor de contenidos (este blog está hecho en WordPress y tampoco es tan feo, ¿no?).

Otro método es hacer una web a mano, con Bootstrap por ejemplo, y ponerle un poco de css al menos, para que el diseño no sea tan uniforme.

¿Y si lo has hecho mal, cómo te das cuenta?

Alguien me preguntó que, siendo ciego, cómo me daba cuenta de si cometía un error a la hora de introducir código.

El hecho es que el ordenador te proporciona numerosas herramientas de debugging (deporación de errores). Digamos que cometes un error en una línea. Es verdad que te queda marcado en rojo y que visualmente se ve fácil, aunque no siempre es el caso. Muchas veces el error está en otro sitio e incluso visualmente es difícil saber dónde nos hemos equivocado. Pero la cosa es que aunque no puedas ver las marcas en rojo, hay herramientas que nos dicen qué es lo que el lenguaje de programación no sabe interrpretar y que nos hemos equivocado. No voy a entrar en detalle porque no viene al caso, pero es totalmente posible programar sin ver.

La interfaz de usuario: Si no ves…

Buena pregunta. Hasta hace relativamente poco, era bastante difícil diseñar interfaces sin ver. La interfaz es lo que vemos cuando interactuamos con un programa: En el móvil, tocamos en un mensaje de whatsapp para entrar en él y aparece otra ventana con el chat por encima. En un ordenador, tenemos botones y menús y accedemos a ellos con el ratón o el teclado. Eso es la interfaz.

Al no ver, no sabemos, en teoría, si posicionamos bien un botón en la pantalla, si luego una persona que vea lo verá bien. Esto es un tema que se ha debatido mucho siempre, pero cada vez las cosas se nos ponen más fáciles.

Uno de mis proyectos más recientes es un puzzle para dispositivos IOS IPhone, IPad, etc. Para ello he utilizado SwiftUI, que permite diseñar la interfaz a través de código. Pero podría haberlo diseñado perfectamente con otra librería como Flutter, que funciona también con Android. El tema está en que es mucho más sencillo diseñar una interfaz para móviles que una de escritorio y la razón es tan simple que cuando os deis cuenta diréis… Ah, claro!!!!

Una pantalla táctil y un programa lector que lee esa pantalla significa que un ciego puede tocar los botones y elementos que ha programado. Esto significa que, habiendo “tocado” otras aplicaciones, nos damos cuenta enseguida de si el diseño es más o menos adecuado. Vale que no te crearé un icono para cada elemento de la app, pero cuando alguien me pase los iconos hechos, los puedo poner. O mejor aún… Utilizaré un Emoji para sustituir al icono. ¿Os acordáis del puzzle para IPhone que os dije hace un momento? En las casillas vacías (que no tienen ficha) utilizo el Emoji de un círculo blanco vacío ⚪️. Hasta ahora, nadie se ha dado cuenta…

Conclusión

Sé que al principio dije que no hablaría mucho de la ceguera y que me centraría más en programación. En vez de ser todo un profesional y quitar esa frase, lo voy a dejar así. Pero no por vagancia. Si no para que os deis cuenta de que la ceguera influye a la hora de programar, pero positivamente: No se te cansa la vista, el teclado es mucho más rápido que el ratón ¿A que nunca habrías imaginado que con un atajo de teclado puedes moverte por el ordenador sin apuntar con el ratón, lo que conlleva perder tiempo valioso?, y además, hay un robotito que lee todo y al que tampoco se le cansa la vista porque es un programa. Algunos le llaman extraterrestre, otros robot… Pero se llama lector de pantalla y tú también lo tienes. Está en tu móvil, está en tu PC, en tu Mac, y ni siquiera lo sabías. Me apuesto lo que quieras.

Tiflotips: con la tecnología todo es más fácil: Mi nuevo canal de Youtube

¡Buenas!
Hace un tiempo publiqué sobre mi canal de accesibilidad, donde hablo sobre aplicaciones, herramientas, consejos y demás, para usar tanto mòviles como ordenadores de forma accesible.
Siendo ciego total y despierto en cuanto a tecnología, decidí abrir este canal que he ido actualizando a lo largo de estas últimas semanas con nuevos consejos y valoraciones de aplicaciones.
A continuación os paso el enlace del canal con el anuncio que pongo para promocionarlo:

Visita mi canal, Tiflotips: Con la tecnología todo es más fácil. Aprenderás sobre nuevas apps para IOS, Mac, Windows y Android. También algún juego y otras sorpresitas. ¡Suscríbete! https://www.youtube.com/channel/UCMaDr53GrHIEGWl2ZxNyNew

«pues tendré que consultarlo»: El lado negativo del empleo para las personas con discapacidad

«pues tendré que consultarlo»

¿A quién no le suena esta frase a la hora de buscar un empleo?
En los últimos meses, es una de las frases que más he escuchado y que más me irrita. Después de una agradable estancia en una empresa de Madrid como Asistente de Gestión de Personal, me encuentro sin empleo y, observando el panorama, la situación es algo frustrante.

Esta vez no vengo con consejos (a diferencia del post anterior que publiqué sobre el mundo laboral), sino para hacer un llamamiento a todas las empresas abiertas a contratar personal con discapacidad.
Dada la situación actual, me he visto obligado a buscar empleo fuera de Tarragona (el lugar donde resido actualmente), y ampliar la búsqueda a otros lugares. Me he encontrado una infinidad de veces con empresas muy interesadas en mi CV que, durante el transcurso de una llamada telefónica llena de expectativas y esperanza por mi parte e incluso, a veces por parte del entrevistador, llega el momento fatídico en el que les tengo que anunciar que «tengo una discapacidad visual total, pero eso nunca ha sido un problema en mi trabajo ya que los ordenadores se pueden adaptar con un software de lectura completamente gratuito y seguro».

«pues tendré que consultarlo». esa es la frase de los seleccionadores para escaparse de la responsabilidad de concertar una entrevista en ese momento y luego no volver a llamar jamás. Hasta cierto punto digamos que lo puedo llegar a entender, es una frase que como Asistente de Gestión de Personal he tenido que utilizar en ciertas ocasiones (aunque nunca por razones de discapacidad y/o discriminación). Pero cuando eres el candidato que se siente discriminado por razones de discapacidad y no puedes hacer nada al respecto, es una situación muy poco agradable que con la rutina se convierte en desesperante.

Hace relativamente poco, tuve una mala experiencia con una empresa de selección. Me llamaron para una oferta de trabajo a la que me apunté, como teleoperador con alemán para una campaña temporal. Me informaron de que tendría que hacer una prueba del idioma alemán para poder seguir en el proceso, que recibiría a través del correo electrónico.

Hasta ahí bien. La prueba consiste en tres partes, dos auditivas y una de gramática. La segunda parte (el 33 % de las preguntas) consiste en… Interpretar lo que dice el audio y hacer click en la imagen que mejor lo describe.
Por razones obvias, tuve que contestar aleatoriamente a todas estas preguntas. Cuando quise reclamar y envié un correo, la dirección de email era sin respuesta (que no llegan los correos a nadie).
Además, el número de teléfono de la persona que me llamó para comunicarme que estaba dentro del proceso era una centralita, sin posibilidad de devolver la llamada.
La oferta de empleo por la que me llamaron era a través de Infojobs, y desde esa empresa de selección no ofrece forma de ponerse en contacto con el seleccionador por si hay algún problema ya que no me registré desde su propia web (que también es inaccesible y les he notificado de ello, sin ningún progreso desde hace meses).

¿Qué hay que hacer en este caso? ¿Aguantarse?

Hay mucha gente que piensa que no es necesario mencionar el tipo de discapacidad cuando se habla con los seleccionadores, pero estoy en desacuerdo. Por una parte, mi discapacidad visual es una parte de mí y me hace trabajar más rápido con los ordenadores que otras personas que ven (el uso del teclado sin tener que utilizar el ratón acelera muchísimo ciertos procesos mecánicos). Por otro lado, tener que viajar a Barcelona, Madrid u otros lugares a una entrevista de la que me pueden rechazar al conocer mi discapacidad es un riesgo que no quiero tener que afrontar porque sería una pérdida de tiempo y dinero para todos.

Con esta entrada quiero hacer un llamamiento a las empresas para que se informen de que las personas invidentes también utilizamos la informática, hablamos por teléfono o centralita, y con esfuerzo y dedicación podemos tener un nivel de formación bastante elevado.

Os dejo el enlace al lector de pantalla NVDA para Windows, el lector gratuito y de código abierto para invidentes utilizado en muchos ámbitos laborales.
NVDA Screen Reader