En algún momento de junio de 2023, mi hijo Leon trajo de Köln una computadora portátil de mediados de los 90s con Windows 95 instalado. El único juego que traía era una versión del famoso solitario chino Mahjong.
Pasó que Leon no conocía el juego, y se re entusiasmó. Cuando yo vi el juego, le dije: “Pero esa versión en malísima, se ve horrible. Había una versión más vieja, en la Commodore Amiga, que yo jugaba con mi papá que se estaba mucho mejor”. Y al ver la conexión que yo tenía con ese juego, me dijo: “Y por qué no lo programás? Así está disponible en computadoras modernas?”
Y así fue que surgió la idea de hacer una nueva versión del famoso solitario basada en pixel art.
Unity
Yo justo estaba cursando dos diplomaturas de desarrollo de juegos en dos universidades de Argentina. Y en una de ellas estábamos aprendiendo Unity, así que decidí que tal vez fuera una buena opción tratar de hacer este desarrollo en Unity, pensé que sería una cosa sencilla. Bueno, no siempre es así!
Alrededor de agosto ya había comenzado el desarrollo. Y por suerte también había comenzado un dev-log que persiste hasta el día de hoy. El primer post en ese dev-log es del 13.8.2023, y afirma que el proyecto comenzó alrededor de junio de 2023.
Timeline con los momentos destacados
Septiembre 2023
La lógica principal del juego ya estaba funcionando para esta fecha.
Y al parecer ya en septiembre había logrado que se exporte un CSV con el diseño del tablero, cosa muy práctica para crear niveles adicionales.
Diciembre 2023
En estos meses hubo una especie de blackout, probablemente por la exigencia de terminar la cursadas, y todo eso.
En diciembre comencé a organizar un poco más el proyecto, haciendo una maqueta de la UI, y todo eso:
Enero 2024
Después de algunas pruebas que no me convencían, decidí que la UI de toda la intro usaría la paleta de colores del Workbench 2.0 de la Amiga (son solo 4 colores).
Audio
Buscando música para el juego di a parar con una canción que me encantó llamada Andante, traté de contactar al autor Bjorn Lynne, popero no obtuve respuesta.
También vi que en el Discord de la universidad, había un compañero que se ofreció a ayudar con los sonidos, pero al escribirle tampoco tuve respuesta.
El tema del audio quedaría un poco trabado hasta marzo. Ninguno de mis enfoques, ni para la música, ni para los sonidos me convencía. Había que esperar…
Febrero 2024
Leon decide que el juego no debe tener tiempo, ni timers, ni nada que cause apuro, la idea del juego es relajar… así que toda la implementación de las pantallas para los tiempos es descartada. Y tuve la sensación de que está bien así… por alguna razón el tema del cálculo del tiempo no estaba funcionando.
Marzo 2024
Se ve que en febrero no hubo avances significativos.
Lo bueno es que en marzo me di cuenta de que un email de Bjorn Lynne (El músico) había quedado perdido en algún lugar de los emails, así que lo contacté y licencié Andante para el juego!!!
También logré contactar al sonidista Nacho via Instagram. Y también lo contraté para que haga los sonidos del juego.
Andrés, un compañero de la universidad, me sugirió que los tableros tengan al menos una solución. La verdad es que la idea me pareció buena, pero la implementación la encontré super complicada. De modo que esta característica la puse en pausa. Y además al ver que en el juego original especificaba en las reglas que los tableros eran generados al azar, decidí casi descartarlo.
Llamativamente, con algunos features, sentí algo metafísico. Algo así como que si la implementación se traba, es porque no debía ser. No lo se… pero escribí esto:
“Como viene pasando, la idea que sugirió Andrés no funcionó. Parece que cuando algo no fluye con este software, es porque no está destinado a estar ahí. Después de intentar y luchar un montón buscando maneras de determinar si las partidas podían tener solución, e incluso construyendo un pequeño modelo de madera y papel para explorar posibilidades, decidí leer las instrucciones y resultó que la colocación de las piezas es 100% aleatoria. Así que lo voy a dejar como estaba originalmente y lo haré 100% aleatorio, sin ningún tipo de verificación. Cada vez que pasa algo así, siento un gran alivio y una gran felicidad. El proceso o mecanismo es así: idea -> bloqueo de implementación o bloqueo de creatividad o insatisfacción con el resultado – bloqueo, bloqueo, bloqueo -> darse cuenta de que no encaja, no es adecuado o simplemente no -> descartar -> felicidad.”
Abril 2024
Nacho logró terminar los sonidos y quedaron geniales!
Dato de color (o sonoro…), resulta que en uno de los sonidos le mandé como referencia una canción secundaria del última 3, y generó unos sonidos super parecidos. Es un genio del audio!
En este mes también logré agregar la pantalla final del juego.
Mayo 2024
Hubo un problema con la carga de los archivos CSV, en la versión de iOS, pero se solucionó facil.
También pasé mucho tiempo entendiendo el modo Window vs Full screen en la versión de escritorio. Así que quedó la versión full screen.
En este mes también se decidió el nombre: Leon’s Mahjong. Y decidí redibujar todas las piezas, cosa que tomó un tiempito.
No está conectado, pero para el final de mayo, me cerraron mi canal de YouTube, y eso me afectó anímicamente.
Junio 2024
El 1ro tenía las esperanzas de poder lanzar el juego a finales de mes. Pero no…
Al probar el juego en diferentes resoluciones de teléfonos, iPads y desktop tuve que ajustar la UI significativamente para que se vea bien en todas las pantallas.
Definitivamente, esto es un elemento de complejidad de nuestros tiempos. Antes no pasaba, o tal vez apenas, si se porteaba de una computadora a otra. Pero ahora, con los teléfonos que tienen distintas resoluciones y aspectos, más las tabletas, más las computadoras de escritorio, bueno, es complejo.
Aparentemente para el 15 de junio ya estaba todo listo.
Para el 16 ya había conseguido tener la cuenta de developer en Apple! La idea era lanzarlo en el App Store para iPhone, iPad y macOS.
Pero el 17 los planes se vieron ofuscados porque algo se rompió en el Test Flight (el software que se usa para probar las apps)
Luego de contactar a Apple, el 22 de junio quedó solucionado el tema del Test Flight, de modo que varias personas pudieron comenzar a probar el software en sus teléfonos y sus computadoras!!
El 25 de junio Leon encontró un bug, bastante complejo de reproducir, y por suerte fácil de solucionar.
Para el 29 el bug ya estaba solucionado, pero volvió a aparecer el error en Test Flight de modo que tuve que contactar a Apple de nuevo. Es curioso que en la entrada del dev-log siento que hay una fuerza sobrenatural que trata de impedir el release de esto! Porque justo también hubo un tema en el hosting al registrar el dominio para el juego (que previamente era un subdominio de lucasdima.com )
Julio 2024 (el mes del zoom, pinch y pan)
Muchas cosas este mes!
Mi amigo y colega Andrey Smelov me contó que se compró un iPhone, así que lo incorporé a los testers (es el único tester fuera de la familia!).
También descubrí que la intro no se veía 100% bien en determinados iPads, de modo que tuve re-acomodar toda la intro.
Cambios de último momento:
- Cambio en las funciones que detectan el touch en Unity.
- Por feedback de mi hijo Lautaro y mi amigo Andrey, decidí hacer un videotutorial. Se ve que el texto no es gustó!
Zoom y pan
Esto fue tremendo. A Leon se le ocurrió que sería bueno que se pueda hacer zoom, y bueno, allí fui a investigar un poco.
Resultó muy complejo lograr hacer un zoom y pan que me convenciera, que se vea igual al zoom y pan de la aplicación de fotos de Apple. Es increíble la cantidad de cosas a tener en cuenta para que una funcionalidad que parece sencilla se vea y se sienta natural. Esto involucra suavizar movimientos, especificar el centro del zoom, poner límites para el paneo, y otra gran cantidad de cosas.
Leon me ayudó con unas funciones matemáticas para calcular el lugar de la cámara, fue super gratificante verlo hacer cosas matemáticas con aplicaciones reales en el software!
Luego de varios días, casi semanas de lidiar con esto, al final llegué a una solución que me pareció muy buena.
Algo a destacar, en desktop decidí no agregarle zoom, basicamente porque no logré captar el pinch del Touchpad de la mac en Unity. Y me rehusé a usar la “ruedita”, que con el touch es otro gesto.
Por alguna razón en iOS igual lo veía medio tosco el movimiento, y no lograba detectar que era, hasta que luego de reimplementar todo de una manera ultra sencilla (hasta busqué mis apuntes de las clases de Art and Coding para implementar un movimiento suave), me di cuenta que el problema eran los FPS en iPhone, de modo que una sola línea de código logró que el movimiento se suavice:
Application.targetFrameRate = 60;
Agosto 2024
Ya solucionado el zoom y pan, solo agregué botón en la configuración para deshabilitar el zoom. Y unos detalles como agregarle un cuadro negro semitransparente al texto que luego del zoom queda bajo las piezas.
Un detalle adicional que incorporé fueron algunos hints al azar que aparecen en la intro. Con tips del juego, y alguna que otra cosa graciosa que puedo comunicar.
Luego fue todos los preparativos para el App Store, esto incluye algunos videos, y capturas de pantalla. Y la complejidad de la cantidad de resoluciones diferentes… 3 para iPhone, 3 para iPad y 1 para desktop. También aquí hubo un tema de colores, por alguna razón, los videos capturados con el teléfono y procesados con la app de fotos de la mac se veían todos lavados en el render de DaVinci Resolve. Por suerte al exportarlos directamente, sin modificarlos en la app de fotos se veían perfecto.
Ahora si, todo listo para el lanzamiento.
El lanzamiento!
El 7 de agosto por la mañana, luego de revisar todos los videos, textos e imágenes, mandé el juego a que sea aprobado por Apple. El 7 a la tarde, y el 8 a las 3am hora de Berlín, las versiones de iOS y macOS fueron aprobadas por Apple sin problemas.
Felicidad absoluta!
El hecho de tener un juego publicado es maravilloso. Tomó un año, y la sensación es realmente gratificante! Lo volvería a hacer!!
Algunas reflexiones
Llamativamente la lógica del juego no tomó nada de tiempo comparado con todos los preparativos para publicar, UI, detalles del zoom, sonidos, música, etc. Es una pauta general del gran esfuerzo interdisciplinario que es hacer un juego. Y que uno por más que tenga un gameplay medianamente funcionando, todos los detalles de alrededor que hacen al todo demandan una gran cantidad de tiempo y esfuerzo.
Próximos pasos
Volviendo al tema de que las partidas tengan al menos una solución posible, también sugerido por otro amigo (Andrés y ahora Cristof), voy a investigar esto más en profundidad.
Agregar más boards! Esto debería ser muy sencillo, porque como ya conté los boards se definen en un archivo CSV. Solo tendría que modificar la pantalla de inicio para que muestre más boards.
Lanzar una versión para Steam (Windows y Linux).
Lanzar una versión para Android.
Para estas cosas, creo que necesitaría una PC y un teléfono con Android. Veré como resolver esto.