
Tiempo sin aparecer por el blog. Como nuevo USBista aun me estoy adaptando al ritmo de la universidad tal y como lo pueden ver aquí. A partir de las clases con Monascal, me he percatado que es de suma importancia para cualquier programador, en nuestro caso programador de juegos, conocer las herramientas que tenemos a nuestra disposición para resolver problemas. Luego de nuestra mente, la siguiente herramienta no son los motores gráficos, ni los lenguajes de desarrollo… ¡son los algoritmos!
Lo que nos ayuda a ser mejores programadores es tener el mayor conocimiento posible de algoritmos. De este modo, podremos atacar un mayor rango de problemas y enfrentarlos de forma eficiente. Bien sea porque necesitamos de la solución correcta o de la más rápida (usualmente es ésta última en nuestro campo). Todo problema puede ser descompuesto en sub-problemas más pequeños hasta llevarlo a un problema trivial sencillo de resolver. Algunas veces nos interesa, y otras no (ahí es cuando entra en escena el uso de motores, frameworks, APIs, etc.). Bien sea que Halo 38479 tenga efectos visuales que te hagan decir que en HD se ve mejor que en la vida misma, pasando por el efecto del balón en FIFA 2100pre (chiste interno Venezolano), hasta llegar a los zombies de Left 4 Dead. Los unas con principios matemáticos, estadísticos, físicos, etc… todo se resume en eso; al-go-rit-mos.
Los que tienen ya cierto conocimiento del tema probablemente estén familiarizados con las competencias o maratones de programación. Participar en ellos, como un medio para lograr nuestro fin, es sencillamente invaluable. Todo el que pueda debería hacerlo al menos un par de veces. Participar, y entrenar, para los maratones es bien positivo por dos razones; 1) te ayuda a elevar tu nivel de abstracción para re-plantear los problemas a fin de que puedas resolverlos de forma eficiente y 2) lograr hacerlo en un lapso bien restringido.
¿Resultados? Un mejor desempeño en el producto final y personal. Cualquiera que haya participado en un Game Jam, o está en la industria, lo sabe. Un juego que está desarrollado con algoritmos eficientes tiene mejor respuesta ante el jugador, corre en una mayor cantidad de equipos (en el caso de computadoras personales) y esto se traduce en éxito del juego que, a su vez, es beneficio monetario para la casa. Por otra parte, tener habilidad para resolver problemas de manera rápida nos ayudará pasar menos horas extra frente al trabajo y más tiempo con el ocio/entretenimiento (así éste último sea seguir programando cualquier otra cosa).

Sin embargo, estudiar algo de forma purista puede tornarse un poco aburrido y para ellos hay soluciones interesantes. Recordemos que nosotros queremos programar juegos, por lo que tenemos una herramienta a nuestro favor. Algunos algoritmos nos pueden ayudar a crear juegos tipo puzzle; tal el es el caso de BFS (o búsqueda en anchura). Este algoritmo para recorrer grafos es el idóneo a aplicar al desarrollar el juego Buscaminas. Así como ése, hay otros ejemplos con áreas de interés bien definida; Inteligencia Artificial, Computación Gráfica, etc. A fin de adquirir experiencia, tanto en algoritmia como programación de juegos es recomendable hacer pequeños demos o “juguetes” en la medida de lo posible.
Ok troll Jorge, estoy convencido; ¿y por dónde comienzo? Mi actual profesor de algoritmia ya tiene un blog dedicado al tema de los maratones. Mi recomendación es que lo lean y le hagan preguntas sobre lo que va escribiendo, o le pidan abordar algún tema de interés. Estoy convencido que, dentro de sus posibilidades, hará todo lo posible para atender sus inquietudes. Para quien tenga muy poca o ninguna experiencia, ésta es la entrada que deben leer en su blog para comenzar.
Sólo me resta decirles que disfruten sus sesiones de estudio, programación y me digan luego cómo les resultó el experimento.
[...] This post was mentioned on Twitter by Jorge Palacios, pctroll studios. pctroll studios said: Nuevo artÃculo en el blog / New blog post (just in Spanish in the mean time): http://bit.ly/9mzt7B [...]
¡Excelente chamo! No podrÃa estar más deacuerdo. Aprender de algoritmia es la base para ser mejores programadores e incluso para aumentar nuestra imaginación con conceptos nuevo. Muchos juegos vinieron de problemas algorÃtmicos: Por poner un ejemplo, el Sudoku no es más que hallar la coloración de un grafo 9-coloreable, jeje.
Sigue asà man, tienes muchÃsimo futuro y creo que vas en la dirección correcta. ¡Y de verdad muchÃsimas gracias por la publicidad!
Muchas gracias por el apoyo, y por las clases. Qué bueno que te haya gustado el artículo; tenía tiempo queriendo escribir sobre el tema.
De nuevo excelente articulo de nuevo mi pana , muy bien cada vez que nos dejas algo nuevo , como estos consejos y par de blog para revisar de verdad exito!!! saludos.
De eso se trata el blog, de compartir un poco lo que voy aprendiendo. Gracias por siempre estar pendiente.
Muy bueno el artículo. Y demás está decir que aprender algoritmos no sólo sirve para hacer juegos, realmente sirve para todos los campos de la computación. Y bueno, hay cosas que no se sprenden directamente de los maratones, como la programación paralela, pero como dices lo importante es cambiar la forma de pensar y ganar un mayor nivel de abstracción.
Sí, estoy de acuerdo. De hecho; ambos sabemos que un buen porcentaje, por no decir todos, de los mejores trabajos de programación del mundo están casi que reservados para aquellos participantes de los maratones de programación.
Gracias por estar pendiente del blog y dejar siempre un aporte constructivo.