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.

Mini-reseña de Nade

Hace tiempo que no hablo sobre lo que estoy leyendo por acá. El caso es que hay montones de personas hablando de libros, en blogs, en youtube, en todas partes, y todas hacen más o menos lo mismo: promocionar grandes autores que no necesitan más promoción. No me malinterpreten, soy un fan a muerte de Brandon Sanderson, Joe Abercrombie y compañía, pero ellos ya son famosos y tienen detrás una maquinaria de publicidad. No critico a quienes los recomiendan y reseñan sus libros, de hecho, yo los recomiendo y los seguiré recomendando, pero nada que no queda en unas breves palabras.
Hoy les daré mi opinión sobre el trabajo de una amiga que igual que yo, ya  diferencia de Sanderson y compañía, no tiene detrás esa maquinaria publicitaria. Ambos estamos incluidos en el catálogo de la Editorial Guantanamera, más que incluidos, tirados en la parte de atrás, olvidados. Una pena, porque Nade, de Malena Salazar, es un librito que merece mucho más. Incluso, recibió el Premio David en el 2015 y ha recibido elogios de personas muy críticas y exigentes.
En fin, que luego de esperar en vano que la versión impresa llegara a Santiago durante largo tiempo, tuve que pedirle a Malena que me remitiera una copia digital. Y para entrar en materia, Nade es una novela relativamente corta, que se lee muy rápido y capta el interés. Como novela corta, quizás algunas cosas se hayan quedado fuera en opinión de algunos, pero a mí no me parece y no echo de menos nada. Me gusta el manejo de algunos personajes, sobre todo ese malo que se gana el odio desde sus primeras páginas, y cómo la intriga y el misterio se mantienen hasta el último momento.
No está mal para una primera novela, y como suelo decirle a su autora, hay que pensar siempre que las siguientes serán mejores. Así que este es uno de esos libros que recomiendo sin lugar a dudas y me alegra que se escriba ciencia ficción de este calibre en Cuba.

Novela concluida y otras noticias

El trabajo inicial en mi quinta novela ha concluido. Esta es la segunda parte de Despertar: Séptimo, que sigue acumulando buenas opiniones entre los lectores. El post promocional ya ha sido actualizado con la reseña de Raúl Aguiar que mencioné hace unos días.
Ahora empieza el proceso de pulir, dejar reposar, y volver a pulir, en el que intervienen los lectores cero. Esta vez se han sumado algunos más. También espero contar con un poco más de tiempo, la primera parte salió algo prematura, sin retoques y sin una revisión profesional.
Además, les aviso que está disponible un nuevo número de la revista Korad, que les recomiendo que no se pierdan. Ese cuento de Umberto Eco incluido es una delicia.

Qué rayos es la espada de Brienne y otras divagaciones tácticas

