De vacaciones

Mañana por la tarde salgo para la capital, a la Feria del Libro y otras cosas. Así que habrá una parada en el desarrollo, que ya hacía falta y estaba planificada, para dar tiempo  a que avancen otras cosas, como el motor de juegos Urho3D.
Si el trabajo avanza como está planificado, a mi regreso ya debería tener algunos modelos propios del proyecto.
Trataré de postear desde la Habana algunas cosas, si el presupuesto me lo permite.

Otra vez en el bache

Coordinar un grupo de trabajo es pesado, pero es especialmente complicado cuando ninguno de ellos tiene acceso a internet, y solo un limitado acceso en horario de oficina a lo que llaman "Intranet Cuba", una especie de microinternet local, lenta y que carece de servicios no esenciales (pero necesarios) como lugares donde hostear archivos o un gestor de repositorios (supuestamente, habrá uno en algún momento).
Al final, aunque solo se trata de enviar correos, uno termina estresado y sin deseos de trabajar. Así que tener tres personas con deseos de ayudar, en vez de motivarme, ha hecho que me aparte del trabajo importante: crear código.

Progresos

El proyecto sigue adelante, a pesar de no haber conseguido algunas cosas y haber postpuesto otras. No hay nada que mostrar, porque son avances en los cimientos básicos, todo interno, nada externo.
El gestor de entidades ya casi se parece a lo que debería ser, aunque aún muchas cosas ni siquiera sé por qué funcionan y el manejo del personaje tiene fallos. Los diálogos funcionan, pero está pendiente una refactorización completa y su correspondiente editor. El resto de los cambios son líneas de código dispersas en diferentes subsistemas, estudios e ideas sobre cómo implementar esos subsistemas.
Hay varios interesados en colaborar, en especial modeladores, pero todavía nada confirmado. De concretarse la participación de al menos uno de ellos, podría contar con modelos nuevos a tiempo para el trailer.

Jugando con Blender

Combinando Makehuman con Blender:







El modelo está generado con MH (por supuesto que no lo hice yo), la textura es en parte pintada a mano y en parte copiada de la textura incluida en MH.
También me dediqué a estudiar animación, y ya conseguí mi primer modelo con dos animaciones. Lo malo es que perdí una de ellas y no sé como. Probablemente fue cuando trataba de eliminar las acciones sobrantes.

Refinando el sistema de diálogos

He estado trabajando en implementar los cimientos del sistema de diálogos (anteriormente solo había escrito el parser) y el estado de juego que se encarga de mostrarlo y manejarlo. Sabía que con el tiempo aparecerían las debilidades que se me habían pasado por alto al crear el nuevo formato, y ayer choqué con algunas dificultades. Mayormente los problemas derivan de la simplicidad de las respuestas, que no pueden especificar cadenas de condiciones o acciones.
Analizando esta situación me percaté de que el sistema se podía mejorar un poco más. Actualmente uso nodos para las líneas de los NPC y bloques de respuestas. Esto tiene un problema: no puedes usar una misma respuesta para dos nodos, hay que duplicarla. La solución es obvia: separar las respuestas en nodos propios. Eso permite además complejizar la sintaxis para incluir cadenas de acciones como entregar/quitar varios objetos.
Espero poder implementar los cambios en un par de días y además adelantar algo en el editor de diálogos, que está abandonado desde hace un mes.

Ya está a la venta mi novela

Yoss me escribió para avisarme de que el libro ya está a la venta y los miembros del taller literario que lo han leído están encantados. No está nada mal para ser la primera vez. Ahora tengo que dedicarme a conseguir un agente literario para lograr la publicación en más países.

Estados de juego casi listos

Al fin logré resolver el misterioso asunto de la herencia en AngelScript, que había estado reteniendo todo el desarrollo. El asunto se solucionaba usando interfaces, que viene a ser como una clase abstracta. Existe la cláusula abstract, sin embargo, eso impide que la clase sea instanciada en forma alguna (solo sirve como clase ancestro), cosa a la cual no le veo sentido o mucha aplicación práctica. Pero así es la POO.
Luego de resuelto ese enojoso obstáculo, me tomó un poco reajustar el código para que los estados de juego funcionen. Faltan detalles por afinar, pero no he estado muy bien de salud en estos días, aparte de que la lucha diaria por el sustento me ha robado algo de tiempo. Pero en esencia, es posible entrar en el modo de juego y volver al menú principal, lo que prueba que el sistema funciona.
Una vez dejado atrás ese asuntico, queda otro problema por resolver. Para emular por completo la funcionalidad de Unity3D, e incluso lo que había implementado en mi primer proyecto, necesito dominar el componente ScriptInstance, algo que no he logrado. Con eso podría asociar scripts a los nodos y ejecutarlos al crear la entidad, o al actualizarla. Parece que esto me tomará algún tiempo tenerlo controlado, porque no he logrado que nadie me aclare qué rayos está pasando con los scripts. Antes al menos se ejecutaban, pero ya ni siquiera eso.
De no lograr que funcione, tendré que buscar una solución alternativa, pero quisiera evitarme la molestia de tener múltiples clases para manejar los distintos tipos de IA de las entidades.

OpenShot me queda chiquito

