miércoles, 4 de mayo de 2016

Curso de Juegos (1)

Curso de Programación de VideoJuegos (1)
Curso Gratuito.

Entrega 1

Introducción 
 
He sido programador la mayor parte de mi vida. Mi vida laboral ha transcurrido dentro del área técnica. 


Principalmente (pero no exclusivamente) dentro del área de las computadoras y las telecomunicaciones.

En los últimos años me he dedicado (debido al nacimiento de una nueva vocación) a la enseñanza y transmisión de mis conocimientos técnicos a las nuevas generaciones encarnadas en mis alumnos.
 

Mirando hacia atrás en el tiempo, he podido ver que, como programador, me he dedicado a casi todas las áreas de desarrollo posibles. Haciendo un recuento rápido, puedo recordar las interminables horas que me ha llevado crear diferentes tipos de programas y utilitarios: 



  • Aplicaciones ofimáticas:  un mini-procesador de textos, una planilla de cálculo, programas para dibujar gráficos comerciales.
  • Aplicativos empresariales: un sistema de doble stock con control de producción para fábricas, sistemas de contabilidad, sistemas de facturación, sistemas de gestión bancaria
  • Aplicativos para programadores: un gestor de bancos de datos, un sistema de comunicación con SQL, controladores gráficos, diseñadores de menús, sistemas de control de acceso.
  • Un lenguaje de computación interpretado completo con su propio entorno IDE: el compilador VPBasic, con el módulo run-time, el intérprete DLL para extender su uso en otros lenguajes y el interprete de scripts para aplicaciones que corran bajo HTML
  • Un compilador real de 32bits: VPBasic compiler en versión experimental de laboratorio
  • Un sinfín de aplicativos minimalistas para solucionar problemas específicos.

Todas estas “correrías informáticas”, me llevaron por distintos tipos de lenguajes:
 

  • Inumerables versiones de Basic (Commodore, MSX, GWBasic, Qbasic, QB45, TurboBasic, FirstBasic, PowerBasic, VisualBasic, etc)
  • Distintas versiones de C: DevC++, VisualC++, BorlandC++, BorlandTurboC++, Pelles C++, etc.
  • Java en diferentes “versiones” Java Básico, Java Script, Java para Móviles, para Android, para Aplicaciones Empresariales, etc.
  • Lenguajes para generación de páginas web: HTML, ASP, Php, Scripts específicos para servidores web, etc
  • Lenguajes de bajo y bajisimo nivel: el maravilloso Masm32 y la críptica programación directa en lenguaje máquina
Si bien como programador he podido darme el gusto de crear diferentes tipos de aplicaciones para diversos usos, todavía hay algo que me gustaría explorar: el mundo de los juegos.

A estas alturas no es que no sepa programar juegos: conozco la teoria necesaria para implementarlos, pero cuando dejé mi vida como programador (hace ya unos  5 años), no dejé terminado ningún juego porque no era un modelo rentable de trabajo (esa costumbre de trabajar para vivir..).

Pero las cosas han cambiado para los programadores jóvenes: hay un mercado creciente para los programas lúdicos y según he podido ver, muy pocos instructivos prácticos para aprender rápidamente.

Cuando empecé a mirar la bibliografía disponible en internet, ebooks y libros en papel, quedé bastante decepcionado. Lo único rescatable que pude encontrar, son unos artículos de Ian Bell (el autor del mitico ELITE) sobre matemáticas para programadores que ayudan a la creación de simulaciones gráficas en 3D. Pero no hay nada de técnicas para crear los engines de comportamiento o inteligencia artificial. La mayor parte de lo que se encuentra, ayuda al programador a controlar eventos, teclados, crear un par de sprites, controlar las colisiones… y no mucho más. Ayudan a lo obvio, pero no para lo importante.

Lejos están los años 80 en los que los programadores todavía acudíamos al kiosko de revistas para buscar las maravillosas publicaciones dedicadas a la computación hogareña. Recuerdo los artículos técnicos escritos por los propios desarrolladores de juegos que nos hacían soñar con crear en los  Basic’s de Atari, Commodore, MSX o Amstrad esos aplicativos que por su lentitud debían incluir rutinas en ensamblador.

Esos maravillosos artículos técnicos, escritos por jóvenes programadores despertaron muchas vocaciones (incluso la mía propia). En una época en la que todo estaba por inventarse, había que crear desde cero, línea por línea al “engine” para llevar adelante un programa.

Pero lamentablemente esos tiempos ya no existen. Ahora todo está enlatado. Ahora todo es Open Source y algunos programadores se confunden pensando que al usar rutinas ajenas Open Source están “desarrollando”, cuando en realidad no aportan absolutamente nada nuevo y se vuelven cada vez más y más dependientes de otros programadores.
 
Muchos desarrolladores que critican a MicroSoft por sus paquetes “cerrados” y sus políticas restrictivas, se han vuelto tan dependientes del Open Source que si por algún motivo ese Código Fuente no estuviera disponible, serían incapaces de desarrollar una solución propia para reemplazarlo.
 
Eso se ha extendido al mundo de los juegos de computadoras. Buscas un libro que te enseñe a “programar juegos” y te encuentras apenas un par de rutinas y el autor te explica cómo enlazar el aplicativo a una librería para usarla en todo su potencial. O directamente te enseña a programar un entorno que te volverá ultra-dependiente de las actualizaciones del licenciatario.
 
Si el autor es muy “guau”, te propondrá usar un “engine” open source para que te convenzas a ti mismo de que “ERES UN PROGRAMADOR DE JUEGOS”, cuando en realidad eres un desarrollador que apenas sabe cómo llamar a la librería que es la que en realidad hace el trabajo duro.
 
Hoy hay pocos programadores que desarrollen sus propios motores de inteligencia artificial. La mayor parte de los mismos están tan desnudos de conocimientos que no saben programar las tácticas para tableros de ajedrez. Dependen del azar porque no saben como crear inteligencia en sus aplicaciones. Los programadores lúdicos actuales están completamente desnudos de conocimientos frente al teclado. Y eso se ve por el nivel de las creaciones. Las aplicaciones de juegos para celulares abundan, pero su nivel es tan bajo y chato que aburren después de dos o tres jugadas. Y es que lo único que hacen es cambiar los fondos y los sprites mientras mantienen la temática repetitivamente versión tras versión.
 
La idea, entonces, es ayudarte a corregir eso. Esta serie de artículos te mostrará de modo práctico COMO HACER UN JUEGO DESDE CERO, sólo con tu cerebro y conocimientos. Aprenderás a crear tus propios “engines” de visualización, de control, de comunicación… y de inteligencia artificial.
 
Si este enfoque no es de tu agrado… no importa demasiado, porque en realidad lo escribo para mí mismo y para uno de mis hijos, que parece estar “despertando” a la vocación.

----------------------------------------------------------------------
Curso Gratuito de Programación de VideoJuegos

  1. Introducción

  2. A quienes va dirigido el curso
  3.Temario del curso / Herramientas
  4.Primer programa (codigo fuente)    
  5.Detectando colisiones y comiendo objetos
  6.Eliminando el bug de nuestro programa ----------------------------------------------------------------------



http://profesorponce.blogspot.com.ar/p/libros-publicados.html




No hay comentarios:

Publicar un comentario