danirod

Volví a dar una charla sobre videojuegos

El pasado día 12 estuve en la Universidad de Alcalá por segundo año consecutivo para hablar de videojuegos en las Jornadas de Desarrollo de Videojuegos que organiza Delegación de Estudiantes. He tardado una semana en sentarme a escribir este post porque quería pensarlo despacio para dar algunas impresiones más detalladas y valoraciones, tanto por la charla, como por mi percepción del desarrollo de juegos en este momento. (Spoiler alert: que no salte la alarma, no es un post negativo.)

El viernes 12 participé como ponente en las Jornadas de Videojuegos de la UAH; hashtag #DEVIDEOGAMESUAH, dando una presentación más técnica que la del año anterior.

La charla de 2018 se centró más en los aspectos interesantes para cualquier persona que de la noche a la mañana decida embarcarse en la aventura de publicar por su cuenta un juego. Tenía sentido dar esa charla el año pasado, porque por entonces todavía me preocupaba de publicar actualizaciones de Rectball. Este año decidí dar una charla un poco más técnica y hablar sobre metodologías de desarrollo de videojuegos; en particular, Entity Component System.

No voy a compartir todavía las transparencias de esta charla, porque la actividad forma parte del programa bonocréditos, y aunque no estoy al tanto de si hay que hacer alguna actividad posterior a las charlas este año, voy a ser previsor y no revelar material que haría más fácil probar la asistencia. (Mi «yo» estudiante resumiría esto en: «¡trabajáoslo!»). Pero ya las publicaré.

Voy a empezar con la parte negativa para quitármela de encima. La demo no salió bien. Es más, esa demo no debió haberse ejecutado nunca. El objetivo era enseñar cómo integrar un ECS en un videojuego. Hubo dos intentos anteriores al que se llevó a cabo: en el primero, cómo se integra Artemis con un juego que ya existe; y en el segundo, cómo crear un clon de Artemis. El tercer intento empezó a gestarse un par de días antes de la ponencia y no terminó de disponer de una arquitectura o un diseño sólido, por lo que realmente la demo que se expone el viernes es casi improvisación. Algo que detrás de un teclado a solas se me da bien, pero ante un auditorio, todavía no tanto. Hubo una recogida de cable un poco incómoda por mi parte cuando, tras tirar un par de líneas de código, regresé a la presentación dejando el resto como ejercicio para lectores.


Dicho lo cual, dar esta charla, atender a las preguntas y asistir a alguna de las anteriores me ha permitido confirmar algunas ideas en cuanto a desarrollo de juegos indie: ciertas tecnologías que hace unos años eran sólidas en el desarrollo de juegos indie hoy en día han perdido peso. Especialmente en el mundo de los dispositivos móviles. Unity lleva bastantes años, pero antes parecía que había sitio para Java en Android, con sus frameworks basados en OpenGL-ES; o para Objective-C en el mundo de iOS. Hoy en día, la percepción que me llevo es que Unity tiene muchísima más fuerza que antes.

Por supuesto que a mí me daria igual, porque soy de esa corriente que no se guía por modas y que seguiría programando en tecnologías que sacrifiquen portabilidad de cara a ergonomía o puro capricho de quien las programa, pero no sé si podría recomendar a estas alturas darle una oportunidad a frameworks multiplataforma basados en Java, de esos que prometen compilar una vez el juego y ejecutarlo en todas partes y en todo tipo de pantallas.

En cuanto a esto último hablo más como consumidor que como desarrollador, pues hace bastante tiempo que el distanciamiento entre el desarrollo de juegos como hobby y yo creció, y no he tocado Unity. No obstante, si bien es cierto que mi odio moderno a los smartphones hace que preste poco interés por descargar aplicaciones en mi teléfono, de vez en cuando encuentro alguna perla a la que le doy una oportunidad, y casi siempre en los créditos o en las licencias de terceros, se hace alguna mención a Unity o a algún plugin para Unity.

Java hoy en día es un dinosaurio que sigue siendo mantenido por todo el software ya existente, y porque a las empresas grandes les viene bien por lo fácil que es encontrar gente que sepa, ya que sigue siendo uno de los lenguajes de-facto para enseñar en el ámbito universitario, ya que permite enseñar fácilmente conceptos teóricos de programación (como lo fue en su día Pascal), especialmente si están orientados a objetos, pero a la vez en un entorno controlado donde independientemente del hardware del alumnado, va a funcionar.

El hecho de que el ecosistema sea en este momento la anarquía no ayuda a Java. Hace ya más de un año que no uso Java para trabajar, y el ecosistema se ha descompuesto mientras no miraba. Hay un nuevo modelo de licencias por parte de Oracle, OpenJDK es ahora el compilador de referencia, Apache NetBeans está sufriendo una transición un poco dura (para preparar mis demos, tuve que leer varias guías para entender cómo hacer la configuración inicial, por ejemplo).


De todos modos, como decía el otro día por las redes cuando le di difusión a este evento, el viernes pasado volví de Alcalá inspirado. No he vuelto a tirar demos desde que terminé la universidad, y eso que antes las lanzaba y hablaba de ellas (antes de pasar a la siguiente dejando un camino de cosas a medias).

Tampoco ha vuelto a haber ninguna update de Rectball desde septiembre de 2017, por ejemplo. Hay varias circunstancias detrás de esto, siendo una de las más importantes que actualmente la web abierta y potente es uno de mis intereses, no siendo así el compilar código y distribuirlo a través de una tienda de aplicaciones gestionada por una gran corporación.

Si hay un buen momento para aprovechar esta inercia es ahora. Esto ya no va tanto por mis demos, como por el resto de proyectos digitales que actualmente tengo abiertos y que cada vez siento más que se vuelven en mi contra. No quiero desprenderme de ellos, no sé si por nostalgia o porque todavía veo que pueden dar más de sí, pero veo importante cambiar la forma en la que veo algunos de ellos para que funcionen más a favor de cómo las cosas han cambiado, que en mi contra.

Continuará (supongo).