21 de marzo, 2014
Artículo indiespensable
Indiespensable
Programando para la industria del videojuego (Segunda parte)
Programando para la industria del videojuego (Segunda parte)

La industria del videojuego está en alza (si me dieran un duro cada vez que lo oigo): factura más que el cine y la música juntos y da de comer a muchísima gente. Además, hacer juegos es el trabajo soñado de muchos: Ganarse el pan dando vida a personajes y mundos imaginarios, entreteniendo a miles de personas y enganchando a chavales para arrebatarles la paga del fin de semana con un free to play de ética dudosa. Bueno, intentemos olvidar esto último. ¿Por dónde empezar si quieres dedicar tu vida a este sueño?

Quizá te guste la programación, y puede que portes con cierto orgullo reprimido un título en ingeniería informática. Tal vez te encante explorar tus ideas y verlas hechas realidad. Posiblemente incluso hayas hecho algún juego en tu tiempo libre o participando en una jam. Con que se te haya pasado por la cabeza intentar buscar trabajo en este sector, es probable que hayas asistido a alguna conferencia o escuchado alguna charla sobre «Cómo ser un profesional de la industria del videojuego». Estas charlas las suelen dar altos cargos de grandes empresas, jóvenes que han conseguido un trabajo en una desarrolladora famosa, o emprendedores que se lo han montado por su cuenta con cierto éxito.

Desgraciadamente, ninguno de sus puntos de vista le suele valer a la gente de a pie, como imagino que es el lector de este artículo. Lo sé, porque he pasado por ello varias veces. Los altos cargos a menudo no conocen las políticas de contratación, la competencia que hay ni los salarios que se cobran. Los empleados de empresas conocidas muchas veces han llegado ahí por recomendación, en otros casos son verdaderos genios (cosa al alcance de pocos) o, sencillamente, han estado en el momento adecuado en el lugar adecuado, y no han tenido la suerte de tener que buscar trabajo durante meses ni de ser becarios sin sueldo. Y los casos de éxito empresarial, bueno, son casos aislados, no todos los emprendedores tienen éxito y a menudo influye la suerte, con la que no se puede contar.

Así que, ¿qué es necesario? ¿Por dónde empezar? Si has seguido nuestros espléndidos artículos sobre desarrollo, tal vez te hayas hecho una pequeña idea de algunos de los conocimientos y técnicas que conllevan los videojuegos. Desarrollar juegos es duro y requiere competencia en habilidades muy distintas y a veces opuestas. Pero, por no alargarme hasta la eternidad, voy a hablar sobre la labor que me es más familiar y a la que me dedico profesionalmente (a veces a mi pesar): la programación.

Estudios

A día de hoy en España, aún estamos en la edad de piedra en lo que se refiere a carreras que te habiliten para trabajar como programador de videojuegos. Afortunadamente muchas veces las empresas no requieren un título como aval. Aunque ya se empiezan a ver ciertos requisitos en las ofertas de trabajo, suele ser para cribar entre tanto curriculum recibido, sin llegar a ser realmente determinante. Es por ello que cobra muchísima importancia la experiencia y los trabajos que puedas enseñar: Juegos publicados, demostraciones, prototipos, lo que sea que demuestre lo que sabes, y cuanto más acabado y vistoso mejor.

De requerirse algo, lo más corriente es que se pida una ingeniería informática (o similar) y/o haber realizado algún curso o máster específico sobre desarrollo de videojuegos. De hecho, ahora hay mucha oferta de este tipo de cursos y estudios que te prometen un futuro maravilloso en el mundo de los videojuegos:

La lista sigue, ahora están brotando como setas: prácticamente toda universidad que imparta carreras tecnológicas tiene uno, además de muchas academias privadas, pero no son nada baratos. ¿Para qué sirven si en muchos casos no es necesario un título? Además, gracias a la cantidad de información al alcance de cualquiera, suele ser cierto que no hay nada en estos cursos que no puedas aprender por tu propia cuenta.

