¿Cómo empiezo a programar videojuegos? (Parte 1)

Esta semana os traemos la traducción de un estupendo artículo de Tommy Refenes. Tommy cuenta con una dilatada experiencia en el mundo del desarrollo independiente y es, junto con Edmund McMillen, el creador de (entre otros) Super Meat Boy y Mew-Genics.

Sin más, el artículo en cuestión:

Recuerdo que hace unos 5 años envié un email a una profesora del M.I.T. después de verla hablando en un reportaje de la PBS sobre inteligencia artificial. Le escribí un correo electrónico explayándome sobre mis teorías para el desarrollo de la IA, sobre cómo las máquinas pueden programarse para reconocer entornos, cómo las emociones se pueden aprender mediante la experiencia, etc.  Pasé unas buenas 4 horas escribiendo el email porque sentí una conexión con la obra de esta profesora. Fue un email emocionante de escribir porque era algo en lo que estaba muy interesado y quería poder hablar con alguien acerca de ello. Mientras lo escribía tenía mucha esperanza en que quizás tendría una respuesta y tendría a alguien con quien hablar sobre este tipo de cosas, quizá iniciarme en el camino de crear una máquina con IA avanzada. Lamentablemente, nunca me respondió… Ni siquiera sé si leyó el email.

Últimamente, a causa de Indie Game: The Movie y Super Meat Boy, estoy recibiendo varios correos electrónicos/menciones en Twitter/preguntas en Formspring al día de gente pidiéndome consejo. La mayoría de los correos electrónicos son de los aficionados más jóvenes y me hacen preguntas que van desde “¿Qué lenguaje debo usar?” a “¿Cómo saco mi juego en Xbox?”. He leído todos los correos electrónicos, pero no siempre respondo porque me llevaría una buena parte del día, por no hablar de que hay poca variación entre ellos.

Realmente me siento mal cuando no respondo porque se trata de personas que sólo quieren dar con alguien que les arroje algo de luz sobre el desarrollo de juegos. Ellos están haciendo lo mismo que hice con esa profesora del MIT hace muchos años. Están interesados en lo que hago y les gustaría saber cómo hacerlo, quieren ser parte del desarrollo de juegos de alguna manera. Bueno, quiero ayudar, pero no tengo el tiempo, el conocimiento o el deseo de ser profesor… así que aquí estamos. Esto es un FAQ para cualquier persona que quiera un consejo mío sobre cómo hacer juegos.

¿Dónde empiezo con la idea de juego de mis sueños?

 Por dónde empiezo es la pregunta más común que recibo. Creo que comenzar es el mayor obstáculo para muchas personas porque no se dan cuenta de que todo, incluso esos locos juegos AAA que ves por ahí, empezaron de la nada y se fueron construyendo poco a poco hasta que se convirtieron en lo que estaban destinados a ser. Cuando el juego de tus sueños está asentado en tu cabeza y das el primer paso hacia su creación, puede ser muy abrumador pasar del estado de imaginación a implementación. Para alguien que nunca ha hecho un juego, algo tan simple como mover un personaje puede ser algo que simplemente parece un gran obstáculo imposible de superar y puede rápidamente convertirse en una tremenda y desalentadora derrota. No tiene por qué ser así, la clave es empezar desde abajo.

Super Meat Boy empezó como un quad con la imagen de Meat Boy en él. Mew-Genics comenzó como un cuadrado negro que se movía delante y atrás en la pantalla. Goo! empezó como círculos con caras sonrientes en ellos. “Game 2” comenzó siendo una imagen vectorial del personaje de “Game 2”. Todo comienza en el nivél más básico y se va construyendo a partir de ahí.

Es muy importante dar un paso cada vez. Si te aproximas al juego de tus sueños intentando abarcarlo todo de una sola vez, lo más seguro es que acabes frustrándote y agobiándote. Si lo haces dando un pasito cada vez, tus posibilidades de realizar tu visión serán exponencialmente mayores

Desmenuzar tu juego en pequeñas piezas te obliga a analizar y evaluar tus ideas a un nivel más bajo. Esto es esencial porque siempre debes estar abierto a cambios, no debes establecerte una ruta de la que no quieras desviarte. Las desviaciones del plan pueden dar lugar a las partes más interesantes de un juego. Es una forma más orgánica de desarrollar porque piensas en el sistema de juego y estás aplicando nuevas ideas a ideas que ya tenías formadas.

