¡Gran error!

En estos días he estado trabajando contra reloj para pulir El Laberinto del Saber. El juego no estaba tan terminado como yo pensaba y faltaban por arreglar un montón de pequeños detalles. Algunos se derivan de cambios en Android, por ejemplo, lo que antes era el botón de Menú, ahora suele activar la lista de aplicaciones. Por tanto, no sirve para pausar el juego. Tuve que escribir a toda prisa una variante. La cual, de paso, introdujo más problemas, esta vez derivados del UI.
El UI en cuestión es el tema que me ha tomado el 90% del tiempo de desarrollo dedicado a pulir. Conseguir que el juego se vea igual, independientemente de la resolución ha sido bastante complicado. Y otra vez, los cambios en los teléfonos, los aumentos de resolución y los cambios de relación de aspecto me han puesto la cosa fea. Aún no estoy seguro de que funcione bien en todos los dispositivos.
Mientras arreglaba lo anterior, rompí el control de movimiento. Y lo peor fue que hice un build y lo repartí a todo el mundo, sin haberlo probado yo antes. Ni siquiera en el editor. El juego era completamente injugable y yo no lo sabía. Un grave error que trataré de no cometer otra vez.
Al final, tuve que sustituirlo por uno que bajé de la Asset Store: el Joystick Pack (genial, lo recomiendo). Lo cual, obviamente, introdujo más problemas. Que por suerte, logré solucionar anoche... solo para encontrarme hoy que había otros. Simplemente, mi sistema no había sido diseñado para los joysticks virtuales del ese asset en concreto.
Conclusión, más de una semana de trabajo, aún cuando casi no introduje funcionalidades nuevas. Solo arreglos de bugs, arreglos del UI, etc. Para más desgracia, cuando actualicé el Unity en casa perdí la posibilidad de compilar proyectos para Android. Durante la primera compilación, Unity descarga algo del gradle, y si actualizas Unity, aunque sea a una versión de la misma rama, eso se pierde. Ahora debo conectar la PC de mi casa a Internet y volver a hacer un build, lo cual no pienso hacer hasta que instale el Unity 2019.3. Según las noticias de hoy, unas 110 mil familias en Cuba ya tienen internet en casas, pero yo no estoy entre esos afortunados.
Ahora estoy en espera de que los dos beta testers encuentren más errores, para seguir en la lucha.

UIElements

Hace unos días hablaba acerca de los constantes cambios de Unity, y una de las cosas que mencionaba era la introducción de UIElements como sistema UI unificado para juegos y personalización del editor. Tener una interfaz de usuario decente ha sido una asignatura pendiente de Unity desde hace tiempo, un apartado que fue mejorado un poco a partir de la versión 4.6. Sin embargo, ese nuevo UI, aunque era un gran cambio, tampoco es que fuera una maravilla. En mi opinión, es la cosa más contraintuitiva que he visto en mi vida. Pero supongo que valen más las opiniones de los expertos y de los propios desarrolladores de Unity, que lo consideran lento e inadecuado.
UIElements llegará en estado casi usable en la 2019.3, incluyendo una herramienta que se ve genial, al menos en video (en la vida real, las cosas tienden a no ser tan simples como se ve en los videos). Recomiendo que vean dicho video para que se lleven una idea, seguramente se quedarán con ganas de tener ya este nuevo sistema a su alcance.


El progreso ha llegado, tenemos 4G


