lunes, marzo 30, 2015

Quo vadis, motor?

Sí, muy mal latinajo. A pesar de estar enfocado en Unity3D en los últimos días (al punto que me atormenta durante el sueño, y no es broma), no dejo de mantener las copias de Urho3D y Godot al día.
El primero integró DirectX 11 la semana pasada, aunque no he tenido el gusto de probarlo, el tiempo de oficina es escaso y tengo que compartirlo con una desagradable actividad llamada "trabajar". Aparte de eso, el ritmo de commits sigue bastante bajo y anodino, incluso cuando dejas pasar 3-4 días. Me resulta difícil pronosticar hacia dónde va Urho3D, y tampoco es que me interese mucho en este momento. Creo que es prudente dejarlo crecer un poco.
Godot, por su parte, es más espaciado en los commits, que a su vez son más voluminosos. Puedes pasarte una semana sin que haya cambios, pero cuando los hay, son decenas de archivos modificados. El trabajo parece estar enfocado en el sistema 2D en su mayor parte; no me parece que podamos esperar una mejora sustancial en el renderizado 3D a corto o mediano plazo. Quizás esto se deba a que el proyecto de Okam Studio demande más 2D, y en definitiva Godot se debe a su empresa padre, no a las necesidades de los usuarios.
Lo anterior no quiere decir que el panorama pinte mal, ni nada de eso. Considero que ahora tenemos mejores opciones libres que hace un año y medio, pero aún sin llegar a  cubrir las necesidades de los desarrolladores. Solo hay que darles algo de tiempo a que maduren bien.

jueves, marzo 26, 2015

DirectX 11 en Urho3D

Había descuidado el seguimiento de Urho3D ahora que he decidido pasar algún tiempo con Unity3D, por lo que hoy he hecho un pull a ver cómo iban las cosas. No me esperaba nada impresionante, pero para mi sorpresa, habían algunos cambios: el soporte para DirectX 11 ya está en el repositorio.
Larsse (o como se escriba) había anunciado hace un par de meses que estaba trabajando en un proyecto experimental llamado Turso3D, que era un campo de pruebas para nuevas ideas, que eventualmente se portarían a Urho. Una de esas cosas era el soporte para APIs modernas, en este caso, DirectX 11.
Así que al menos en el apartado de renderizador, Urho3D le va ganando a Godot, cuyo renderizador 2D puede hacer cosas asombrosas, y que en cuanto a herramientas gana por goleada, pero que se queda muy atrás en 3D. Evidentemente las prioridades de ambos equipos son diferentes, lo cual se refleja en la arquitectura de sus motores.

lunes, marzo 23, 2015

Confirmado, el Premio Minotauro es muy malo

Tanto o más que las anteriores obras premiadas. Leo aquí que Verano de miedo, cuya sinopsis me parecía bastante entretenida, es una novela que puntea bastante bajo, no solo en la reseña de la autora del blog, sino también en otros lugares.
Decepcionante lo que está saliendo del Premio Minotauro en los últimos años, y definitivamente no pienso participar más. A veces, los jurados ven en los textos cosas que los lectores no vemos, y ellos son los que mandan.

viernes, marzo 20, 2015

Unity3D 5 se ve mejor

O eso me parece:



Las imágenes las tomé con la aplicación utilizando DirectX 11 y deferred rendering (aunque con una sola luz direccional). Para ser una escena casi vacía, me asombra la calidad del renderizado.
Hacer el prototipo me tomo unos cinco minutos, ya me estoy haciendo un experto en esto de crear un isométrico: supongo que copiar el código de otro proyecto ayuda.

martes, marzo 17, 2015

Fuente rota

Parece que mi fuente se ha roto de alguna forma muy rara. El sábado, la PC de la casa dejó de arrancar, luego de darme algunos problemas raros, como no detectar el mouse.Lo atribuí a que la fuente se había quemado, porque la motherboard no encendía el led, sin embargo, el fan del CPU se movía solo, sin encender la PC.
Ayer fui con un amigo, que comprobó los voltajes de la fuente, sin encontrar ningún problema. Por suerte, llevaba una fuente "de respaldo", para asegurarme de que la motherboard funcionaba. Logré arrancar, pero al tratar de instalar la mía, el mimso problema. Así que me la traje a la oficina, donde la probé en otra máquina, con el mismo resultado.
Como todo acá, el gran problema es que la oferta no siempre se ajusta al presupuesto, ahora mismo hay en venta varias fuentes, pero la de menor precio vale $75. Y es que aunque valga la mitad, no tengo el dinero a mano.

lunes, marzo 16, 2015

Vuelve el Premio Minotauro

Se ha convocado el Premio Minotauro de novela fantástica, ciencia ficción o terror, correspondiente a este año 2015, pueden consultar aquí las bases.