Por lo tanto, intenta lo mejor que puedas desmenuzar tus ideas en pequeños trozos que puedan realizarse fácilmente con tus capacidades actuales. Es más fácil ver el progreso de esa forma, no te frustras tan fácilmente y puedes retomar tu trabajo más tarde y continuar por donde lo dejaste. Recuerda que no hay límite de tiempo para sacar tu juego (si empiezas con límites, vas a pasarlo mal). Aprende a tu propio ritmo y construye tus proyectos como construyes con Legos… pieza a pieza.

 Por poner un ejemplo más detallado, permitidme presentar cómo empezó SMB. Una vez que tuve ese quad con la imagen de MeatBoy, acoplé la entrada de forma que podía moverlo de delante a atrás. Tras jugar con ello un poco, hice que cuando pulsara un botón mi quad con MeatBoy saltara, a continuación trabajé en cómo detenerlo cuando aterrizaba en una plataforma, luego en cuando se adhería a las paredes y pulsaba el botón de saltar, saltaba desde la pared, luego si tocaba un cuadrado verde, moría y así hasta que escribí  la última línea del juego y Super Meat Boy estuvo terminado.

No hay tarea ni progreso demasiado pequeño. Lo que importa es que no te frustres y continúes trabajando en tu juego.

¿Qué lenguaje de programación me recomiendas?

 Esta es la segunda pregunta más común que recibo y, sinceramente, no me gusta porque es una cuestión que no puedo responder. Siempre intento responderla con “el lenguaje con el que te sientas más cómodo”. No creo que esto responda realmente la pregunta porque tengo la sensación de que la gente busca una respuesta concreta o simplemente están empezando y no se sienten cómodos con ningún lenguaje. Voy a tratar de desarrollar mi respuesta para, quizá, ayudar a la gente a elegir el lenguaje que mejor se adapte a ellos, o hacerles ver que usar aquello con lo que se sientan a gusto es la mejor forma de empezar.

Si buscas consejo sobre con qué lenguaje de programación empezar, no necesitas preocuparte por cuestiones como “Funcionará Flash en iOS” o “La XBox ejecuta Java” o “Funciona XNA en MAC”.  El punto inicial es la creación del juego, no lanzarlo o venderlo. Estas cuestiones son importantes cuando te preocupa lanzar un juego, pero lanzar un juego es mucho más sencillo que crearlo. Puede preocuparte del lanzamiento de tu juego más tarde.

 Encuentra un lenguaje que te guste y empieza a programar. Al principio es importante tener tanta satisfacción inmediata como sea posible. Tienes que ser capaz de tener algo en la pantalla cuanto antes y trabajar a partir de ahí. Debes poder editar lo que has creado y añadirle cosas fácilmente. La recompensa instantánea es la clave para permanecer motivado cuando se empieza, así que probablemente no te irá bien ir aprendiendo un lenguaje nuevo mientras creas tu juego. Si lo haces, lo más probable es que te pases semanas leyendo y sin tener nada que enseñar excepto conocimiento que no has sido capaz de aplicar a tu juego todavía. Eso puede ser muy frustrante.

Quédate con lo que conoces o ve por la ruta más cómoda posible para adquirir habilidades que te permitan empezar a trabajar en tu juego. Así que si sabes un poco de Flash, usa Flash. Si usas C++, usa C++. Si sólo usas Java, usa Java. No existe “el lenguaje de programación oficial para desarrollar juegos”. Recuérdalo SIEMPRE. Minecraft está escrito en Java, Super Meat Boy en C++, Farmville en Flash, otros juegos están escritos en HTML5, otros incluso están hechos con tarjetas perforadas… La cosa es que no importa. Encuentra la forma en que puedas hacer tu juego cómodamente y hazlo así.

No te lo tomes como que intento apartarte de la idea de aprender nuevos lenguajes o de trabajar fuera de tu zona de confort. Una vez que consigas arrancar, querrás salir de esa zona de confort y aprender cosas nuevas si quieres crecer como desarrollador de juegos. Preocúpate de crecer luego, mientras tanto asienta tus bases y empieza a programar.

Si no sabes ningún lenguaje y buscas alguno por el que empezar, te recomendaría Flash, Game Maker, Unity o algo similar. Todos esos programas hacen muy sencillo tener algo en pantalla muy rápido y con una curva de aprendizaje muy baja. No quieras empezar con algo como C++ si no tienes experiencia con algún otro lenguaje de programación y estás ansioso por empezar a crear tu juego.

La próxima semana publicaremos la segunda parte de la traducción. El artículo original lo podéis encontrar en Gamasutra: How do I get started programming games???

One thought on “¿Cómo empiezo a programar videojuegos? (Parte 1)

  1. Alberto GR

    Me parece un artículo brutal, a mi lo que más me cuesta por ahora, es encontrar talentos con el 3D, una vez que ya sabes programar el videojuego, quieres más calidad, y eso solo se consigue con gente que de verdad sabe hacerlo bien y ha dedicado muchas horas al 3D!!

    Además también esta la cuestión de encontrar a otros desarrolladores que estén desarrollando su juego en tu mismo lenguaje y que quiera fusionar el juego o algo así o le interese la idea..

    ¿Pero bueno, poco a poco se van haciendo montañas, no?

    Reply

Leave a Reply to Alberto GR Cancel reply

Your email address will not be published. Required fields are marked *