El idilio de Cuba con la 3G ha sido bastante breve. Al parecer, hemos alcanzado el punto de saturación bastante rápido, y aunque en un principio se habló de velocidades de hasta 7 mbps, en los últimos tiempos era casi imposible navegar o incluso acceder al correo vía pop/smtp. En mi opinión, lo lógico hubiese sido saltar directamente a la 4G en vez de usar una tecnología ya obsoleta, pero como pueden imaginarse, mi opinión no le importa a nadie. Además de que hay que considerar que acá aún existe la televisión analógica, que ocupa frecuencias necesarias para la 4G y que debe ir desapareciendo, pero no antes del 2021.
Para los que me leen desde afuera (o sea, no Cuba), cambiar de TV aquí no es tan fácil. De hecho, pese a mi salario privilegiado, me costó una buena dosis de suerte, vender mi TV viejo, y ahorrar mucho, para poder adquirir un TV de 32 pulgadas, con receptor digital integrado. Háganse la idea, señores, hay decenas de miles de jubilados que no pueden cambiar su televisor, gente que no trabaja, y gente que aunque trabaja, apenas le alcanza para llegar a fin de mes.
Un colega, que trabaja en la única empresa telefónica del país, me había hablado en términos muy elogiosos acerca de la 4G, que empezó a desplegarse de forma limitada hace unos meses. No hay comparación, me decía. Pude comprobarlo al fin hace unos días. Luego de algunos problemas debido a que mi teléfono no era validado como 4G, logré que fuese aceptado y se me habilitara el servicio. La cobertura no es muy amplia, pero cerca de mi casa hay un área cubierta y la velocidad es realmente impresionante. Pero más importante, está menos saturado y la conexión se establece mucho más rápido.
No he podido probar el tethering a fondo, porque lamentablemente, el costo de navegar por datos móviles es bastante alto y ahora mismo, no puedo permitirme esos lujos muy a menudo. Sin embargo, creo que podría usarlo para cosas sencillas como revisar el correo y quizás hasta echar una partida breve de Champions of Regnum todos los días, para asegurar los premios diarios. Conclusión, que lo único que me impide disfrutar a fondo de esta maravilla, como siempre, es el finaciamiento.

Elementos para la trama de una novela


Hace algunos meses impartí una conferencia al grupo de aficionados a la CF y Fantasía acá en Santiago de Cuba, en la cual traté el tema de los elementos que componen una buena trama. Había olvidado el asunto, hasta hace unos días, que decidí convertir la conferencia en un artículo para el blog, y aquí está.
Hay un conjunto de detalles que hacen  que una novela sea interesante, pero en esta clase, o tutorial, de hoy, les hablaré solamente de uno. Toda novela de aventuras, ya sea de fantasía, ciencia ficción, o un thriller militar como los del viejo Tom Clancy, está construida alrededor de una cosa: conflicto. Hagan memoria y estudien las mejores novelas que hayan leído. Miren los grandes éxitos de los grandes escritores. El núcleo de la novela más grande y épica de la actualidad (en mi opinión), El Archivo de las Tormentas, escrita por Sanderson, uno de los tipos más originales del mundo, es tan viejo como andar a pie: el conflicto entre el bien y el mal. El núcleo de la novela más grande y épica de finales del siglo pasado, La Rueda del Tiempo (que veremos algún día convertida en serie de TV) de Robert Jordan y concluida por el mismo Sanderson, es conflicto entre el bien y el mal. Y Canción de hielo y Fuego, de George R.R. Martin está construida alrededor de múltiples conflictos entre... un montón de gente que ni es buena ni mala, solo pasan de caerte bien a caerte mal según los designios del autor. Salvo Jon Snow, claro. Ese solamente es imbécil.
Aunque a estas alturas y todos deberían tener una idea de qué es un conflicto, de todas formas voy a dar una definición simple y concreta: dos o más partes quieren algo y solo una puede conseguirlo. Es muy sencillo, como pueden ver, pero extremadamente importante, porque el lector, que es muy chismoso, querrá saber cómo se resolverá el problema. Es que a las personas, por alguna razón, nos gusta ver enfrentamiento, lucha, peleas... siempre y cuando sea otro en implicado. Si olvidamos plantearlo correctamente, ya sea por mala planificación o por otras razones, será mejor que la novela tenga otros puntos fuertes, pero muy fuertes.
El conflicto, aunque simple, debe poder dar suficiente jugo. No puede ser de fácil solución, para garantizar que las partes en pugna pasen por un sinnúmero de dificultades, que son las que al final, ayudan a llenar páginas. No basta plantearlo, hay que desarrollarlo.
En una novela, el conflicto determina en gran medida el público objetivo, el tipo de lector que consumirá tu obra. Cada segmento de mercado está determinado por ciertos factores: edad, sexo, educación, gustos, y otros. Por ejemplo, el 90% de los hombres no ve telenovelas, porque la historia de la jovencita pobre que se enamora del galán rico, mientras la ex-novia malvada le hace la vida imposible les parece tonta. En cambio, les llama la atención que Jack Bauer corra detrás de unos terroristas, matando a diestra y siniestra, para detener una bomba atómica o la dispersión de un virus. Y no me dirán que eso es menos tonto que lo anterior. Por eso hay gente que le encanta una historia de un vampiro que se pasa varios volúmenes zorreando con una imbécil (familia de Jon Snow, probablemente) sin acabar de follársela. U otros a los que les gusta la historia de uno que para follarse a la protagonista, primero tiene que darle unos latigazos o algo así. No quiero ni pensar qué le haría si la comida le queda mal hecha o no lava bien la ropa.
En fin, que hay lectores para todo (hablando de lo cual, me pregunto dónde estarán los míos). Pa concluir, una advertencia: hay una diuferencia muy grande entre saber y hacer. Quizás te hayas leído esto y pienses: "ahora sí voy a escribir la saga que dejará chiquita a Canción de Hielo y Fuego, y Netflix me va a hacer una serie". Pues no. Siempre hay chance a pifiarla en grande, aún sabiendo todo esto. A mí me ha pasado, y tal vez los grandes también tengan sus esqueletos en el armario, o en este caso, sus manuscritos mierderos bien ocultos. Pero tranquilos, que en alguna ocasión les saldrá bien.
Y en otro orden de cosas, les recuerdo que compren la novela. Si no, Jack Bauer irá por ustedes y los torturará haciéndoles cosquillas en los sobacos.