Esta vez el aviso llega un poco corto de tiempo, el plazo vence el 15 de junio, lo que deja poco margen para quien no tenga una novela terminada o no sea muy rápido escribiendo. Otra cosa que cambia es el premio, que ahora baja a 6000 euros, en vez de los 10000 que se ofrecían anteriormente.
El premio del 2013, que debía anunciarse en amrzo del 2014, se atrasó hasta noviembre de ese año. Si le sumamos esto a la reducción del monto de la compensación, creo que no es aventurado suponer que el negocio editorial no va bien en España, o al menos las novelas ganadoras no se están vendiendo tan bien. Lo cual no me extraña, porque no tengo una buena opinión de los títulos ganadores.

viernes, marzo 13, 2015

Algo sobre Vulkan

Hoy me he dedicado a leer el overview de Vulkan, la nueva API gráfica del Grupo Khronos, para no estar muy en pañales acerca del tema. Soy más bien un proigramador de alto nivel, y las cosas que van bajo el capó a veces me resbalan y se olvidan con el tiempo, pero siempre algo queda.
Resulta interesante el vuelco tan revolucionario que ha dado el Grupo Khronos (suena a organización secreta de supervillanos peliculeros). Vulkan plantea una serie de cambios necesarios, como acceso más directo al hardware o mejor uso del multihilo, pero en una forma que no me esperaba. Ahora los drivers se simplificarán, y muchas cosas irán a parar al lado de la aplicación (eso me suena de Wayland).
Un clásico ejemplo de esto es SPIR-V, un lenguaje de representación intermedia, que al principio no me quedaba claro para qué rayos servía. Decía soportar la representación de programas OpenCL y Vulkan, lo cual para mí no significaba nada. Esto de ser ignorante es un poco molesto a veces, pero bueno, leyéndome el overview me cae una gota de conocimiento y me percato de la genialidad de SPIR-V: es un lenguaje intermedio (se nota que nunca aprobé Técnicas de Compilación). Actualmente, el driver incluye un compilador que convierte el shader GLSL en un código que el GPU ejecuta. Con Vulkan, compilamos el GLSL a SPIR-V, y el resultado es lo que distribuimos con el juego, amén de que el driver se ahorra compilar. Y quien dice GLSL, dice OpenCL. Es más, que esto abre la posibilidad de que Chicho el Cojo se haga su propio lenguaje shader para su exclusivo motor Zypote3D, con solo tomarse el trabajo de hacer un compilador que genere el código SPIR-V.
No menos bienvenido es que con Vulkan el CPU podrá formar command buffers en diferentes hilos, trayendo al fin el necesario soporte de paralelismo que ya mencionaba antes, o el impulso a un ecosistema de herramientas libres, como el Depurador que han venido desarrollando Valve y LunarG.
Montones de cosas, que es una pena que no estén aquí ya, pero que en menos de un año ya podríamos estar disfrutando.

jueves, marzo 12, 2015

Adiós a Terry Pratchett

Acabo de enterarme de que ha muerto el maestro. Supongo que como buen mago, habrá visto a la Muerte, montada en Binky. Imposible expresar en palabras la tristeza por perderlo.

martes, marzo 10, 2015

Equipando objetos

Ya estamos dando los primeros pasos para implementar un método de equipar los items en el personaje.


Por supuesto que aún es muy limitado, se trataba solo de probar la técnica con Urho3D, que es básicamente el mismo que usé con Ogre3D: adjuntar la geometría a un hueso. Las armas y escudos carecen de complicaciones, salvo encontrar la transformación correcta para que queden bien ubicados.
En cambio, otros objetos corporales, como las armaduras, guantes y botas, ya son más complicados y estamos trabajando en eso. En estos casos la solución implica cambiar una sección del cuerpo completa, por eso es que los personajes se están modelando teniendo eso en cuenta.
Cuando termine de implementarlo, lo explicaré en detalle aquí (y también en el blog en inglés), para que sirva de referencia.

jueves, marzo 05, 2015

Revisitando el asunto IA

Ayer dediqué unos minutos a iniciar el trabajo en mi nueva solución par al inteligencia artificial. Anteriormente había intentado asignar scripts a las entidades, lo cual no funcionó, y luego tener clases especializadas por cada profesión o tipo de conducta. Tampoco funcionó, aunque quizás debí dedicar más tiempo a hacer accesible la instancia de los datos del juego en esas clases.
Mi nueva solución "invierte" el método, en vez de tener la IA dentro de l a entidad, tengo una clase que opera sobre ella, desde afuera. La idea es sencilla... y terriblemente mala. Siento que no es así como debería ser, pero ya que no consigo implementar la primera variante, tengo que luchar con ésta. Imaginen una clase enorme con un montón de funciones, una para cada tipo de conducta en los diferentes estados de la entidad (idle, combate, y así sucesivamente). Si esto fuera un examen, no me daría a mi mísmo ni 3 puntos de 5.
Pero de momento  tendrá que bastar con esa solución tan chapucera.

