A partir de mañana se extiende el servicio de Internet en Cuba

Quizás no podamos decir que el 29 de septiembre es el día que arrancó el servicio de Internet en los hogares cubanos, porque el mismo ha estado dando vueltas de una forma u otra (pruebas piloto, comercialización limitada), pero sí es una fecha significativa. A partir de mañana, 17 consejos populares (o barrios) en 7 municipios del país, podrán contratar Nauta Hogar, siempre y cuando dispongan ya de teléfono fijo en casa.
La oferta, esperada desde hace años, ha sido mejorada en base a las críticas de los participantes en la prueba piloto, pero aún así adolece de carencias y no está al alcance del bolsillo trabajador, a menos que aprendas a vivir sin comer y no te moleste andar desnudo y descalzo. La anterior oferta arrancaba en 128kbps a $10 CUC (pueden asumirlo como $10 USD), que fue casi de inmediato subida a 256kbps, siendo la siguiente velocidad 512 a $30 o $40, hasta llegar a 2mbps a $115 mensual. Ahora la velocidad mínima es 1mbps, algo un poco más decente y acorde con los requerimientos de la internet moderna, aunque no deja de ser insuficiente y que muy pronto será obsoleto.
El pago mensual cubre solo 30 horas, las horas adicionales se pagan a $1.50 CUC. Esto es algo que no ha cambiado, quizás porque las críticas se centraron en las velocidades de acceso, que era lo que más preocupaba a los usuarios normales. Para ellos, Internet es solo una vía de comunicación, algo así como un teléfono moderno, y una o dos horas al día les basta para un poco de chateo en Facebook o una conversación por Imo. Para el usuario avanzado, que utiliza la red como fuente de información, 30 horas son menos que nada.
Pero menos da un ladrillo, así que toca conformarse y criticar, a ver si la todopoderosa ETECSA mejora la oferta con más horas y menor precio. De momento, Santiago de Cuba se queda fuera, como siempre, pero como no tengo teléfono ni posibilidades de pagar el servicio, tampoco me apura que llegue.

Documental: La historia de The Witcher

Un poco tarde, pero no podía dejar de mencionar este genial documental sobre la historia del videojuego The Witcher, que abarca desde un primer proyecto cancelado, hasta la fallida versión para consolas. Todo ello narrado por los protagonistas de la historia, con arte conceptual y videos de los prototipos.En polaco, pero subtitulado en inglés.


ScriptableObjects

Los ScriptableObjects son unmecanismo de Unity que solemos descubrir más o menos a nivel medio. Son una forma de serializar y almacenar información, ya que las estrucutras de datos normales no guardan los valores que les pones en el editor o entre corridas del proyecto.
Casi todo el mundo empieza utilizando XML o JSON hasta que descubre los SriptableObjects. No voy a entrar en detalles técnicos, porque los tutoriales sobran por ahí. Mejor hablaré de cómo me ha ido con ellos.
Nuestra relación ha tenido altas y bajas, y probablemente las seguirá teniendo. XML fue mi primera opción para guardar definiciones de personajes, objetos y habilidades: es flexible y todos lo conocemos a fondo. En cambio, los ScriptableObjects son clases, por tanto tienen una estructura fija. Como ventaja, ofrecen que son más "naturales" para Unity: pueden ser asignados desde el editor y utilizados como cualquier otro asset. Otro detalle que puede causar problemas es que un ScriptableObject retiene los valores asignados. Por ejemplo, en mi caso tenía la definición de las habilidades en ScriptableObjects y me sucedía que cada vez que ejecutaba el juego, el jugador empezaba con unos valores raros en los niveles de cada una, en vez de inicializados a cero. Luego de romperme la cabeza durante un largo tiempo, descubrí que como estaba usando los objetos directamente, éstos retenían el valor de la última ejecución. Y no solo el asignado por el jugador, como los NPC también usaban la misma instancia del objeto, el reguero era épico.
O sea, que no deberías usar un ScriptableObject directamente, sino como base desde donde sacar información. O solo hacerlo en caso de que no cambies los valores.
Mi último experimento con ellos fue crear un sistema de items, donde cada definición de un item ocupa su propio asset. Como les decía, el item  puede ahora tener sus propias funciones, y también aprovechar la herencia, derivando de una clase padre BaseItem otras clases especializadas, como ItemWeapon.
Después de todo esto, si me preguntan qué opción es mejor, ScriptableObjects o XML/JSON, pues yo diría que cualquiera de las dos. Al final terminas haciendo lo mismo: instanciar objetos a partir de la información. Los ScriptableObjects son marginalmente superiores por ser assets, en mi opinión (que podría cambiar en el futuro y no debería ser tomada como verdad absoluta) y por ello los seguiré utilizando, pero no dudo que cualquier programador podría encontrar alternativas a esto usando XML/JSON. Lo recomendable es conocer ambos métodos.