Game Dev StorySin embargo, aparte de introducirte en muchos de los pormenores y pormayores del desarrollo de videojuegos, ayudan a meter la cabeza en el sector desde un punto de vista más profesional, ya que suelen tener un profesorado que está en relación con la industria (si no pertenece a ella directamente); pero, sobre todo, ayudan con una cosa: los contactos. Se termina el curso/máster/carrera conociendo a personas que probablemente pasarán a formar parte de alguna empresa que desarrolle videojuegos. Y tener amigos colocados es una ventaja a la hora de encontrar trabajo. Gracias a ellos uno puede enterarse si alguna desarrolladora busca alguien con su perfil, dónde es más fácil encontrar empleo, qué trabajos son mejores o peores, qué salario se puede esperar, qué tener en cuenta a la hora de atender a una entrevista, etc. Además, muchas desarrolladoras tiran de sus propios empleados y les preguntan antes de contratar.

No quiero decir con esto que lo único que se consigue en un curso de este tipo es amigos. Se aprende muchísimo, y más rápido que haciéndolo en solitario. Pero pese a todo ello, si no se dispone de suficientes recursos económicos para acceder no hay que tirar la toalla, hay otros lugares donde hacer contactos y aprender mucho como game jams, seminarios y charlas sobre desarrollo, webs o cualquier evento para desarrolladores o aficionados. Son muy recomendables, tengas estudios o no.

¿Qué conocimientos necesita un programador de videojuegos?

Ya sabemos que todo lo que se pueda aprender en este mundo es aplicable a videojuegos y que hay una gran oferta de cursos para aprender desarrollo. Pero dejadme que os resuma algunas de las cosas que pueden ser imprescindibles a la hora de buscar trabajo como programador en un sector tan competitivo como este. Muchas de ellas las encontrarás en las propias ofertas de trabajo, pero otras formarán parte de las entrevistas o las pruebas de aptitud y conviene estar preparado. Es probable que, incluso atendiendo a un máster especializado, tengas mucho que aprender por tu cuenta.

  • Lenguaje de programación – Como es lógico. Hay muchos trabajos distintos dentro de la programación, y puedes encontrar ofertas para casi cualquier lenguaje, pero, por mi experiencia, lo más extendido ahora mismo es C/C++ y C#. En las entrevistas técnicas te puedes esperar cualquier tipo de pregunta sobre el lenguaje con el que supuestamente vas a trabajar.
  • Programación a nivel bajo – Es bastante normal que se requiera tener algunas nociones de cómo funciona un compilador, dónde se almacenan las variables dinámicas y estáticas, cómo funcionan ciertas estructuras (tablas hash, listas enlazadas) y cómo se disponen en la memoria, etc. Dependiendo del trabajo incluso puede ser necesario saber cómo operan los procesadores y algo de ensamblador (aunque no suele ser lo más corriente).
  • Programación a nivel alto – También se suelen requerir conocimientos sobre algoritmos, recursividad, ingeniería y arquitectura del software, y conocer patrones de diseño y metodologías ágiles.
  • Motores gráficos – Aunque hay equipos que utilizan su propio motor gráfico, muchas ofertas de trabajo son para desarrollar juegos con un motor comercial. Es conveniente conocerlos. Es muy corriente ahora ver ofertas para trabajar con Unity3D, sobretodo en proyectos más pequeños y juegos para móviles, aunque también son muy comunes UnrealEngine, o CryEngine. A veces, también se requiere conocer otro tipo de motores más específicos, como PhysX o Havoc.
  • Matemáticas y geometría – No basta sólo con saber programar. En el desarrollo de videojuegos es necesaria una cierta base matemática ya que casi todo lo que ocurre en un videojuego responde a fórmulas algebraicas en mayor o menor medida. Se suele requerir estar familiarizado con la geometría espacial (en tres y dos dimensiones), vectores, trigonometría (los senos y cosenos son el pan de cada día), saber calcular ángulos y posiciones, y conocer algunos conceptos más complejos como matrices y cuaterniones, o al menos saber para qué sirven. Es muy habitual que se hagan preguntas al respecto en las entrevistas.
  • Programación gráfica – Conviene saber, por lo menos a grandes rasgos, qué es un shader, qué procesos intervienen en la iluminación, cómo funcionan los sistemas de partículas, cómo se calcula el color de un píxel, las transformaciones geométricas que se necesitan para mostrar un gráfico en pantalla…
  • Otros – Es imprescindible haber tenido contacto con sistemas de control de versiones (SVN, Git, Perforce). Y es frecuente que algún programador tenga que meter mano a los gráficos (aunque sea solo para hacer pruebas), por lo que muchas veces es bastante útil conocer PhotoShop, o 3D Studio Max, aunque no sea un requisito fundamental.

