12 de octubre de 2009

Creando Videojuegos

Decenas de juegos virtuales nos invaden año a año nuestras pcs, consolas y almas. Somos parte de una generación gamer. Ya no solo se sigue el fútbol y el boxeo desde la pantalla de un televisor, ahora también, muchos de nosotros, seguimos las finales del Nacional de Korea de Starcraft, algunas peleítas de Guilty Gear o Street Fighter, o intensos duelos de Counter Strikes y similes.



De entre los millones que consumimos desesperada o calmadamente, muchos deseamos también ser creadores de esta movida. Muchos soñamos con programar algún monigote divertido que salte y tome vida, con darle inteligencia a pequeños bichitos para que aprendan a matar personajes. Dicho de otra manera, ¡Queremos crear juegos!



Bien, por muchos foros y blogs, he visto reiteradamente la pregunta de "¿Cómo empiezo?". Si tu deseo es programar, bueno, acá estoy para orientarte un poco.



El nacimiento de un Game Developer

Empezar programando juegos puede frustar a muchos. A diferencia de otro tipo de aplicaciones, los juegos suelen tener más complejidad, más variedad, más cosas a tener en cuenta, y cada nuevo código plantea nuevas dificultades (o apasionantes retos, según tu mentalidad). Un sano consejo, si es que no sos programador, probablemente sea que arranques programando aplicaciones básicas, como una agenda y cosas por el estilo, e intentes luego con pequeños jueguitos sin gráfica, como los de preguntas y respuestas o similares (juegos basados en texto).
Bien, sos programador, tenés una idea de qué significa esto de nadar entre código y volverte gay por culpa de un punto y coma, pero jamás te adentraste en el mundo de la programación de videojuegos y estás más perdido que turco en la neblina.... ¿por dónde garompa empezar?

El camino.. ¿obvio?

Suponiendo que exista un camino para empezar en esto, intentaré darle forma facilmente.
¿Dónde empezar? Una palabra: TETRIS.

Tetris es un juego bien conocido por todos (bien "viciado" sería el término). Single Player, sin complicaciones, sin inteligencia artificial, sin inventos raros. Es perfecto. Sumamente simple y, a la vez, sumamente eficaz. Te va a iniciar en varios de los conceptos clave de la programación de juegos, como el "game loop" (importantísimo, y medular de todo juego), el input, ganar, perder, etc etc.


Mi recomendación: hacelo entero. Sí.. aunque parezca que ya casi lo tenés y que si le das un poquito más ya está terminado y tu cabeza diga "ya fueee... al pedo terminarlo si ya está".... ¡¡¡Nooooo!!!! Terrible error.... no confíes en eso hasta que lo tengas completito y andando.... y hablo con total conocimiento de causa... ¿Qué es completito? Pantalla principal, gameplay, ganar vidas, perderlas, puntaje, game over y juego nuevo.. o sea.. un jueguito entero.
¿Que te da paja? Bueno che.. nadie te obliga a entrar en esto... y sí.. podés abandonarlo... pero te aseguro que la satisfacción será enorme y, por otro lado, realmente habrás aprendido, afirmación que probablemente sea falaz si no lo terminás del todo.
No te preocupes por gráficos ultra grosos... afanatelos por ahí, ponele algo simple pero que te divierta... total... es para vos, en tu pc, en tu casa.

Una vez tengas tu Tetris lindo y terminadito, probablemente hay varios candidatos a seguir la lista: un clon de pong (arkanoid, breakout, etc), que incorpora más dinamismo, más modelos a tener en cuenta (ladrillos, pelota, paleta..), conceptos de física (velocidad, colisiones), etc. Seguidamente, algún Pacman, quizás un gran primer comienzo en el terreno de Inteligencia Artificial.

¿Luego Qué..?

Ok... ya hicimos nuestros primeros juegos chori... simples, choreados, nada originales, pero los amaremos y nos habrán hecho entrar en la senda. ¿Y ahora? Quizás sea momento de pensar en algo más grande, algo como Game Engines, o qué lenguaje utilizar, además de tirarnos el lance alguna empresa del ramo...
Y, consejo ineludible y más que obvio: Googlea!!! Googlea todo el fucking tiempo!!! Google es tu Dios.

Espero que mi visión basada en mi experiencia te ayude a dar los primeros pasos. Si Google te da paja, o si estás mareado, acá te dejo algunos links para que vayas nutriendo tu cabeza:

GameDev
Una fantástica comunidad de desarrolladores de juegos. Muy pensado para indies y con fuerte tendencia al opensource, aunque encontrarás mucha opinión profesional. En la sección para "begginers", encontrarás buena data para comezar en este mundo, incluyeno una nota muy similar a esta, que leí hace ya un tiempito y a quien le debo mis propios primeros pasos.
Un gran sitio. Eso sí, en inglés (como todo..).

GamaSutra
La contrapartida profesional. Todo muy Pro. Notas actualizadísimas con lo último del ámbito. Necesitás estar registrado para leer las notas, pero es gratis. Super recomendable.


Asociación de Desarrolladores de Videojuegos Argentina

Un poco desactualizada... pero sigue siendo El punto de encuentro para los desarrolladores argentinos y para latinoamericanos en general. Un buen punto de partida, está muy cerca de nuestra realidad y encontrás en el foro gente "común" y "como uno"... suponiendo que podamos considerarnos comunes.






3 comentarios:

Mariano dijo...

Me encantó el artículo!
Se nota que esta dirigido a "gente como uno" y no por eso deja de ser motivante, copado y muy informativo.
Sigan asi, van a iniciar a mucha gente en esto y van a salir cosas muy buenas!

Anónimo dijo...

me parece interesante el artículo. Lo que me sorprende es que lo haya escrito un chico de 17 años... sip

Abstract Man dijo...

Mmm.. no tengo 17 años... jajaj