Configuración de gráficos

Y como les decía ayer, dediqué un rato a jugar con al configuración gráfica del proyecto, más que nada para probar cosas y ver qué funciona. Unity por defecto trae varios niveles de calidad con un montón de parámetros, pero por supuesto, nadie los usa directamente. Lo más adecuado es ofrecer al jugador la posibilidad de ajustar a gusto cada parámetro, en vez de darle niveles predefinidos.
El gran problema aquí es que son una docena de cosas que se pueden cambiar, y quizás algunas no sean relevantes según el tipo de juego. Al respecto no he logrado encontrar información concreta, por lo que supongo que tendré que aplicar el método de ensayo y error.
Por lo pronto, los resultados que he obtenido son un poco confusos. En casa, la diferencia entre la calidad máxima y la mínima es de 20 cuadros por segundo o más. Sin embargo, en un hardware más limitado, no conseguí ganar en rendimiento ni siquiera con la calidad reducida. Lo cual es muy jodido, porque en esencia, la idea es que puedas tunear el juego en caso de que tu GPU sea una basura integrada de Intel.
Pero bueno, ensayo y error, a ver qué sucede. Otro detalle que necesito mejorar es la usabilidad, hay algunas cosas que deben ser cambiadas a checkboxes, en aras de ser más intuitivas, como el modo pantalla completa y las sombras. La razón por la que no lo hice desde el principio es bastante tonta: porque no sabía y no me molesté en intentarlo. Pero ya va siendo hora de estudiarlo, junto con los dropdown, que también pueden ser muy útiles en ciertas situaciones.

Y al fin, solución para el Unity 2017 y su raro problema offline

El Unity 2017.1 tiene un raro problema al trabajar en modo offline: en realidad, no funciona si estás totalmente desconectado. En la oficina, donde hay internet (aunque limitada), tengo que desconectar el cable, activar el modo offline, cerrar, y volver a abrir el editor, esta vez con el cable conectado. En casa, de ninguna manera.
Sin embargo, ayer un amigo me dio una solución que solucionó todos mis problemas, y valga la redundancia. El truco consiste en abrir una escena del proyecto desde el explorador de Windows, en vez de ejecutar el editor mediante el acceso directo. Ya he comprobado que funciona en casa y he logrado al fin pasarme por completo a la nueva versión, que trae algunas cosas que me interesaban. Por ejemplo, ya puedo descartar el Visual Studio 2017, pues el Monodevelop funciona (desde la 5.3, si no recuerdo mal, me daba problemas el autocompletado). Sí, algunos dicen que el VS es mucho mejor, pero yo siempre he preferido las herramientas simples y funcionales. Visual Studio 2017 es cualquier cosa menos simple.
Bajo el capó, la 2017.1 trae cosas interesantes como el .NET 4.6, que en definitiva, para mí es más importante que Cinemachina, que es lo que ha sido promocionado hasta el cansancio por la compañía.  Algunos problemitas raros persisten: por ejemplo, el build se cuelga si antes no he dejado que se precalcule la iluminación global, algo que descubrí en la versión anterior, y que una vez que has hallado la solución, es un asunto fácil de evitar. Así que de momento estoy muy alegre con mi nuevo Unity, hasta que suceda algún percance que me haga tirarme de los pelos.
Aprovechando  el entusiasmo, implementé casi completo el sistema de configuración de calidad, pero de eso les hablaré mañana... o quizás el lunes.

Divinity Original Sin 2, Larian da el paletazo

Leí ayer que Larian Studios ha conseguido vender 500k copias de Divinity Original Sin 2 en apenas cuatro días, toda una proeza (sin mencionar que alcanzaron los $500000 solicitados en su campaña en un lapso muy breve). Yo aún no he podido echarle mano al juego, ya saben que aquí estamos fuera de... todo, aunque sí pude probar un demo hace un tiempito. Un buen RPG, que prometía mucho, y por lo que veo, ha cumplido con creces.
Si aún no sabes de qué va el juego, pues aquí está el trailer para que te pongas al día:

