Un breve video del prototipo de prueba que hice la semana pasada. Aparte de lo que implementé en esas dos noches de trabajo, agregué zoom y rotación de la cámara. Sin embargo, la rotación probó no ser una buena idea, porque requiere ciertos cálculos adicionales. Al girar la cámara, la orientación del pivote no coincide con la del personaje y causa que cuando te mueves hacia arriba, el personaje se desplaza hacia abajo. Soluble, pero completamente fuera de la idea.
Historia de los juegos hechos en Cuba
Me he tomado más de lo que esperaba (dos o tres meses más), pero ya está concluido y estrenado en Youtube:
El audio no es el mejor, porque mis condiciones de grabación no son nada buenas, pero creo que se entiende.
Reto de ayer: clon de Diablo Immortal
Hay días que uno amanece creativo. Como que se te sale el pájaro que todos llevamos por dentro. Luego de ver el gameplay de Diablo Immortal, hasta yo, que no soy fan de jugar en el teléfono (eso se lo dejo a mi hija) quise probar algo parecido. Y una conversación en el grupo de desarrolladores cubanos en Telegram me hizo preguntarme qué tan rápido podía hacer un prototipo, usando Godot.
La respuesta es un par de horas. Tengan en cuenta que es algo que no había hecho nunca, ya que no es lo mismo que hacer una cámara isométrica. En este caso, la cámara sigue al jugador, y el control de movimiento se hace mediante un botón en la pantalla. En esas dos horas logré implementar movimiento del personaje y animación, solo me falta orientar el modelo en la dirección del movimiento.
De paso, hice un pequeño experimento de rendimiento. El proyecto, con sombras activadas, corre a unos 52-53 cuadros por segundo en mi Redmi Note 7 y usa GL ES 3. También tuve un extraño bug cuando agregué la configuración de iluminación recomendada para exteriores, que resolví creando el Environment desde cero y cambiando solo el tonemap. Aún tendré que experimentar un poco más con eso a ver los valores correctos.
Feliz año nuevo
Y ya nos llega el 2021, mientras podemos dar el 2020 por perdido casi en su totalidad. Muchos planes cancelados, aunque de alguna forma cada cual se las habrá arreglado para hacer otras cosas. ¿Qué puedo decirles acerca de este año?
En general, he estado muy escaso de tiempo, y eso lo habrán notado los pocos que aún pasan por aquí. El 2020 empezó para mí con un cambio de Unity a Godot, el inicio de un proyecto, y la migración de El Laberinto del Saber. Todo eso, partiendo desde cero en el nuevo motor. Hoy el demo del Laberinto está casi terminado, en espera de algunos gráficos que faltan, y que se me apruebe la cuenta de desarrollador en Apklis, la tienda de aplicaciones de Cuba. Y eso es un tema que se merece un poco de atención.
Por primera vez en nuestro país se legaliza la venta de software, incluso sin necesidad de una licencia de trabajador privado. Sin embargo, no todo es color de rosas. Abundan los usuarios que se aferran a los viejos hábitos y que se ofenden porque creen que las aplicaciones deben ser gratis. Así, por sus cojones. Por tanto, han desatado toda una campaña de valoraciones negativas contra Almas Reencarnadas, el primer juego que cambió de gratis a pago, aunque su precio es ínfimo. Y es que los cubanos, cuando queremos ser hijos de puta no nos gana ni Donald Trump.
La comunidad cubana de desarrolladores de juegos ha logrado organizarse en este año que termina y ya contamos con un grupo de más de 100 miembros. Se está hablando de organizar encuentros en cuanto la situación lo permita, de desarrollo, monetización, unos premios a los videojuegos cubanos, etc. Todo eso a pesar de que el marco legal no nos favorece. Estamos lejos de tener una industria como tal, pero a eso llegaremos algún día. O algún siglo. No abundaré más porque el tema ya lo he tratado, pero en mi opinión, es de lo mejorcito que nos ha pasado este 2020 y un motivo de alegría para mí.
Volviendo a lo personal, he terminado otra novela, y de momento no hay otra concreta en planes. Sigo a la espera de Godot 4.0 para reiniciar el proyecto de RPG, que estrenará concept art muy pronto, pro eso tomará algunos meses.
Por tanto, muchas felicidades a todos. O todas, o todes, que hay que ser inclusivo o te buscas un problema y el fin de año no es para buscarse líos. Y sean educados, dejen un comentario con sus felicitaciones.
Mis experiencias como desarrollador freelance
Sí, he estado ausente durante meses, y es posible que lo siga estando. El tiempo no me alcanza para mucho, sobre todo por lo ocupado que he estado en un proyecto a pedido de un colega. La situación está apretada y el dinero hace falta. Pero como ya he dicho, de cualquier cosa se sacan lecciones, no solo dinero.
Ha sido toda una experiencia llevar le proyecto de principio a fin, con todos sus cambios y todas las dificultades que aparecieron por el camino. En concreto, la mayor cantidad de problemas se me han dado en el port para Android, en específico, los permisos. Las app de Godot no solicitan ningún permiso al instalarse, auqneu los tengan activados en la lista. Conclusión, que mi apk no podía hacer algo tan simple como obtener el listado de archivos de un directorio. Otro detalle, que ya conocía, es que a veces el apk no escribe archivos, y de pronto empieza a escribirlos sin problemas. No recuerdo haber enfrentado tantas dificultades cuando usaba Unity.
El proceso de corrección de errores ha sido pesado, tanto que da la equivocada impresión de que invertí más tiempo en pruebas y pulido que en el desarrollo como tal. Ha sido una lección de gran valor que tendré en cuenta en los otros proyectos, en especial el Laberinto, que está en fase beta ahora mismo. No importa lo sencillo que sea el proyecto, habrán problemas a montones. Así que no se quejen por los bugs de Cyberpunk 2077. No quiero ni pensar cuando me toque algún proyecto más complejo.
En general me he visto obligado a dominar mejor el UI de Godot, he tenido que aprender a usar las señales, saber un poquito más acerca de GDScript, sobre todo el uso de diccionarios, y quiás alguna cosita que se me olvide ahora. Todo eso me viene bien para un juego que en un mes o dos les mostraré.
¡Albricias! Podremos vender aplicaciones en Cuba
Pues eso. Según nueva resolución de nuestro Ministerio de Finanzas y Precios, las personas naturales y jurídicas podrán vender aplicaciones y servicios a través de Apklis (una suerte de Google Play local), Todus y Picta (una especie de Telegram hecho acá, que casi nunca funciona y un Youtube cubano, que igual que el original, nadie puede ver, porque sale muy caro). Ya sé lo que me van a decir. Vender aplicaciones es algo más viejo que cagar agachado en todo el mundo. Pero les recuerdo que usted está en Cuba, patria socialista, tierra de Fidel. Aquí no hacemos esas cochinadas burguesas de permitir que la gente se venda cosas unas a otras y gane dinero en el proceso. O no las hacíamos. Nada como una buena crisis para darte cuenta de que la economía, como toda ciencia, no entiende de ideologías.
La resolución es casi como una falda de ir a la iglesia pentecostal: no deja ver nada. Salvo decir que las personas naturales deben declarar sus ingresos a fin de año, no se aclara si se debe tener una licencia de trabajador privado, que hasta ahora siempre ha sido esencial para hacer negocios como freelancer. Seguimos en espera de más detalles, aunque la comunidad de desarrolladores está muy entusiasmada con el tema.
El gran problema que enfrentamos, aparte de legislación poco clara y restrictiva, es un país donde el comercio electrónico está en pañales. Otro asunto es que las personas no tienen hábito de comprar aplicaciones o servicios digitales a sus productores, es más fácil ir con el tipo de la esquina que te las pone en tu teléfono y te cobra un dólar. Redirigir ese mercado hacia el lugar correcto podría ser una tarea difícil.
En fin, que la vida es dura para los desarrolladores cubanos. Pero no podemos dejar de reconocer que se trata de un paso de avance en la dirección... digamos que correcta. Esperemos que los pasos sigan. Y que sigan en la dirección correcta para nosotros, porque ya sabemos que loq ue el estado entiende por correcto no siempre coincide con lo que entendemos nosotros.
Nuevo video en camino
Y como había prometido, ya he comenzado a planificar un nuevo video, sobre la historia de los videojuegos en Cuba. Lamentablemente, sigo bastante ocupado (y no, no estoy ocupado jugando), por eso no le puedo dedicar suficiente tiempo a la investigación del tema. Porque el asunto, aunque no lo crean, no es tan simple como parece. ¿Qué historia puede tener Cuba en los videojuegos? Pues sí que la tiene, ya lo verán pronto... o eso espero.
En este momento estoy llevando tres proyectos a la vez, aunque uno de ellos me consume más tiempo que la mayoría. Es un juego 2D de plataformas, del cual no puedo dar muchos detalles aún. El segundo proyecto es el port del Laberinto del Saber a Godot, que se ha complicado en algunas cosillas que deberían ser simples. Y el tercero es un experimento para un amigo, que reutiliza algunas cosas del Laberinto para crear una app de entrenamiento.
Cada uno tiene sus cosas y a su vez, me han servido para aprender más sobre Godot. No hay proyecto sencillo, y todos pueden enseñarte algo.
No me he muerto
Long time no see! He estado bastante ocupado pensando en proyectos, y de hecho, haciendo algunas cosas en esos proyectos. No he tenido tiempo para escribir ni unas míseras líneas, aunque tenía un tema que quiero tratar (espero hacerlo más adelante), ni para un video que está pendiente desde hace un mes sobre la historia de los videojuegos en Cuba.
En fin, para no hacer este cuento muy largo, les diré que he avanzado un poco en un proyecto 2D que estaba estancado, agregando escenas nuevas y la IA. En esto último me he encontrado algunos problemas, pero todo problema es una oportunidad para aprender. También me vi necesitado de trabajar mucho más con la interfaz de usuario de Godot, en un segundo proyecto, lo cual me vino muy bien. He consolidado un poco lo que sabía del tema y aprendido un par de cosas nuevos. Por supuesto, aún es una mínima parte de lo que necesito.
Si sacan cuentas, verán que no es suficiente para llenar todas estas semanas de ausencia. Bueno, es que no todo ha sido trabajo. Logré echarle mano al Wasteland 3 y completarlo me robó un par de semanas, una hora y media o más cada noche. A pesar de ciertos fallos, el juego valió la pena. No sé hasta qué punto atribuir los largos tiempos de carga y que el juego se congelase en ciertos puntos durante más de tres segundos a Unity. Para ser un título que no abusa de los gráficos su rendimiento deja mucho que desear, algo que no sucedía en el anterior.
Volviendo al primer proyecto que mencionaba, esperamos antes de fin de año tener algo muy sencillo que mostrar, y estoy seguro de que visualmente los sorprenderá. Sé que la recomendación viene de muy cerca, pero está aun nivel muy superior a todo lo que se está haciendo en el país actualmente, que no es poco. Pero de eso hablaremos en el próximo post. Le sprometo que no me tomaré un mes en hacerlo.
Más guiones estúpidos
En una ocasión anterior dije que parece ser imprescindible un alto grado de estupidez para ser guionista de Hollywood y lo ratifico. También ratifico que el grado exigido es bastante alto. Debe haber un doctorado para guionistas estúpidos en alguna universidad de Estados Unidos, porque las cosas que se ven últimamente son una delicia.
A ver, señores, que las películas de los 90 no eran gran cosa, la verdad. Todos íbamos a la sala de video esperando ver un paquete, donde el bueno, Van Damme, Seagal, o el que fuese, se batía en desventaja con una docena de secuestradores en un edificio, un barco, un tren, o lo que se terciara. Así, no había que inventar nada más. Eran unos tipos malos de manual, que entraban matando a alguien por gusto y les cogías odio sin más contratiempos. El héroe de turno mataba a los secuaces uno por uno, hasta llegar al jefe final, y todos nos íbamos a casa tan panchos, a esperar la próxima de Van Damme, Seagal, o el que fuese. Ninguna se ganó un Oscar, pero recaudaban bien y divertían.
Pero es que ya ni siquiera son capaces de hacer una variante de una idea tan simple y como ejemplo de estupidez suprema tomemos el caso de la más reciente de Bruce Willis, que ya está viejito, pero al menos hace bulto. Juzguen ustedes mismos: nuestro héroe de acción veterano millonario contrata a un grupo de mercenarios como escolta, porque espera una encerrona por parte de un terrorista en una visita a cierta fábrica abandonada. Lo que no les dice es que el ataque es 100% seguro (sí, flojea un poco el guión por ese lado), así que nuestros mercenarios buenos se verán superados en número y en armamento. Aunque el escuadrón de héroes supuestamente está compuesto por profesionales, los tipos se meten en la boca del lobo armados con pistolitas y sin protección de ningún tipo. Como lo oyen.
El Bruce Willis millonario y su jefe de seguridad, que saben lo que va a suceder, ni siquiera tienen la precaución de ocultar de antemano en el lugar un alijo de armas. Yo habría escondido armamento suficiente para detener una división de infantería con apoyo de blindados. Pero tampoco. En fin, que los protagonistas son tan borregos e ineptos, que se merecían que ganara el malo. Por imbéciles.
De tan risible, la trama no consigue que alguien medianamente inteligente se sensibilize con la situación de los protagonistas, odie a los villanos, y disfrute con las escenas de acción donde los primeros le dan una paliza a los segundos, como dios manda. Más bien a mediados de filme empiezas a preguntarte por qué coño estás perdiendo hora y media de tu vida en eso.
Si alguna vez escribes una historia, es bueno que te detengas a verificar la lógica y racionalidad de lo que pasa, o acabarás escribiendo sandeces como Hard Kill.
Horizon Zero Dawn, al fin
Hay un par de juegos de la buena (o mala) suerte. Cada vez que los instalo en una consola, lle ga un cliente y el equipo se vende. Son Diablo 3 y Horizon Zero Dawn. En el primero logré llegar a la segunda ciudad en una PS3, luego lo intenté varias veces y lo mismo. En Horizon, había estado a punto de salir de la aldea cuando la PS4 se vendió, dejándome a medias.
Entonces llegó la versión de Horizon Zero Dawn para PC y me alegré muchísimo. Si todos los astros se alineaban correctamente, podría disfrutar del juego, a pesar de los malestares que me aquejan últimamente. Y el juego llegó, aunque con malas noticias: su rendimiento no era muy bueno. Lo probé aquí en el trabajo y nada. Las cosas no pintaban bien. Si no funcionaba con una GTX 980, 32Gb de RAM y 16 núcleos físicos, ¿cómo me iría en casa? Pues la primera vez, muy mal. La cinemática de inicio se entrecortaba y en algún momento se colgó. Para colmo, ¡el juego no se puede jugar con mando!
Ahí lo dejé, hasta que hace un par de días le eché una mirada y para i sorpresa, la cinemática de inicio iba bien. Luego el juego arrancó muy bien, estable, y con un rendimiento más que aceptable: 70 o más FPS, a calidad media (según pruebas, no hay gran diferencia entre baja y alta). Nada mal para un hardware modesto y ya pasado de moda.
El juego en sí no decepciona: aunque la historia es predecible a veces (tampoco vamos a pedir una trama de premio Hugo) es bastante atrayente. Ni hablar de los gráficos, ya saben que para mí los gráficos son secundarios en un RPG si me ofrece buena jugabilidad e historia. Pero si me dan todo, tampoco lo voy a rechazar.
Dicho sea esto, es bueno aclarar que este no es un RPG al uso, de la vieja escuela. Es más bien un RPG consolero, y eso se nota en la escasez de misiones secundarias y que todas las habilidades de su árbol son semi-pasivas: afectan aspectos de los ataques, recolección, etc. Todo muy orientado al juego con mandos, que no ofrece las ilimitadas combinaciones de un teclado (aunque sí protege más tus delicadas manitas de gamer, algo que echo muchísimo de menos).
Un par de sesiones de juego no son suficientes para valorar un RPG, pero Horizon, por el momento, me divierte y creo que es muy posible que lo termine, si el dolor de las manos me lo permite. Incluso insisto en recomendarlo como un buen juego, así que si pueden, no dejen de probarlo.
Nuevo tutorial de Godot: IA con Resources
Con dos días de atraso, pero ya está terminada la primera parte de mi tutorial de Inteligencia artificial simple con Resources. El mismo es una rspuesta a una vieja pregunta que vi en el reddit de Godot: ¿es posible implementar algo similar al sistema de IA de Unity basado en ScriptableObjects? Pues sí. Me tomó algún tiempo explorar las posibilidades de las clases y herencia en GDScript, sobre todo en el caso de los Resources, y luego un poco más readaptar mi enfoque a Godot y sus Resources.
La segunda parte debería estar lista en tres o cuatro días y cubre un par de elementos más avanzados, incluyendo el movimiento del NPC hacia el jugador. Todo muy simple, para facilitar la comprensión y que ustedes puedan adaptar el código a sus necesidades.
También he agregado un pequeño archivo al primer tutorial con el script de maneja de la cámara y una imagen de la configuración del nodo de la misma (posición, ángulo, etc)