Sobre todos esos temas se han escrito muchos libros, y hay infinidad de recursos en línea. Al principio, todo esto puede sonar inabarcable, pero todo es ponerse y echarle horas. Nada de esto se aprende en una tarde, hay que pelearse con ello. Y hay que estar bien preparado porque muchas de estas cosas las preguntan en las entrevistas y pruebas de acceso (de lo que hablaré en el próximo artículo). Muchas veces el fallar una sola pregunta puede descartarte, y, además, es el pan de cada día. Se trabaja con todo esto continuamente.

Por supuesto, también es necesario conocer la industria y estar al día. Hace un par de años, con el boom de los juegos de Facebook, podían verse cantidades ingentes de ofertas para trabajar con ActionScript y Flash, sin embargo, ahora C# y Unity3D es quizá lo más común. En este mundo las cosas pueden cambiar radicalmente de un año a otro y que sean otras tecnologías la que te den trabajo. Es mejor no despistarse y seguir aprendiendo sin descanso.

PROGRAMANDO PARA LA INDUSTRIA DEL VIDEOJUEGO (PRIMERA PARTE)

Acerca de Enrique Hervás


Humano Nivel 32. Diseñador y Programador de videojuegos Nivel 6. De esos a los que sus padres prohibieron jugar a "las maquinitas" por estar demasiado enganchados. No sabían lo que les esperaba. Actualmente trabajo como Game Designer en Exient, e intento no olvidarme de mi pasado indie de Game Jams y jueguitos con Join2 Games

5 comentarios
  • Muchas gracias por publicar el artículo, el caso del genio lo viví porque uno de mi carrera consiguió trabajo en Crytek al irse de Erasmus a Londres gracias a la recomendación de un profesor allí, pero sé que para personas más patatas cómo yo eso es muy difícil.

    Además me viene útil porque desconocía algunas cosas que preguntan en las entrevistas, sobretodo lo de programación a bajo nivel. Y ya sé que tendré que volver a repasar Ingeniería del Software y Geometría, que pereza xD

    Sigue con los artículos que están muy interesantes :D

  • Kike Alcor

    Yo añadiría otra cosa más a las ventajas del máster, que creo es la más importante a corto plazo (a largo plazo sin duda los contactos), y es el proyecto fin de máster que suele realizarse en la mayoría de ellos. Sin duda lo que más se mira al buscar empleo en videojuegos es la calidad, cantidad y tamaño de proyectos que tengas bajo el brazo, y en un máster generalmente acabas con un proyecto que sin que sea el juego del año, tiene un tamaño y complejidad respetable. Y otro consejo para el que se plantee hacer un máster, recomiendo escogerlo sabiamente (Pompeu Fabra, Complutense de Madrid y U-Tad creo que son todos apuesta segura), y dedicarse full-time a él, yo lo hice a la vez que trabajaba y creo que no le saqué todo el partido que podría.

    Genial artículo como siempre ;)

    • Enrique Hervas

      Totalmente cierto.

  • Una pregunta. ¿La prevalencia de C# que indicas en desarrollo de videojuegos por qué es? También he visto el aluvión que hay de peticiones de desarrollo de juegos en Java (SDK de Android) u Objetive-C.

    Muy buena tu trilogía en general, me quedo con ganas de preguntarte un montón de cosas.

    • Enrique Hervas

      Perdona por llegar tarde (muy tarde) a responder la pregunta. No la ví en su día.

      Básicamente es por Unity. Ahora se usa muchísimo ese motor en empresas pequeñas y medianas.