Yo, como desarrollador, me alegro muchísimo de su éxito, y como jugador también. Espero que eso les garantice seguir en el negocio para que puedan darnos otros buenos títulos como este.

Instalar net 3.5 offline en Windows 8/10

No sé por qué aún me sorprenden las cosas de Microsoft, luego de 20 años de lidiar con sistemas Windows. Quizás sea por su creatividad para producir las estupideces más ilógicas en el campo de los sistemas operativos, digna de mejores empeños.
Hace poco tuve una desagradable experiencia cuando el instalador de Windows y luego el Administrador de Discos destruyeron mis partitiones Linux sin preguntar (ni siquiera las veían). Y ayer, me vi otra vez enfrentado a un problema clásico: el framework .NET 3.5 era imprescindible para instalar algo. Los que usen Windows 8 y 10 seguro han visto esto: el sistema incluye el .NET 4, sin embargo, las aplicaciones que requieren el 3 no funcionan con ese. La solución oficial de Microsoft es que lo instales a través de Windows Update, ni siquiera dan un instalador offline, porque el que dan hace lo mismo: descargar el framework de Windows Update. Esto no es un problema si tienes internet sin limitaciones, pero si estás desconectado o en una red que deniega el acceso a WU, agradecerías tener a mano un instalador offline.
Y he aquí que ayer, luego de buscar una solución a este problema sin esperanzas de encontrar nada (ya había pasado por esto antes), resulta que me entero de algo genial: el instalador del .NET 3.5 está incluido en el DVD de Windows 8/10. O sea, que Windows Update no es necesario.
Hay que ser muy imbécil, digo yo, para mandarte a descargar de internet algo que puedes sacar del DVD de tu sistema operativo. Pero es Microsoft, y les diría que no se asombren, pero sé que seguiremos asombrándonos con otras tonterías como esta. Por lo menos tengo el consuelo de que el problema era fácilmente soluble, gracias a esta herramienta.

Sobreviviendo otro huracán

Que no será el último, seguramente. Esta vez, como la anterior, Santiago de Cuba escapó a los peores efectos del ciclón Irma, un categoría 5 con vientos de 280 km/h. Ni siquiera la lluvia fue particularmente intensa y no ha marcado una diferencia para los embalses de la región, casi vacíos.  Sin embargo, el centro del país sí fue golpeado con severidad.
Así vivimos acá, esquivando huracanes de año en año, sabiendo que algún día nos tocará el número ganador en esta lotería. Y en Santiago además, tenemos el exclusivo privilegio de padecer también temblores, con probabilidades de sufrir uno destructivo de verdad en algún momento.
De momento, solo queda esprar que la temporada ciclónica actual termine sin que nada suceda y nos llegue la breve tregua hasta el año próximo.

Volviendo a escribir cuentos

O mejor dicho, terminando un cuento. La verdad, no esperaba escribir más cuentos, porque creo que se me dan fatal, pero una amiga escuchó una idea que tenía abandonada y me animó a concluirla. El resultado lo analizamos ayer en el taller literario y el consenso general es que funciona bastante bien.
Aún me queda pulir y mejorar, porque lo que revisamos fue una versión preliminar terminada en media hora. El cuento es un engendro diabólico, mitad fantasía y mitad ciencia ficción, porque se desarrolla en dos mundos diferentes.
Como decía, la idea surgió hace varios años, pero la dejé inconclusa, y luego de mis malas experiencias con mis cuentos en el taller literario Espacio Abierto, decidí no incursionar mucho en los relatos. El año pasado lo intenté, para presentarme a dos concursos, pero como no obtuve nada, descarté definitivamente escribir historias cortas.
Sin embargo, algunos colegas acá han revisado mis trabajos y creen que no están tan malos, incluso hasta he valorado la idea de presentar un cuaderno con mis cuentos a alguna editorial regional. Ya veremos si consigo hacer realidad la idea, porque no está de más tener más publicaciones en el currículum.
En mi opinión, el gran problema de los cuentos es que si no eres un autor consagrado, es muy difícil sacarles dinero o conseguir reconocimiento. Cuando publicas en una antología no siempre se remunera al autor y tu nombre se pierde entre otros muchos integrantes. Para lograr ambas cosas hay que completar una docena o más para llenar un libro, lo cual no es difícil para algunos autores, pero no muy factible para mí, que por lo general estoy ocupado escribiendo novelas largas.
En fin, que tendré que revisar todas esas ideas inconclusas que tengo abandonadas, a ver cuál me sirve para completar mi colección de relatos.