Ayer me dediqué a la tarea de preparar los segundos iniciales del trailer del proyecto. Siempre he usado OpenShot para mis ediciones sencillas, y pensé que ésta no tendría nada de complicado que no pudiese hacer con este software de edición de video. Sin embargo, parece que estoy equivocado.
El trailer en sí no es complicado, el problema es que OpenShot se me ha quedado chiquito, y eso que solo necesito hacer cosas sencillas, como mostrar varios textos en pantalla. El caso es que el editor de títulos es muy básico: ni siquiera puedo cambiar el tamaño de la letra o hacer títulos con más de dos líneas. Si quiero algo mejor, tengo que acudir a Inkscape. Si quiero títulos 3D, tengo que usar Blender. No puedo ubicar los textos donde quiera, sino en las ubicaciones predeterminadas, izquierda/arriba, derecha, abajo, etc.
Nada, que quedarse corto es poco, me esperaba más de OpenShot, y el tiempo operativo no me da para aprender otra cosa, pues quiero tener listo el trailer en un mes. Parece que tendré que poner en la cola de tareas pendientes volver a probar Lightworks, esta vez en serio, o pasarme a Adobe Premiere.
Y bueno, ya que hablamos del trailer, les adelanto que tendrá su propia música, compuesta especialmente para el proyecto. Y espero que les parezca divertido.

Blender: poniéndose al día con los grandes

Acaba de ser lanzada la primera versión de Blender este año: la 2.73, con la habitual lista de cambios. Resulta interesante, además, leer los proyectos más interesantes que se cocinan en este momento. En especial, la integración en Blender de tecnologías desarrolladas por los grandes de la industria cinematográfica.
En concreto, se trata de tres propuestas:
  1. Alembic, un formato de archivo compacto diseñado por Sony Pictures Imageworks y Lucasfilm, y que es el más utilizado en la industria del cine en la actualidad.
  2. OpenSubdiv, una biblioteca para generar y dibujar superficies de subdivisión en el GPU, creada por Pixar. De hecho, ya existía una rama de Blender con OpenSubdiv, pero por razones de rendimiento decidieron esperar a la próxima versión de Pixar.
  3. Ptex, una biblioteca de Disney que soporta texturas de imágenes sin necesidad de hacer el habitual unwrap previo de las mallas.
Detalles no muy relevantes para los que desarrollamos juegos, pero que contribuyen a convertir Blender en una herramienta a tener en cuenta en entornos profesionales.

De vuelta

Han sido unos largos días de fiesta y trabajo (fiesta para otros, trabajo para mí), pero ya estoy de vuelta.
Unos días muy productivos, tanto que ya puedo decir que mi tercera novela va en camino de terminarse en algún momento de este año. Entre el 30 de diciembre y el 3 de enero el avance fue sustancial, ahora solo queda llenar los espacios vacíos. Esta vez es algo diferente, un universo nuevo.
El proyecto de juego no avanzó tanto, pero conseguí un par de objetivos claves y destapé problemas nuevos. Así es la vida del programador.
De paso, decidí saludar el año nuevo con distribución nueva: al fin me he instalado Linux Mint 17.1. Y Windows 8.1 también. Ya los expertos han explicado en detalle las ventajas de una y otra, así que no me detendré a hablarles sobre los emblemas para carpetas y demás zarandajas. Simplemente, tocaba actualizarse ya.
O sea, que el trabajo no ha parado en estos días y pronto habrá más cosas para mostrar.

Hasta el año que viene

Todo parece indicar que esteré en la oficina muy poco tiempo en estos dos días, así que desde ahora me despido, nos volveremos a ver el año próximo. Les deseo a todos los que me leen un feliz 2015, con mucha prosperidad, tranquilidad, en fin, todo lo bueno.
Trataré de traerles buenas noticias a mi regreso y muchos avances en el proyecto, aunque la falta de internet en casa me limitará un poco en lo que puedo hacer. Se han estado publicando artículos al respecto en este mes, asegurando que se está haciendo todo lo posible para que haya más internet (no específicamente en las casas), pero no hay fechas concretas y los precios serán sin duda, astronómicos en sus inicios.
Así que los dejo por ahora.

Imágenes

Tal y como había prometido, aqu;i están algunas capturas de pantalla del proyecto. 

Primera escena, aún vacía.

Otra escena

Un jardín
Ciclo día/noche
Como ven, ya transcurre el tiempo en el juego y tenemos día y noche; las escenas pueden tener luces que se activan solo en horario nocturno. Está aún en progreso el sistema de diálogos, aunque el parser funciona, la parte visual está en pañales todavía.
Estos días de vacaciones de la semana próxima (aquí es feriado del 31 al 2) me vendrán muy bien y espero terminar algunas cosas básicas como la asignación de misiones y un sistema básico de inventario.

Godot se mueve

Luego de un largo período sin commits, esta semana he visto un par de actualizaciones relativamente grandes (una veintena de archivos modificados o algo así), incluso una de ellas posterior al lanzamiento de la versión 1.0. Se impone dedicarle algo de tiempo a este motor lo antes posible, pero el proyecto actual me está consumiendo bastante tiempo, y considerando al paso que va... mejor no interrumpirlo.
Esta semana se puede he logrado implementar unas cuantas funcionalidades interesantes, incluso una que pensé que me causaría unos cuantos dolores de cabeza: el cambio de escenas. Sí, ya se puede ir de una escena a otra. Lo demás es insignificante: cambio del cursor para señalar objetos o disparadores, avances en el sistema de diálogos, el editor de diálogos, cambios cosméticos en las escenas... nada comparable con eso.
Pero estos avances en Godot me llaman la atención y de veras pienso cogerlo en serio uno de estos días, cuando el wiki entre en funcionamiento y se llene un poco, y además baje los videos de Youtube. La documentación es uno de los detalles que tienen que pulir para conseguir más popularidad. Creo que Urho3D tendrá que ponerse las botas y moverse más rápido, porque la competencia es dura. Godot apunta a ser un motor mucho más cercano a las herramientas comerciales en cuanto a funcionalidades y calidad, y en estos días tienen efectivo en mano para mantener el buen ritmo durante unos meses.
Por supuesto, que a la larga esto nos beneficia a los desarrolladores.