miércoles, marzo 04, 2015

Siguen las rebajas: Unity3D personal y Source 2

Los estudios de desarrollo siguen tirando la casa por la ventana, esta vez han sido Unity y Valve los que estrenan nuevo modelo de licencias, con ofertas gratis.
En concreto, Unity3D ahora tiene una licencia personal libre de royalties, con todas las funcionalidades (lo que falta es puramente cosmético). Sin embargo, no es una licencia de equipo, ojo con eso. Estaría bjándomelo ahora mismo de no ser porque a alguien se le ocurrió usar un web installer, así que en casa no podré instalarlo. Hay un paquete en torrent, pero eso ya queda fuera de mi alcance porque es muy grande y los clientes web que uso no dan para tanto.
Por su parte, Valve presenta en sociedad su nuevo Source 2, un motor poco usado, con la particularidad de que ahora es gratis para creadores de contenido. En concreto, los programadores de juegos no podremos echar mano, de momento, a Source 2 sin pasar por caja.

martes, marzo 03, 2015

Animaciones y más

Ayer casi conseguí implementar el soporte de la lista de animaciones para cada entidad. Debí trabajar en esto antes, pero siempre aparecían otras cosas, y como no habían animaciones para probar, pues siempre se quedó para después. Me faltó tiempo, pero está muy cerca.
Tenía pensado terminarlo ahora en la mañana, pero apareció otra tarea urgente: comprobar la factibilidad de manejar el modelo dividido en sub-mallas. La idea es facilitar el cambio de items que pueden ocasionar clipping, como las armaduras. El artista y yo estamos discutiendo posibles soluciones, y ésta es una de ellas. Equipar un objeto sería solo cambiar una textura, y quizás adjuntar una malla sencilla para aumentar el detalle.
Además, he pensado que tendría una beneficio adicional: sería posible personalizar la apariencia; el jugador tendría varias cabezas para escoger, o yendo más lejos, también el pelo.
En el foro de Urho dicen qeu no es necesario, ya que se puede instanciar la malla adjunta como un AnimatedModel esclavo, sin embargo, estoy tratando de sacar lo mejor de ambas soluciones, y hacerlo de una forma que sea aplicable en otros motores. Con esto de que Unreal no necesita pago adelantado ahora, ya no es descabellado valorarlo como una opción para un proyecto comercial.

lunes, marzo 02, 2015

Unreal Engine es casi gratis

Ya no hay justificación para no usar Unreal Engine 4: todos los costos por adelantado han sido eliminados. Ahora pagarás solo el 5% trimestral por los ingresos, descontando los primeros $3000, y tendrás acceso a todas las futuras actualizaciones.
No he podido accesder al anuncio oficial, porque el acceso está bloqueado a Cuba, o por lo menos a mi direccion IP, aparentemente por un bug que están tratando de solucionar (hace una semana accedí perfectamente). Por eso no sé que limitaciones tendrán los que se acojan a este modelo en cuanto a soporte de plataformas como las 3 Grandes: Xbox, Playstation y Nintendo.
De todas formas, una barrera importante para los que no podemos pagar ni siquiera $1 de suscripción ha sido eliminada. Lo interesante será ver la respuesta de las otras empresas a esta jugada. Hasta dónde bajará Crytek? Unity3D se atreverá a cambiar su sistema de licencias?

Mas problemas con la IA

Ayer descubrí otro problema en el diseño del scripting de la IA en el proyecto. Al principio, intenté adjuntar scripts a los nodos desde el editor de Urho3D, sin embargo, esto no funcionó bien. No podía pasar en un parámetro la entidad en cuestión. Me quedó la opción de crear varias clases, una para cada tipo de conducta: soldado, mago, mercader, etc. Por supuesto que no era la opción que quería, pero no se me ocurría ninguna otra.
No me había metido a fondo a probar esta variante, así que recién descubro que una variable global, que creía accesible en estas clases, no lo es. Por eso, el script está "ciego" al entorno del juego.  Salvo la información de la entidad en sí, no ve más nada, así que tengo que rastrear qué falta para que la variable global con la instancia del juego sea visible dentro de la IA.
Uno de mis grandes problemas de Urho3D es precisamente ese, que en ocasiones  el proyecto parece un montón de scripts sueltos sin conexión entre sí. Queda demostrado que un mes no es tiempo suficiente para valorar un motor, al menos, no en mi caso. Debí ir más a fondo y también debí invertir más tiempo en Godot (que aún sigue sin gustarme). Típico error cubano: "el compromiso es que esté para Marzo". Y para marzo está, pero incompleto.