Armas cuerpo a cuerpo vs armas de fuego

Parece que una de las reglas para ser superhéroe es utilizar el arma más inútil posible. Aunque el mundo ha evolucionado y se inventaron las armas de fuego, es más guay que vayas por ahí peleando con una espada, un par de palos o incluso con un arco. Supongo que algunos me dirán: "pero un artista marcial ágil y bien entrenado puede enfrentarse a un atacante armado con pistola", obviando el nimio detalle de que sí, puede conseguirlo, si la distancia es corta y su oponente no está igualmente entrenado, no es rápido de reflejos o está pensando en la próxima temporada de Juego de Tronos.
Como bien demostraron los cazadores de mitos, es imposible evadir disparos a varios metros de distancia, aún contando con la ventaja de saber en qué dirección aproximada irán los proyectiles:


¿Alguien se anima a intentarlo contra un arma en modo automático? ¿Con balas que viajan a 700 m/s?
La verdad es que cuando el equipamiento de un oponente te supera, hay muy poco que hacer, salvo buscar cómo anular esa ventaja. O correr muy rápido. Es casi imposible pelear a mano limpia contra un cuchillo y salir ileso, lo más probable es que sufras cortes o algo peor. En el caso de cuchillo contra armas de fuego, aún en el supuesto de que puedas moverte en zigzag con agilidad sobrehumana para esquivar los disparos, a medida que te acerques a tu adversario también se incrementarán sus posibilidades de acertar.
Con esto no quiero decir que disparar sea fácil. Mi escasa experiencia me demuestra que a veinte o treinta metros de distancia es bastante difícil darle a un blanco estático sin un buen entrenamiento.
No obstante, por muy maestro que seas, yo no apostaría a tu favor si tu oponente tiene un cuchillo (un palo ya es más pasable, con un poco de suerte quizás solo salgas con moratones) y tú no, o si tú tienes un cuchillo y tu oponente una pistola y además la ventaja de estar alerta y a distancia.
Quizás alguien diga: "a ver, solo necesito llegar cerca, y quizás una bala no baste para detenerme a corta distancia, sobre todo si llevo chaleco antibalas". Quizás. O quizás no. Vamos a suponer que tu oponente te acierte en un punto no letal, o que estés lo suficientemente cerca como para intentar usar el cuchillo. Aquí hay que tener un factor en cuenta: la capacidad de la munición de causar daños internos incapacitantes y dolor (el término poder de parada está obsoleto, me acabo de enterar). Un balazo podría derribarte, e incluso, de alcanzar un punto crítico (sí, sacando 1 en dos tiradas consecutivas del dado de 20), matarte más o menos rápido. Por ejemplo, un disparo en el brazo, que nunca es mortal en las pelis, podría ser letal si corta la arteria braquial, igual un disparo en el muslo que dañe la arteria femoral. En fin, que un simpel roce no letal podría sentarte de culo y ahí terminaría tu aventura.
¿Serviría de algo el chaleco antibalas? Si es de grado militar, puede que detenga una bala de fusil de asalto con sus placas cerámicas. Pero aunque no recibas heridas directas, aún tienes que lidiar con la energía cinética del proyectil (lo siento, la física es así, siempre jodiendo un buen guión), que se trasmitirá a tu cuerpo en la forma de un desagradable y doloroso golpe. Algo así como que te patee un caballo. No es que a mí me haya pateado uno alguna vez, pero no querría probarlo. Lo mismo del párrafo anterior, terminarías sentado de culo y con dolor.
¿Y si se arroja el cuchillo? La verdad, no tengo idea, pero no garantizo que eso sea tan letal como se ve en las películas. Yo preferiría conservar el cuchillo en mi mano, si es posible.

En fin, pelear con arcos y espadas contra armas automáticas queda bien en la TV, pero en la vida real, como en Juego de Tronos, cualquiera puede morir, y lo más probable es que muera el que lleva la espada y no el que lleva la pistola. En el hipotético caso de que te veas obligado a pelear en desventaja durante tus andanzas como justiciero enmascarado, trata de anular esa desventaja. Es perfectamente honorable que ataques a tu enemigo por la espalda (en modo furtivo, tampoco vayas de idiota dando gritos), que le escupas un ojo y que le arranques una oreja a mordidas. Recuerda que en la realidad, no existen los superhéroes.