Spoilers ahead! Vamos a hablar del episodio 4 de la 7ma temporada de GoT. Primero, un detalle curioso: ¿qué rayos es la espada de Brienne Tarth? A primera vista, parece una espada de hoja ancha (broadsword). Utilizada entre los vikingos, por ejemplo, la espada de hoja ancha es la típica de los caballeros. Es para una sola mano y se usa como arma de corte, mayormente.
La espada que emplea Brienne mientras entrena es más o menos así, salvo que su pomo es el de una espada larga, o casi. Es tan alargado que puede empuñarla con las dos manos, lo cual es raro. Y es raro porque los caballeros casi siempre llevan escudo, y es muy difícil dar mandobles cuando tienes la mano torpe enredada en un escudo. En fin, que mejor dejamos el tema.
Vamos a analizar la batalla siguiente, que al fin le da algo de vida al capítulo (y a Daenerys). A diferencia del despropósito que fue La Batalla de los Bastardos, en esta ocasión los guionistas se han redimido un poco (solo un poco).
Empecemos. Daenerys decide atacar la columna de los Lannister, no queda claro si por consejo de Jon, una obvia movida que ya se me había ocurrido a mí desde el capítulo anterior. Lo cual evidencia que soy un genial estratega militar, modestia aparte. Para ello, manda a sus paracaidistas dothrakis (no hay otra forma de explicar que llegasen tan rápido a donde están los Lannister) a cargar. Los paracas, que no les va eso del sigilo, cargan desde diez kilómetros de distancia y se les oye venir con antelación suficiente para que Jaime forme a su tropa en fila, escudos por delante, armando una muralla de escudos. No tengo experiencia de qué tan efectivo es un escudo en forma de lágrima en una muralla de escudos (los sajones usaban rodelas, y las legiones romanas, ya sabemos lo que usaban, porque sale en Asterix y Obelix), así que no hablaré del tema.
Tras la fila de infantes se disponen los arqueros, otra buena. Los arqueros son tropa que no lleva escudo y es más difícil de entrenar. Un buen arquero no se hace en tres días. Lo que sí no me queda claro es qué sucede con la caballería. La caballería es otra arma que debías cuidar en una batalla medieval, porque era muy cara. Lo mejor es mandar a los infantes, que son más baratos, y apoyarlos con caballeros, no lanzar tu caballería contra cualquier cosa. Salvo que seas dothraki, que naces con un caballo asignado y como vas casi en cueros, no gastas mucho en equipo.
En fin, que los paracaidistas dothrakis cargan, y los infantes Lannister sacan sus picas por delante, otra estrategia de manual (si vienen caballos, sacas las lanzas con la punta por delante). Pero hete aquí que Daenerys hace trampa y se aparece con uno de sus bombarderos A-10. Con un par de escupidas desguaza la muralla de escudos tan linda, cunde el pánico, entran los paracas y se forma un pifostio de cojones.
Para no chamuscar a sus dothrakis, la khalesi se dedica a incendiar las carretas de suministros, en vez de largarse o sentarse a ver la batalla desde un lugar seguro, tomándose un martini (con aceituna, agitado, no revuelto). Yo, en lo personal, habría dejado los suministros intactos, para llevármelos después. Que con lo dura que esa la cosa, no es como para ir quemando comida a mansalva. Pero no, los quema todos como si no hubiera un próximo capítulo.
De paso, le da tiempo a Jaime, que aunque manco, no es bobo, de decirle a su secuaz Bronn: "Ve y saca ese SAM tan molón que le compramos a los soviéticos y túmbame a ese bicho volador, yo no puedo porque tengo que cambiarme de calzoncillos y con una mano eso es complicado". Luego de discutir la orden, Bronn se va y despliega el SA-1 Escorpión. Le hace un par de tiros al dragón y logra darle con uno. Moraleja: retira tus dragones a tiempo, son un arma muy poderosa, pero imposible de reemplazar, y su objetivo es causar grandes daños y terror. Especialmente doloroso el momento en que Bronn pierde un montón de dinero. Me solidarizo con su pesar.
En fin, que la movida era la única jugada lógica. ¿Atacas mis aliados? Ataco tus ejércitos en movimiento, si no puedo hacer otra cosa. La estrategia es casi creíble (en mi humilde opinión), y a decir verdad, la batalla es divertida porque todos queremos ver cómo la khalesi le devuelve el golpe a Cersei. Ahora toca esperar a ver qué nos reservan los próximos capítulos.

Primera reseña de la novela

Hace dos días recibí de Raúl Aguiar la reseña de la novela, que le había solicitado hace un tiempo. Raúl, uno de los escritores más destacados de la CF cubana, y además profesor del Centro Onelio (que forma a las nuevas generaciones de escritores cubanos), accedió gentilmente a leerse mi libro, y al fin tengo sus opiniones. Las mismas serán publicadas en la revista Korad, supongo que en el próximo número.
De momento les diré que Raúl tiene una opinión favorable del libro, lo cual me ha alegrado mucho. Sí echó de menos un mapa, algo que yo también quisiera tener y veré si puedo solucionar para la segunda parte. Si es que se acepta su publicación, pues aún no tengo confirmación al respecto.

Vacaciones

Llega agosto, con vacaciones bien necesarias. Estaré ausente unos quince días a  partir del lunes, período que aprovecharé para holgazanear en casa. Y de vez en cuando, para trabajar en mis proyectos.
Es muy posible que a la vuelta, quizás antes, venga ya con la beta pública del Laberinto del Saber.