Ni sé la de veces que me han preguntado esto cuando alguien ve una demo de algún juego programado por mí. Es evidente que si quieres incitar a alguien a que se meta en el mundillo del desarrollo, los videojuegos son el reclamo ideal. Pero esto no debe llevar a confusión. Hay mucha gente (profana total, asumo) que cree que desarrollar videojuegos es jugarlos y poco más. Y no.
Hacer un videojuego más o menos presentable es de los retos más arduos que puede haber en el desarrollo de software pero también uno de los más gratificantes. Normalmente hacer un juego una persona sola es difícil. Se requerirá de un grupo de gente, aunque sea de manera tangencial. Me explico: puede que tú, como programador, quieras hacer un videojuego pero con picar código no bastará. Necesitarás a alguien que te haga gráficos y/o música. Ya sea a través de plataformas libres como OpenGameArt, pagando a algún freelance que haga ese tipo de trabajos o convenciendo a alguien para que lo haga de manera desinteresada y se apunte contigo a esta aventura. Todo esto, claro, asumiendo que no seas un crack capaz de hacerlo tú solo.
Por otro lado, hoy día es más sencillo que nunca que tu juego llegue a mucha gente. Hay juegos de ideas muy sencillas que están teniendo acogida. No me refiero ya a los archiconocidos «Flappy Bird» o «Papers, please». Otros no tan exitosos se han abierto un camino más modesto pero camino al fin y al cabo. Me viene a la cabeza «SanctuaryRPG«, creado exclusivamente con caracteres ASCII.

Esto quiere decir que no hace falta un despliegue de medios tremendo para poder hacerse un hueco en el mundillo como hace unos años. Pero no nos engañemos, hay que echarle muchas horas igualmente. Si no la habéis visto, os recomiendo «Indie game: the movie» para que os hagáis una idea de lo mal que lo puede pasar un programador de juegos indie.
¿Qué se necesita para programar un videojuego? Hay varios engines/librerías que están enfocados en este cometido. Vamos a analizar algunos (los que he probado personalmente).
– Librerías SDL (Lenguaje C): Un clásico. A mi forma de ver, un dolor de cabeza por su bajo nivel. Si eres un crack del C no tendrás problemas con él. Si eres novato, no te recomiendo que las uses. Es probable que te desanimes pronto.
– SFML (Lenguaje C++): Mucho más fácil de aplicar que la anterior. Al contrario que SDL, está orientada a objetos. Si quieres hacer juegos que corran rápido en cualquier máquina pero no quieres partirte la cara con algo tan complicado como SDL, pruébala.
– Pygame (Lenguaje Python): Si quieres tener algo que funcione picando poco código y que sea fácil de aprender, Python es tu lenguaje. Pygame es muy sencillo de usar como se puede ver en su página oficial.
–libgdx (Lenguaje Java): Esta es una librería de que está moda. Se caracteriza por su posibilidad de portarse a HTML5, iOS y Android, lo que dota a los juegos creados con ella de un gran potencial para llegar a la gente «casual». ¿Quieres desarrollar juegos para móvil? prueba esta librería
¿Esto es todo? No. Hay muchas más herramientas: Cocos2d, unity, Game Maker… las opciones son muchas. Te animo a que busques por tu cuenta si ninguno de estos motores te convence.
Si, por otra parte, quieres ver el proceso de desarrollo en el frustrante y a la vez gratificante mundo de los videojuegos, lo podrás ver aquí en breve con un juego que estoy desarrollando con libgdx. Escribiré una serie de posts a modo de cuaderno de bitácora donde podrás ver progresos y trabas para, al final, ver como consigo publicar (¡espero!) el juego para gloria del mundo.