Unity, un blanco en movimiento

A partir de la versión 2020.1 de Unity tendremos UI unificado: el nuevo UIElements que recién acaba de presentarse, podrá ser usado también en juegos. Utilizado inicialmente para personalizar el editor, en sustitución de IMGUI (una mierda infumable y mal hecha), UIElements se llevaría por delante también al sistema que reemplazó IMGUI en los juegos a partir de la versión 4.6 de Unity.
Conocido como el nuevo UI, era un intento por hacer algo más o menos profesional, con una herramienta de diseño integrada en el editor. IMGUI se manejaba a golpe de código y es una sorpresa que un motor de juegos dependiese de una chapuza así durante tanto tiempo. Y más sorprendente aún es que se hiciesen buenos juegos con ella.
UIElements es relativamente simple de entender y he hablado del tema antes. Es muy cómodo usarla ya sea desde el código o mediante un subconjunto de CSS (USS) y XML (UXML), pero además de eso la 2020.1 traerá un editor de interfaz que ahorrará trabajo de hacerlo a mano.
Lo que me resulta un poco molesto en este asunto es que Unity se está convirtiendo un blanco demasiado móvil. El Unity que tendremos al finalizar este año será muy diferente al que teníamos a finales del 2018, y los cambios a principio del 2020 bastan para poner nervioso a cualquiera. Si estás trabajando en un proyecto con fecha de salida, puedes amarrarte a una versión hasta que lo termines y salga a la venta. Pero si estás aprendiendo y haciendo pruebas, creando prototipos o cosas así, te sentirás como si fueras montado en un auto que va a toda velocidad, mientras los mecánicos cambian piezas sin detenerse. Las ruedas de hoy podrían no servir mañana, y las ruedas de mañana podrían ser tan diferentes que impliquen un cambio en el modo de conducir.
El nuevo sistema de paquetes es una especie de ruleta rusa. Es mucho mejor quedarte con lo que sabes que funciona, porque actualizar un paquete preview puede romper algún otro. A fin de cuentas, está marcado como preview. Pero el caso es que el 90% de lo que hace a Unity interesante ahora mismo, es preview. Lo demás, es más o menos lo mismo desde el 2017.
Así que es mejor pecar de conservador y no de audaz, si alguna funcionalidad experimental te funciona, ¡no actualices! Por lo menos hasta que salga de preview.