tag:blogger.com,1999:blog-113562462024-03-17T23:00:25.482-04:00Divagaciones sobre programacion y juegosprogramación de juegos, linux y otras cosasrogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.comBlogger2175125tag:blogger.com,1999:blog-11356246.post-59013832040639702122024-03-11T17:12:00.000-04:002024-03-11T17:12:01.439-04:00Sí, estoy vivo. Reporte de progreso (o de la falta de él)<p> Bien, estoy vivo. Pero la situación de país y la mía propia son críticas y avanzar en el proyecto se ha tornado casi imposible. En lo personal, he tenido que tomar tres empleos diferentes. No es que me esté haciendo rico con eso, pero al menos se garantiza sobrevivir. Eso también me ha hecho replantearme mis prioridades y he salido a buscar mejores ofertas. Hay que lograr sacarle el máximo a las horas de trabajo y eso solo se consigue de una forma: con contratos de desarrollo fuera del país. De momento no he logrado nada, así que toca insistir hasta que algo caiga.<br /></p><p>De la situación del país... poco puedo decir que no sepan ya. Apenas tenemos 10 horas de electricidad al día con grandes probabilidades de que se reduzcan mucho más. Se habla de 6 o incluso 3 horas, y además no se prevé estabilidad. Me resistía a considerar a Cuba como un estado fallido, pero debido el asunto electricidad y otros temas he cambiado de opinión. Esto es un estado fallido, definitivamente.</p><p>Por todo eso, ha sido inevitable el retraso del demo, que ya casi está listo. No solo eso, sino que todo el juego está prácticamente detenido, porque nos resulta casi imposible dedicarle tiempo. Lo más triste es que para el demo solo necesitamos terminar un modelo (bastante complejo) y la interfaz de usuario. Solo eso.</p><p>De todas formas, manténganse en sintonía. Quizás pueda darles alguna buena noticia un día de estos. O un año de estos.<br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-53435863036778770212023-12-29T12:53:00.000-05:002023-12-29T12:53:25.558-05:00Dónde está el problema?<p> Bien, básicamente ya tenemos una escena casi terminada, e incluso podemos entrar en algunas edificaciones! Sin embargo, todo esto está muy lejos de funcionar como debe ser. El problema? La navegación.</p><p>Godot utiliza Recast para calcular la malla de navegación. Es una biblioteca open source bastante veterana y confiable, probablemente la única con esta función. No solo Godot, también O3DE la usó para sustituir sus sistema de pathfinding basado en Kythera. Godot genera su malla de navegación a a partir de geometría y objetos de colisión, a diferencia de O3DE, que solo permite el uso de los últimos. El detalle aquí es que si no te pasas primero por la documentación, descubrirás a las malas que usar geometrías es un error mayúsculo. Las geometrías, o cualquier forma de colisión que no sea una primitiva, demoran el cálculo de la malla de navegación. En nuestro caso, hasta 5-6 segundos, mientras que en O3DE un terreno era calculado casi instantáneamente.</p><p>Tuve que darme a la tarea de optimizar el asunto. Para empezar, había que sacar las geometrías. Y aquí vino el segundo detalle: las opciones de selección de alcance de cálculo me indujeron a confusión. Había elegido procesar los children of root node, creyendo que solo procesaría los hijos del nodo Region, y realmente estaba procesando absolutamente todo en la escena. Una vez subsanado este error, logré configurar correctamente que solo se usara un grupo de nodos específicos, en este caso, primitivas de colisión. Cada casa, cada sección de terreno, cada objeto, ahora tiene una primitiva (caja o cilindro), que es la única que se utiliza para determinar la navegación. Esto redujo el cálculo de la malla a 1-2 segundo (hasta que se añadió relieve, que tiene colisiones más complicadas).<br /></p><p>Y qué sucede en caso de edificaciones complejas? Bueno, aquí ya es necesario un poco de trabajo adicional. Hay que crear una geometría auxiliar para la navegación, y convertir esa geometría en una forma de colisión. Es la parte donde aún persisten errores que no sé si atribuir al motor o a mi ineptitud. En nuestro edificio más complicado, resulta trivial subir la segundo piso, pero bajar la escalera se vuelve un incordio.</p><p>Lamentablemente no tengo experiencia con otros motores en este tema, así que no podría decirles si Godot es igual o peor, que Unity, por ejemplo.</p><p>Me quedaría un segundo paso de optimización: ver si es posible partir la escena en varias regiones de navegación. Por qué este afán en optimizar algo que en definitiva, se precalcula de antemano en el editor? Pues porque si quiero abrir una puerta en el juego, es necesario actualizar de nuevo la malla de navegación, en tiempo de ejecución. De ahí que sea imprescindible reducir el tiempo.<br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-59269270462206092532023-12-01T14:49:00.001-05:002023-12-01T14:49:10.587-05:00Reporte de progresos<p> Seguimos trabajando! Aunque no lo crean. Estoy escaso de tiempo y no puedo atender el blog. Usar internet en el trabajo es una molestia (mayormente para mi jefe, que le molesta que la use) así que no esperen mucha atención por aquí. </p><p>En fin, si me siguen en <a href="https://twitter.com/rogerdv" rel="nofollow" target="_blank">X</a> o en LinkedIn, podrán ver lo que estamos haciendo. Las funcionalidades básicas del sistema RPG han sido implementadas, y lo que más problema nos está dando es la parte gráfica. A pesar de eso, hemos avanzado mucho.Ya están listas algunas animaciones adicionales, en general se ha mejorado la calidad, y el AnimationTree fue reimplementado. Al fin hay blending! </p><p>Godot aún no tiene sistema de terreno oficial y hemos tenido que desechar nuestra segunda opción, el addon de Zylann, porque la pérdida de rendimiento se hacía notar en hardware de gama baja. El cambio ha sido para bien: el aspecto visual cambió mucho. En fin, toca esperar que el equipo de Godot decida qué harán con el terreno, pero eso demorará.</p><p>Se ha implementado un sistema para entrar y salir a las casas sin necesidad de cargar una escena independiente. No funciona perfectamente, pero la funcionalidad era imprescindible. Para complementarlo, un nuevo lote de casas ha sido agregado al proyecto. </p><p>El contenido del juego como tal está casi completo para la escena de introducción. Se echa muchísimo de menos un editor de cinemáticas, pero ya saben que la filosofía de Godot no es esa. Incluso, es posible completar toda la historia principal y varias misiones secundarias, para después pasar a la escena siguiente. Aproximadamente 20 minutos de juego, si te sabes todos los diálogos de memoria como es mi caso.<br /></p><p>Qué nos falta? Sonido, interfaz de usuario, música, y otros detalles. <br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-32413912652476189842023-10-11T16:51:00.002-04:002023-10-11T16:51:21.100-04:00O3DE 23.10<p> De alguna forma olvidé que estamos en el mes 10 y que tocaba ración de Open 3D Engine. Ayer (o antier, ya no recuerdo), se lanzó la versión 23.01, la última de este año. El anuncio es demasiado escueto para mi gusto y no logro sacar nada en claro, salvo que se ha facilitado el proceso de generar el build de los proyectos.</p><p>Lamentablemente esta vez no tendré tiempo de probarlo. Estamos en una fase bastante crítica del proyecto, implementando cosas a toda prisa con vistas al festival de noviembre. Todo eso en medio de una crisis energética total, con apagones de 10 horas diarias o más. Pero no se preocupen, que según el gobierno, no estamos tan mal. Creo que esperaré a la primera versión del 2024 a ver si hay cambios llamativos.<br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-24279306799578047282023-09-19T17:12:00.002-04:002023-09-19T17:12:52.728-04:00Resumen de estupideces de Quora II<p> Volvemos con lo mejorcito (o peorcito) de los últimos días en nuestra red de preguntas y respuestas favorita.</p><p><a href="https://es.quora.com/Es-legal-que-un-profesor-te-obligue-a-leer-y-si-vos-no-quer%C3%A9s-te-pone-un-1-s%C3%B3lo-por-no-leer" rel="nofollow" target="_blank">¿Es legal que un profesor te obligue a leer y si vos no querés te pone un 1 sólo por no leer?</a><br />Pues como van las cosas, pronto va a ser ilegal que la generación de cristal vaya a la escuela para no sufrir la tiranía de los profesores. Y pensar que a mí me pegaban con una regla de madera en primer grado...<br /><br /><a href="https://es.quora.com/Si-me-tiro-de-un-edificio-empezar%C3%A9-a-volar" rel="nofollow" target="_blank">Si me tiro de un edificio, ¿empezaré a volar?</a><br />Hombre, si eres Batman...<br /><br /><a href="https://es.quora.com/Cu%C3%A1ndo-supiste-que-la-vacunaci%C3%B3n-contra-el-coronavirus-era-para-exterminar-a-personas-mayores-de-60-a%C3%B1os-o-que-padecieran-enfermedades-cr%C3%B3nicas" rel="nofollow" target="_blank">¿Cuándo supiste que la vacunación contra el coronavirus era para exterminar a personas mayores de 60 años o que padecieran enfermedades crónicas?</a><br />Lo lamentable es que no exista una vacuna que extermine ignorantes.<br /><br /><a href=" https://elmundosindios.quora.com/Qu%C3%A9-es-lo-m%C3%A1s-perturbador-que-has-le%C3%ADdo-en-la-Biblia" rel="nofollow" target="_blank">¿Qué es lo más perturbador que has leído en la Biblia?</a><br />Diablos, Ezequiel!<br /><br /><a href="https://es.quora.com/Por-qu%C3%A9-el-oro-y-las-riquezas-robadas-a-M%C3%A9xico-mediante-m%C3%BAltiples-robos-y-saqueos-se-despilfarraron-construyendo-el-palacio-del-Alambre-en-Granada-en-vez-de-industrializar-Espa%C3%B1a" rel="nofollow" target="_blank">¿Por qué el oro y las riquezas robadas a México mediante múltiples robos y saqueos se despilfarraron construyendo el palacio del Alambre en Granada, en vez de industrializar España?</a><br />Y esto es lo que sucede cuando te duermes en las clases de Historia (como yo).<br /><br /><a href="https://es.quora.com/Alguien-me-podr%C3%ADa-indicar-por-qu%C3%A9-tengo-la-man%C3%ADa-de-cocinar-en-m%C3%AD-casa-desnudo-y-con-zapatos-de-mujer-de-tac%C3%B3n-soy-hombre-heterosexual-gracias" rel="nofollow" target="_blank">¿Alguien me podría indicar por qué tengo la manía de cocinar en mí casa desnudo y con zapatos de mujer de tacón? …soy hombre heterosexual… gracias<br /></a>Nada... mariconerías que le dan a uno de vez en cuando.<br /><br /><a href="https://es.quora.com/C%C3%B3mo-se-apaga-la-gravedad-en-la-Tierra" rel="nofollow" target="_blank">¿Cómo se apaga la gravedad en la Tierra?</a><br />Cuando entras por la puerta, en el interruptor justo a la derecha. Pero después la enciendes de nuevo que nos dejas un lío a los que venimos detrás.<br /><br /><a href="https://es.quora.com/Por-qu%C3%A9-se-dice-que-Espa%C3%B1a-bloquear%C3%A1-el-ingreso-de-M%C3%A9xico-a-la-Uni%C3%B3n-Europea-Les-da-envidia-que-en-M%C3%A9xico-tambi%C3%A9n-hay-muchos-blancos-incluso-m%C3%A1s-alemanes-que-en-Espa%C3%B1a" rel="nofollow" target="_blank">¿Por qué se dice que España bloqueará el ingreso de México a la Unión Europea? ¿Les da envidia que en México también hay muchos blancos incluso más alemanes que en España?</a><br />Envidiosos que son estos españoles.</p><p><a href="https://es.quora.com/Por-que-M%C3%A9xico-no-puede-entrar-en-la-Uni%C3%B3n-Europea-Es-por-racismo" rel="nofollow" target="_blank">¿Por que México no puede entrar en la Unión Europea? Es por racismo?</a> </p><p>Envidiosos, y además racistas. Obviamente, las clases de Geografía son tan buenas para dormir como las de Historia. De ahí que haya tanto terraplanista suelto últimamente.<br /></p><p><a href="https://es.quora.com/Si-M%C3%A9xico-actual-le-declara-la-guerra-a-Espa%C3%B1a-y-a-su-Rey-podriamos-ganar-y-esclavizar-los-siervos-espa%C3%B1oles" rel="nofollow" target="_blank">¿Si México actual le declara la guerra a España y a su Rey, podriamos ganar y esclavizar los siervos españoles?</a><br />Me apunto, si me garantizan que puedo traerme tres o cuatro siervas españolas de buen ver.<br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-31086582655657805952023-09-13T11:54:00.006-04:002023-09-13T11:54:40.869-04:00Unity cambia su modelo de negocios<p> Un nuevo anuncio ha cabreado a casi toda la comunidad de usuarios del popular motor de juegos. El modelo de negocios vuelve a cambiar, y aunque lo más llamativo es que el límite de la licencia Personal aumenta a 200k anuales, esto viene con malas noticias: si superas ese límite y además tienes más de 200k instalaciones, tendrás que pagar 20 centavos por cada instalación e inicialización del juego por encima de esas 200k. Incluso, si el mismo usuario reinstala el juego, pagarás dos veces. O tres... o más. Para la licencia Pro, el límite sube a un millón de instalaciones y el fee se reduce a 2 centavos. </p><p>La jugada parece estúpida, y lo es. Esto golpea durísimo a los F2P, a los juegos que monetizan ads y generan unos pocos centavos por instalación (a menos que uses la red de ads de Unity, qué casualidad), a los juegos del Gamepass que también ingresan muy poco por cada copia instalada (y si formateas tu consola o reinstalas tu PC y vuelves a instalar desde el Gamepass...), e incluso te hace vulnerable a ataques de instalación en bulto. Rayos, si alguien piratea tu juego tendrás que pagar por esas instalaciones piratas! El hilo en <a href="https://www.reddit.com/r/gamedev/comments/16gr96x/unity_announces_new_business_model_will_start/" rel="nofollow" target="_blank">reddit/gamedev</a> lo explica mejor que yo. Incluso hay jugosos chismes: el Riki vendió sus acciones en la empresa la semana pasada. Ya lo decía yo, casualidades.</p><p>Las prestaciones extra que gana la licencia Personal gratis no es que compensen mucho y también hay otro cambio: a partir de noviembre Unity requerirá que inicies sesión y tengas conexión a internet. En caso de cortarse la conexión, podrás usarlo offline durante tres días. Quizásesto no sea un problema para nadie en esta época de conexión abundante, salvo para los cubanos, que aún estamos en la edad de piedra (con grandes probabilidades de retroceder a la edad anterior, si es que hubo alguna).</p><p>Aún está por verse si Unity dará marcha atrás a esta monumental metida de pata. El golpe (otro más) a su credibilidad ya está dado y la gente se está planteando seriamente si pasarse a Godot o a Unreal, cuyo 5% en fees es menor y su ritmo de innovación es más rápido, sin necesidad de tantas compras ruinosas y despidos masivos. Por ejemplo: Unity tuvo que comprar Ziva para obtener tecnología de renderizado realista de humanos y equipararse a Unreal. O3DE hizo lo mismo sin comprar a nadie. Luego compraron a Weta Digital... no me queda muy claro para qué la querían. </p><p>Como decía un querido amigo mío: ya nos veremos.<br /><br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-42904571519030148802023-09-01T14:41:00.003-04:002023-09-01T15:05:16.174-04:00Resumen de estupideces de Quora <p> Les traigo un resumen de lo peor que ha preguntado la gente en Quora esta semana. La lista ha sido recopilada por yo mismo en persona.</p><p><a href="https://es.quora.com/Soy-un-hombre-solitario-que-vive-en-el-campo-y-me-enamor%C3%A9-de-mi-burro-qu%C3%A9-me-aconsejan" rel="nofollow" target="_blank">Soy un hombre solitario que vive en el campo y me enamoré de mi burro, ¿qué me aconsejan?</a><br />Para empezar, yo te recomendaría mucha vaselina. Y que en tu noche de luna de miel tengas un doctor a mano, por si acaso.</p><p><a href="https://es.quora.com/Si-el-sistema-solar-realmente-existe-c%C3%B3mo-explican-los-sistemas-solares-que-no-hayamos-encontrado-vida-extraterrestre-Si-hubiera-otros-planetas-ya-habr%C3%ADamos-encontrado-otras-formas-de-vida-por-ah%C3%AD" rel="nofollow" target="_blank">¿Si el sistema solar realmente existe, ¿cómo explican los sistemas solares que no hayamos encontrado vida extraterrestre? Si hubiera otros planetas ya habríamos encontrado otras formas de vida por ahí, pero como no existen, por eso estamos solos.</a><br />Este es un espécimen cada vez más abundante en Quora. No preguntan, ellos afirman, generalmente perlas como esta. Más sobre el tema dentro de un rato.<br /><br /><a href="https://es.quora.com/Mi-hijo-fue-sentenciado-a-cadena-perpetua-por-un-crimen-que-no-cometi%C3%B3-y-hace-15-a%C3%B1os-est%C3%A1-en-prisi%C3%B3n-Temo-que-se-desmoralice-y-cometa-una-locura-Necesito-consejos-para-mantener-su-animo-alto" rel="nofollow" target="_blank">Mi hijo fue sentenciado a cadena perpetua por un crimen que no cometió y hace 15 años está en prisión. Temo que se desmoralice y cometa una locura. Necesito consejos para mantener su animo alto, tiene solo 20 años y lo veo muy bajoneado. ¿Consejos?</a><br />Que estudie matemáticas. Usted, no su hijo. </p><p><a href="https://es.quora.com/Pregunta-es-bueno-o-malo-Tener-2-biblias-iguales-pero-con-una-tapa-de-color-diferente" rel="nofollow" target="_blank">Pregunta.. ¿es bueno o malo? Tener 2 biblias iguales pero con una tapa de color diferente?</a><br />Pues digo yo que el Yahvé de tapa azul podría querer liarse a hostias con el Yahvé de tapa roja y tendrías una guerra santa en tu casa. <br /><br /><a href="https://es.quora.com/Como-cirujano-qu%C3%A9-es-lo-m%C3%A1s-ins%C3%B3lito-que-ha-encontrado-dentro-del-cuerpo-de-un-paciente" rel="nofollow" target="_blank">Como cirujano, ¿qué es lo más insólito que ha encontrado dentro del cuerpo de un paciente?</a><br />Sin comentarios.<br /><br /><a href="https://es.quora.com/Si-la-tierra-tiene-4504-millones-de-a%C3%B1os-c%C3%B3mo-explican-los-terraviejistas-que-el-edificio-m%C3%A1s-antiguo-no-tenga-m%C3%A1s-de-5004-a%C3%B1os-Si-la-tierra-fuera-antigua-habr%C3%ADa-millones-de-edificios" rel="nofollow" target="_blank">¿Si la tierra tiene 4504 millones de años, ¿cómo explican los terraviejistas que el edificio más antiguo no tenga más de 5004 años? Si la tierra fuera antigua habría millones de edificios de millones de años.</a><br />Qué les dije? Perlas, puras perlas!</p><p>La semana próxima volvemos con más.<br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-4409391008317950612023-08-12T15:39:00.004-04:002023-08-12T15:39:37.702-04:00Baldur's Gate 3 rompe los moldes, pero eso ni es nuevo ni es malo<p> No recuerdo que un juego isométrico y con combate por turnos haya sido jamás candidato al Game Of The Year. Ni tampoco un título que otros desarrolladores se hayan apresurado a calificarlo como una anomalía, que no debería ser tomado como el estándar a seguir en la industria. El problema es que el trabajo de Larian ha sido tan excepcional que ha opacado juegos tan esperados como Starfield, Zelda o el mismo Diablo IV (alguien habla de Diablo IV a estas alturas).</p><p><br />A ver muchachones. Juegardos excepcionales los han habido antes. Clásicos, les llaman. Lo fue Skyrim, en su momento, y les recuerdo que aún se juega y Bethesda le saca lascas. The Witcher 3 ofreció un mundo bastante bien logrado y fue uno de los mejores RPGs de la década pasada. ¿Alguien recuerda el viejo Fallout 2 y las libertades que permitía? Son juegos hechos con cuidado y tiempo, no un Assassin's Creed que sacas cada dos años. Cosas hechas a toda prisa seguirán saliendo y haciendo dinero, porque eso, señores, no es culpa de la industria, es culpa de los jugadores, que pagan por un nuevo Assassin's Creed, por un nuevo Call of Duty o por un nuevo FIFA, por los DLCs infames que activan contenido que ya está ahí, los pases de batalla, las cajas de botín, y todo lo que sirva para exprimir el bolsillo del cliente.</p><p><br />Que de vez en cuando venga un Baldur's Gate 3 no va a hundir la industria. Para empezar Tampoco los desarrolladores deberíamos sentirnos preocupados, porque las genialidades pueden provenir de cualquier parte (igual que las mierdas monumentales). Y lo bueno de todo esto es que hay espacio para todos. Hay espacio para que un pequeño estudio nos sorprenda con cositas como Underrail, que cuando miras a tu alrededor te ha robado cientos de horas de tu vida (y es solo un RPG isométrico en 2D) y hay espacio para que los grandes lo intenten. Que no quieran ya es otra cosa. </p><p><br />Ahí es donde está el problema y el apuro por hacernos creer que Baldur's Gate 3 no es ni debería considerarse como el nuevo estándar. En el miedo al riesgo, en la falta de amor a lo que se hace y el poco respeto al jugador (que repito, es culpa del propio jugador). Sí, es inalcanzable para muchos, pero debería ser la aspiración de todos tratar de aproximarnos algún día a ese logro.</p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-72134773627566251362023-07-28T13:02:00.004-04:002023-07-28T13:02:43.911-04:00Sistema de misiones casi a punto<p> Junto con los diálogos, el sistema de misiones es el otro componente esencial que debía terminar para que las mecánicas de juego estuviesen casi completas. El sistema de misiones (o quests) pasó por manos de dos personas, siendo la segunda iteración la más completa, pero mal documentada y bastante compleja, con un uso intensivo de signals. Me tomó un par de horas entender cómo funcionaba, e incluso hasta ayer descubrí cosas que estaba haciendo mal. No ha sido divertido, pero no suele serlo nunca cuando se trata de programar juegos.<br /></p><p>A diferencia de mis ideas iniciales, el sistema de misiones acabó siendo una escena autoload (o sea, que Godot la trata como un singleton) y las quests son escenas hijas. Hay que tener en cuenta que para Godot, una escena puede ser cualquier cosa. Lo mismo es un prefab, que una locación del juego, que el modelo de tu personaje con sus scripts adjuntos... Es muy versátil. En fin, que tenemos una jerarquía de nodos con misiones y sus objetivos. Nada original, de hecho GDQuest usa el mismo enfoque en su videotutorial.</p><p>Ahora que las bases están sentadas, faltarían detalles como salvar correctamente el estado de objetivos multi (recoger X objetos, matar X NPCs) y encontrar los casos específicos que requieran la implementación de objetivos únicos. Pero estas bases ya permiten cubrir la mayoría de los casos y gracias a eso es posible jugar, con limitaciones, claro, el 90% de la primera escena.<br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-14264915883646482642023-07-21T13:52:00.003-04:002023-07-21T13:52:32.166-04:00Casi cien líneas de diálogos!<p> Se dice fácil, pero no lo es tanto. Cada una de esas líneas debe ser probada, en especial las que dependen de alguna condición. O sea, que el proceso más o menos es: escribir, ejecutar el juego, si hay que cumplir alguna condición asegurarse de hacerlo, llegar hasta el NPC y recorrer el diálogo. A veces, hay que repetir esto en varias ocasiones para una sola línea, hasta que todos los errores queden resueltos, o simplemente para verificar todas las posible bifurcaciones. Luego viene volver a leerse el diálogo y comprobar su coherencia, naturalidad, ortografía, y si cumple con lo que se espera de él, que es proveer información.</p><p>En concreto, me resultó muy pesado escribir el diálogo para un personaje, que resulta ser un pedante que habla con un lenguaje rebuscado. Eso, en español y también en inglés. Una hora entera para lograr unas líneas. No había llegado al final y ya le tenía odio al personaje.</p><p>Es curioso ver cómo este trabajo va completando y dando forma a la escena. Incluso, el testeo de las misiones en cierta forma "pide" cambios en la distribución y ubicación de los personajes. Por ejemplo: cualquier desplazamiento entre los puntos de una misión que tome menos de treinta segundos prácticamente no aporta tiempo de juego. Si vas del personaje A al B en 20 segundos, te tomas 15-20 segundos en el diálogo, y 20 segundos regresando, apenas has implementado un minuto de tiempo de juego. Obvio, la solución no es tan simple como estirar la escena y alejar los personajes hasta el infinito. Sí, se necesita aumentar el recorrido (anyway, en la vida real los trayectos casi nunca son completamente rectos), pero el diálogo también contribuye a alargar la duración de las misiones (esos diálogos con cinemáticas largas no están ahí por gusto, de hecho, aportan más que el mismo desplazamiento).<br /></p><p>Este primer escenario me ha enseñado algunas cosas que pondremos en práctica en el segundo (y probablemente, ese segundo también me enseñará cosas nuevas). <br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-20200094962371163652023-06-10T22:16:00.004-04:002023-06-10T22:16:33.546-04:00Probando O3DE 2305<p> Luego de un mes de dejarlo para otro día, al fin me he dispuesto y he instalado O3DE 23.05. Les hago la historia desde el principio. Saben que en casa no tengo internet, y O3DE requiere conexión para instalarse, sí o sí. La única solución era conectarme a través del teléfono y usar los datos móviles, lo cual tiene un costo que si bien no es exorbitante, es significativo. Esa no es la única dificultad, también tenemos que la velocidad de conexión por 4G en Cuba es más o menos la mitad: 4G/2=2G. Con suerte sacas 10-15 kb/s de descarga. Por tanto, hay que dejarlo para la madrugada, que tiene la ventaja adicional de que el tráfico se cobra a la mitad. Como ven, la tarea no era sencilla, de ahí que la fuese posponiendo desde que salió O3DE.</p><p>Tampoco ayudaba que la lista de cambios no refleje nada impresionante. A diferencia de la 22.10, que fue un salto cualitativo, la 23.05 es más bien sosilla. Me planteé varias veces saltarla y esperar a la de finales de año, pero me picaba la curiosidad y esta madrugada al fin me desperté y decidí que lo iba a intentar. No fue rápido, y ahora me caigo de sueño. </p><p>La primera prueba fue decepcionante. Por alguna razón, ni siquiera pude usar el motor cinco minutos seguidos: el editor iba lento e inestable, en dos o tres clicks ya dejaba de responder. Cerré el proyecto y volví a abrir y ya estaba todo funcionando un poco más normal. De todas formas, el motor sigue siendo bastante incómodo. Aún hay que tenerlas animaciones separadas, es como si hubiesen diseñado el sistema para que modeles el personaje y te bajes las animaciones de Mixamo. El retargeting parece sencillo, sin embargo no me acaba de funcionar. No hay forma simple de hacer un build, el proceso aún es esotérico e involucra modificar archivos de cmake y compilar el fuente del motor.</p><p>Por eso mantengo mi proyección: no será muy cómodo de utilizar al menos hasta la 24.10, y podría equivocarme.</p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-44577907639863858042023-06-07T11:40:00.001-04:002023-06-07T11:40:47.720-04:00Reporte de progreso<p> Como saben, por alguna razón ya Blogger no me deja mostrar fotos, así que tendrán que seguirme en <a href="https://twitter.com/rogerdv" rel="nofollow">Twitter</a>, <a href="https://www.linkedin.com/in/roger-dura%C3%B1ona-12a82848/" rel="nofollow">LinkedIn</a> y <a href="https://www.youtube.com/channel/UC9kyqkU1rEa70pEZt_FSbtQ" rel="nofollow">Youtube</a> (en serio, no es para inflar seguidores). La parte de arte va bien encaminada, a pesar de que cada día encontramos detalles que pulir y aún quedan dudas de que el método planteado para el uso de objetos sea el correcto. Las imágenes están allí, así que vayan y vean nuestro nuevo set de armaduras y la vestimenta inicial del personaje. Lo más importante, se ha dado un salto de calidad visual sorprendente, sin sacrificar productividad. Esto es muy importante cuando solo tienes tres personas modelando, y que además solo pueden dedicarle una hora o dos al día.</p><p>La parte de código no marcha tan bien. He reescrito el sistema de movimiento porque tal como me esperaba, necesitábamos el avoidance. Eso fue bueno porque corrigió algunos detalles, como un fallo aleatorio a la hora de moverse. Pero fue malo, porque al final resulta que las entidades no se evitan unas a otras y se atascan. Hemos ido de un problema a otro. Al tratarse de Godot 4 y una nueva funcionalidad, no hay donde preguntar y no se puede descartar que el problema esté en el motor y no en mi código. La solución es rebajar un poco el alcance de la batalla inicial y convertirla en una escaramuza más reducida, de apenas 4-5 participantes.</p><p>El contenido del juego como tal ya casi que empieza a funcionar. Es posible cumplir las primeras tres misiones del juego, aún cuando el sistema de misiones no está ni de lejos terminado. Incluso podría agregar todo el arco central de la historia en la primera escena, pero eso requeriría agregar más NPCs temporales que después habría que modificar y de verdad me da pereza.<br /><br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-60202275061961770712023-06-02T10:18:00.000-04:002023-06-02T10:18:01.680-04:00Hoy toca reseña: La Balada de Xander Sirius<p> <br />Hace tiempo que no hablo de literatura aquí, porque ya saben mi opinión: hay montones de blogs especializados en el tema. O habían, porque ya Youtube los ha suplantado. Como sea, creo que es una pérdida de tiempo. Sin embargo, hay cosas que ameritan romper la tradición.</p><p>De vez en cuando me llegan a las manos libros de autores cubanos y les hago un espacio en mi cola, porque es la única forma de mantenerse al día con los autores de fantasía y CF del patio. En la mayoría de los casos, esos libros es muy difícil que se publiquen, o se imprimen en tan poca cantidad que es difícil encontrarlos. Sin embargo, les tengo una buena noticia, que dejaré para el final. Primero, hablaremos de La Balada de Xander Sirius, una novela de Álex Padrón (Juan Alexander Padrón). Álex es un autor, que si no recuerdo mal, el propio Yoss dijo que se merecía haber publicado más en Cuba. Probablemente, de nuestros mejores autores, es el menos conocido y el que descubres al final, cuando ya sabes que existen Yoss, Encinosa, o Eric Mota. Es quizás el lector extranjero el que ha podido acceder con regularidad a sus novelas. Se maneja bien no solo en la fantasía y CF, sino que también incursiona en la novela negra con éxito.</p><p>La Balada de Xander Sirius comienza como una novela ciberpunk al uso, solo que en este caso, el ciberpunk es solo una ambientación y no un protagonista que se te mete a la fuerza en cada párrafo, apartando a la trama. Es algo que me es difícil explicar, pero aquí la tecnología, los hackers, y el ciberespacio no son lo que importa. Para mi, que soy poco inclinado al ciberpunk, eso le hizo ganar muchos puntos a la novela. Y a mitad del libro, descubrimos que la historia jamás fue sobre eso. Xander Sirius, el protagonista, es un Maestro de Jaurías, alguien que puede controlar mediante un implante especial una manada de perros. Recién salido de prisión, consigue un contrato con un viejo amigo, como gorila de un bar. O eso piensa él. </p><p>Ahí es donde la novela da un giro magistral para introducirnos en una batalla épica conta una amenaza... singular. Me perdonarán que no dé detalles, ¡pero es que tienen que leerla y descubrirlo ustedes mismos! La forma en que Alex maneja al antagonista, inspirado en una criatura llevada, traída y explotada hasta la saciedad en la fantasía en una novela de CF es simplemente genial y el libro se hace corto cuando las verdaderas aventuras de Xander Sirius comienzan. Reclutado por la Logia, una sociedad secreta antiquísima, Xander se encontrará con una guerra milenaria que está a punto de escalar a mayores.</p><p>No voy a detenerme en detalles sobre la calidad técnica de la obra. No es mi especialidad, soy más bien un lector que busca divertirse y salvo un análisis superficial de las herramientas, para aprender, no voy más allá. Pero baste decir que Alex Padrón es un escritor premiado (vean su biografía al final) y salvo que seas muy quisquilloso no encontrarás aquí nada que criticar. La historia se desarrolla en el universo de Ofidia, creado en conjunto entre Álex y Michel Encinosa, que cuenta ya con varias novelas de Michel y creo que también un juego de rol de mesa (sí, acá en Cuba también creamos buenos RPGs). Es la primera de una trilogía, y la buena noticia que les prometí al principio es que si estás fuera de Cuba puedes <a href="https://www.amazon.com/balada-Xander-Sirius-Spanish/dp/B0C63M22B3/" rel="nofollow">adquirirla ya en Amazon</a>. Si estás dentro de Cuba, estás jodido, pero bueno, eso es lo normal aquí, así que supongo que ya estarás acostumbrado.</p><p> Sobre el autor:</p><p><!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Tabla normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
</p><p class="MsoNormal"><span lang="ES" style="mso-ansi-language: ES;">Álex Padrón, (La
Habana, 1973)</span></p>
<p class="MsoNormal"><span lang="ES" style="mso-ansi-language: ES;">Graduado de
Ciencias Farmacéuticas, Álex Padrón se desempeñó como investigador en
biomedicina y profesor de la Universidad de La Habana antes de dedicarse de
lleno a la literatura.</span></p>
<p class="MsoNormal"><span lang="ES" style="mso-ansi-language: ES;">Dentro del género
fantástico, ha sido premiado en los concursos Terra Ignota 2004, Hidra 2021,
Juventud Técnica 2022 y Oscar Hurtado 2023. Ha publicado el libro de relatos de
ciberpunk <b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">Pesadilla, tragedia y fantasmas de Neón</i></b> (EEUU, Primigenios,
2020), en coautoría con Yadira Albet la novela distópica <b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">Guadaña Universal: el códice</i></b>
(Cuba, Casa Abril, 2023) y como novelista CF en solitario <b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">La balada de Xander Sirius</i></b>
(Alemania, Ilíada Ediciones, 2023). </span></p>
<p class="MsoNormal"><span lang="ES" style="mso-ansi-language: ES;">Dentro de la nueva
novela negra cubana, Álex Padrón tampoco es un autor desconocido: <b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">Matadero</i></b>
(España, Atmósfera Literaria, 2018), <b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">La herencia de los patriarcas</i></b>
(España, Atmósfera Literaria, 2019), <b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">Tres Lunas</i></b> (España, Guantanamera,
2020) y <b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">Mon amie la rose </i></b>(Alemania, Ilíada Ediciones, 2021) así lo
demuestran. Además, fue uno de los autores cubanos seleccionados para
participar en la antología <b style="mso-bidi-font-weight: normal;"><i style="mso-bidi-font-style: normal;">Regreso a la Isla en Negro</i></b> (España,
Editorial Hurón Azul, 2022).</span></p> Échale un vistazo a <a href="https://alexpadron.es/">su blog</a>.<br /><p></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com1tag:blogger.com,1999:blog-11356246.post-90599791015963487422023-05-15T13:01:00.000-04:002023-05-15T13:01:19.143-04:00Reporte de estado<p> Me complace anunciar que la parte del código va más o menos, a pesar de los apagones. Tenemos un sistema de misiones muy básico (al fin), y tenemos diálogo. El diálogo es un enredo que solo entiendo yo y digamos que va a un 60%. El sistema de combate tiene serias limitaciones, mayormente porque no tenemos las animaciones adecuadas. Hay una especie de batalla grupal, muy frenética y rápida, así que habrá que pulir y balancear, porque en general las peleas entre entidades similares suelen ser más calmadas. Mejor no pregunten por la IA.</p><p>Lo más relevante: tenemos más de 30 objetos en el juego y casi todos pueden usarse, si cumples con los requerimientos. <br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-263525617594302852023-04-14T11:10:00.004-04:002023-04-14T11:10:38.341-04:00Coliseum Reascenso<p> Ha salido al fin la nueva versión de Coliseum, el juego que en cierta forma abrió la nueva edad de los videojuegos en Cuba, e incluso disfrutó de un éxito de ventas excepcional. No fue el primero en usar micropagos (ese fue La Neurona, me dijeron en la UCI), pero fue el que más destacó.</p><p>La espera ha sido larga y me consta que plagada de dificultades, pero no me corresponde contarles la historia. El super solicitado modo MOBA no está, aún no ha salido la versión para Android, y el modo multijugador tiene grandes limitaciones. Sin embargo, algunos jugadores se han puesto creativos y ya han encontrado la forma de sortear esas limitaciones.</p><p>Aquí les dejo unos cuantos minutos del juego, para que se hagan una idea. </p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/uPqP_D6AD2s" width="320" youtube-src-id="uPqP_D6AD2s"></iframe></div><br /><p><br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-37934562986190593402023-03-31T11:27:00.003-04:002023-03-31T11:27:23.128-04:00Nuevo video: implementando el manejo básico de armaduras<p> </p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="281" src="https://www.youtube.com/embed/cp9cGToJPrs" width="338" youtube-src-id="cp9cGToJPrs"></iframe></div><br /><p></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-80601270367693719972023-03-25T20:17:00.003-04:002023-03-25T20:17:53.913-04:00GDC 2023, mi opinión<p> Ha terminado la Game Developers Conference 2023, un evento que esperaba con interés, porque es como el E3, pero para los desarrolladores. Al GDC van los grandes de la industria a presumir de sus herramientas de creación de contenido (no solo de juegos), casi siempre con versiones recién lanzadas o por salir. Como punto a destacar, este año Godot tuvo un stand, patrocinado por W4. Por lo general, del GDC me interesan mayormente las presentaciones de Unreal y Unity, y sus reels. </p><p>Sin embargo, este año ha sido decepcionante. Unreal ha presentado su versión 5.2 y parecen haberse enfocado únicamente en fotorrealismo. El reel es una sucesión de juegos que parecen ser exactamente el mismo, incluso los que no son fotorrealistas tienen esos colores que de tan brillantes parecen irreales. Es como si a Unreal no le interesaran los indies, o las estéticas alternativas. Hay que ir al reel de Unity (o al stand de Godot) para ver estilos visuales diferentes, y aún así, sus juegos con gráficos realistas van por el mismo camino (al fin se están acercando a Unreal en ese apartado). </p><p>A diferencia de Unreal, hasta hace unas horas Unity no había subido o emitido un keynote, solo su reel "Made with Unity". Me he quedado con ganas de ver un repaso al estado del motor y su roadmap para este año, aunque entre sus conferencias está precisamente, el roadmap para el 2023. Han estado inusualmente callados.</p><p>Otro que no asistió fue Amazon con O3DE. Sí, por lo general el GDC no es terreno propicio para software libre (Godot está porque quiere hacerse un hueco en la industria). Amazon prefiere tener su propia conferencia anual: el O3DCon, donde pueden brillar sin nadie que les haga sombra.</p><p>Habrá que ver qué aparece en Youtube a lo largo de esta semana.</p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-61940890196336544982023-03-21T11:47:00.002-04:002023-03-21T11:47:26.468-04:00Reporte de progreso: menos apagones, y algo de avance (al fin)<p> Esta semana hemos logrado concretar uno de los flujos de trabajo que nos venía dando problemas desde el principio. Al fin se ha implementar una prueba de concepto funcional del sistema de objetos que utilizan animaciones. O sea, los pantalones, guanteletes y en menor medida algunas armaduras.</p><p>La metodología es sencilla, pero conlleva algo de trabajo (como casi todo en el desarrollo de juegos). Para empezar, es necesario cortar el personaje en secciones, según las partes que quieras reemplazar. Si bien hay modelos que no necesitan eso, por ejemplo, una coraza que cubre el torso, en otros sí es obligatorio que sustituyas una parte del cuerpo del personaje. En nuestro caso, hemos escogido cortar en el cuello, hombros, manos, cintura y pies. El set de armadura inicial incluye una coraza con faldar, brazales que cubren todo el brazo, perneras y escarpes, completando así algo que parece una armadura de placas, aunque sin llegar hasta allá. Los brazales sustituyen los brazos, las perneras las piernas, y así sucesivamente. </p><p>Seguramente alguien podría decir que esto es una estupidez, porque todo eso se hace en Blender, poniendo las cosas sobre el personaje y ocultando o mostrando la pieza correspondiente. Pues... va a ser que eso no funciona, cuando tienes tres razas con dos sexos cada una y montones de armaduras diferentes. </p><p>Ya desde el punto de vista técnico, en Godot (en Unity es diferente) el procedimiento consiste en tomar el MeshInstance3D del objeto y asignar su componente mesh y su material al MeshInstance3D de la parte del cuerpo a reemplazar. Por supuesto, se guarda una copia del MeshInstance original para restaurarlo al desequipar la armadura. El método también permite personalización y variedad de personajes, pues puedes reemplazar el torso de un NPC por otro torso con panza, o cambiar su cabeza. <br /></p><p>El siguiente paso es lidiar con esas tres razas y dos sexos, que nos dan seis modelos en total. Cada uno de esos cuerpos tiene diferencias con respecto a los demás, más o menos sutiles, pero las hay. Aquí la cosa se complica, porque hay que proporcionar una armadura para cada cuerpo. Esto se logra usando shape keys, y no se dejen asustar por el término, es tremendamente fácil. Solo que como casi todo en el desarrollo de juegos, conlleva algo de trabajo. Hemos definido shape keys que permiten deformar la armadura y adaptarla al cuerpo objetivo. De nuevo, no es factible crear un modelo separado para cada variante, porque gestionar seis modelos por cada objeto cuando tienes muchos objetos es una pesadilla. </p><p>Como ven, no hay un método fácil. Si quieren fácil, dedíquense a otra cosa. Rascarse los dedos de los pies, o mirar la pared. Pero es efectivo y les garantizo que el resultado vale la pena. Les debo las fotos porque Blogger ya no las muestra, pero pronto tendremos video mostrando cómo se ve todo esto en el juego. El paso siguiente consiste en manejar objetos más complejos, como un gambesón o túnica, que incluyen mangas y requieren sustituir no una, sino dos partes del cuerpo a la vez.<br /></p><p><br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-17406164853876118192023-03-16T13:31:00.000-04:002023-03-16T13:31:20.635-04:00Reporte de progreso: muchos apagones y poco avance<p> Han vuelto los apagones nocturnos para fastidiar le escaso tiempo de trabajo que tenemos, por eso todavía no hay nada que mostrar. Ni lo habrá por un tiempo, porque justo estamos entrando en la fase complicada y estoy solo a cargo de la programación, que no eran los planes. </p><p>La fase actual, que como les decía es complicadita, es la de implementar el asunto de equipar objetos en el personaje. Nos ha tomado más de lo que debería, por apagones y por estar todos muy ocupados. Este proceso implica crear diferentes variantes de una armadura por ejemplo, usando shape keys para adaptarlas a diferentes cuerpos, o crear elementos que comparten el mismo esqueleto que los personajes para intercambiar partes del cuerpo. En este último caso podemos mencionar los pantalones, por ejemplo. O los brazales.</p><p>Aunque la parte de código básico está hecha, es solo una <a href="https://www.youtube.com/watch?v=7p8MQ8_sJi0" rel="nofollow" target="_blank">prueba de concepto</a> que hay que adaptar a su uso en el juego real. De paso, les digo un secreto: me resultó mucho más fácil hacerlo en Godot que en Unity.<br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-79118882900535908362023-03-01T14:51:00.000-05:002023-03-01T14:51:27.279-05:00Godot 4.0 estable<p> Tal como esperábamos, hoy se ha lanzado la versión 4.0 de Godot. No más Release Candidates. Salvo por una prueba rápida del proyecto, no le he dedicado tiempo, eso queda para por la noche. No me he actualizado desde la RC2, así que no sé si algunos bugs molestos fueron resueltos entre las RC 3 y la 6. En concreto, me estaba fastidiando mucho un fallo al presionar Ctrl-S o Ctrl-K. Pero en general, el resto del proyecto iba muy bien ya en la RC2.<br /></p><p>Pensaba hacer un video, pero no creo que el proyecto, en su etapa actual, esté como para mostrarlo.<br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-91804477183812744002023-02-24T11:05:00.000-05:002023-02-24T11:05:36.842-05:00Sin novedad en el frente<p> Y seguimos sin corriente. Tras tres (venga trabalenguas) fallos catastróficos del sistema eléctrico nacional que nos dejaron sin corriente durante 11-12 horas cada día a la mitad, e incluso el 90% del país, vienen los apagones por déficit. O sea, que a pesar de que en menos de quince días hemos tenido cero consumo en una parte significativa del país, Cuba no puede generar suficiente electricidad. Entonces sucede como anoche, que me quedé sin electricidad al levantarme y luego justo al sentarme a trabajar por la noche.</p><p>En fin, que se me acumula un atraso terrible.<br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-23654114601250811962023-02-13T10:34:00.007-05:002023-02-13T10:34:50.517-05:00Global Game Jam 23<p></p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/vBZ9W8c-k4E" width="320" youtube-src-id="vBZ9W8c-k4E"></iframe></div><br /> Breve video resumen de mi visita al Global Game Jam 23, en la UCI.<br /><p></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-73342108126241001762023-01-30T14:50:00.002-05:002023-01-30T14:50:29.533-05:00Los problemas de una cámara isométrica<p> Ya hemos entrado en fase de desarrollo con assets un poco más serios y han aflorado algunos problemas relativos al uso de una cámara ortogonal. Ya en Unity me había topado con cosas como que el shader toon no funcionaba en ese tipo de proyección. En Godot, hay un par que vale la pena mencionar. Por ejemplo, las sombras se torna borrosas, y eso solo en objetos grandes, que arrojan una sombra significativa. Los objetos pequeños apenas producen una manchita. </p><p>El segundo problema vino cuando se agregó un shader para el terreno, que la pantalla se dividió en dos mitades, con la superior un poco más oscura que la inferior. Ahí sí tuve que buscar una solución y cambiar a una cámara en perspectiva, con FOV=15. Esta solución me fue recomendada varias veces, y también es la que usa Adam Lacko en su reimplementación del motor de Van Buren. Adam consigue un efecto tan parecido a lo que quiero que hice unas pruebas hace un tiempo y he aplicado lo que aprendí ahora. </p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFEZlNRV9Waqr2pPduBrIpfuiMMsapdr1dEJ32nnRhnLH7hTiozaM9KUZPFPBuev9J1eFtY4e85GtsePostGF3XWvkCRMNDbHlWFFKqVYya2rgLvroJkOm5uengfA7GTZdACHLq7k6thPWxLR5U2-YX4KMjrZDMDZaKA_5JDT82nyYou2SXp0/s1154/tkotw1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Primera escena" border="0" data-original-height="680" data-original-width="1154" height="189" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFEZlNRV9Waqr2pPduBrIpfuiMMsapdr1dEJ32nnRhnLH7hTiozaM9KUZPFPBuev9J1eFtY4e85GtsePostGF3XWvkCRMNDbHlWFFKqVYya2rgLvroJkOm5uengfA7GTZdACHLq7k6thPWxLR5U2-YX4KMjrZDMDZaKA_5JDT82nyYou2SXp0/w320-h189/tkotw1.jpg" title="Primera escena" width="320" /></a></div><br /> En general, habrá que esperar que el jodido sistema de terrenos al fin llegue a Godot 4 para poder darle el punto final a las escenas. Mientras tanto vamos buscando el flujo de trabajo que nos acomode para el resto.<br /><p></p><br /><br /><p><br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-65306327714297581562023-01-12T14:08:00.002-05:002023-01-12T14:08:14.183-05:00Pestañeas y ya estás a mitad del 2023<p> Pues así. Me acabo de dar cuenta de que ayer mismo era fin de año y hoy resulta que estamos a 12 de enero. <span lang="ES-US" style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-ansi-language: ES-US; mso-bidi-language: HI; mso-fareast-font-family: NSimSun; mso-fareast-language: ZH-CN;">¿Cómo cojones pasó eso? Bien, a lo que íbamos. </span></p><p><span lang="ES-US" style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-ansi-language: ES-US; mso-bidi-language: HI; mso-fareast-font-family: NSimSun; mso-fareast-language: ZH-CN;">Se ha ido medio mes y hay muy poco que decir. Mucho trabajo encaminando el proyecto y armando dos conferencias para el próximo Global Game Jam. Estaré de nuevo en la Universidad de las Ciencias Informáticas como invitado y podrán ver las conferencias en directo, si todo sale bien. También creo que me regalan otro pulóver, pero esas cosas materiales no son las que importan. Atentos a mi twitter y Facebook, que publicaré el link en cuento estemos en vivo. </span></p><p><span lang="ES-US" style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-ansi-language: ES-US; mso-bidi-language: HI; mso-fareast-font-family: NSimSun; mso-fareast-language: ZH-CN;">El proyecto, ah... Poco que decir por ahora. Probablemente poco que decir por un buen tiempo pero supongo que eso no le preocupará a nadie. <br /></span></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0tag:blogger.com,1999:blog-11356246.post-9830704839883174612022-12-22T12:30:00.003-05:002022-12-22T12:30:57.471-05:00Estamos en racha, pero no de las buenas<p> A ver, señores, necesito el contacto del servicio técnico del universo, porque esto que me está pasando no es normal. Hace un par de meses se me rompió la motherboard. Ahora se me rompe la fuente, y de paso, la motherboard nueva deja de apagar correctamente (se queda como suspendida y el ventilador de la fuente sigue girando). Por si fuera poco, también se tupe la taza del baño. Y ayer me encuentro que los gatos tumbaron el control del televisor y lo rompieron. Hasta cuándo es esto?</p><p>El colmo es que ni siquiera las partidas de DOTA 2 que empiezo con ventaja abrumadora las logro ganar, siempre se joden al final.<br /><br /></p><div class="blogger-post-footer">Feed RSS</div>rogerdvhttp://www.blogger.com/profile/17205814609478419944noreply@blogger.com0