¿Por qué este curso?

Mucha gente me ha pedido que, tomando como base los cursos de Pascal y/o C/C++ que he desarrollado, creara ahora un curso de programación de juegos.

Existe más de un texto que cubre esta temática. Personalmente, a mí me gustan dos:
 

  • PCGPE (PC Games Programmer Encyclopedia, la enciclopedia del programador de juegos de Pc) es muy completa, pero está en inglés, y hasta cierto punto está obsoleta, porque se centra en la programación bajo MsDos.
  • El CPV (curso de programación de videojuegos) está en español, es algo menos completo pero es muy fácil de leer. También está algo obsoleto, porque se centra en MsDos.


¿Y qué aporta este curso?  Apenas un par de cosas, que tienen sus ventajas, pero también sus inconvenientes:
 

  • Está en español. Eso hará que llegue a menos cantidad de gente, pero también que los castellano-parlantes tengan otro texto de donde extraer información, aunque no conozcan el inglés.
  • No entraré tan "a bajo nivel" como en los dos cursos que he mencionado antes. Eso puede ser malo porque quien "me siga" no dominará tanto la arquitectura del PC, pero tiene de bueno que se podrá avanzar más rápido y sin necesidad de tantos conocimientos técnicos. Hoy en día hay muchas "bibliotecas" que se encargan de la parte más cercana al hardware, sin que nosotros debamos preocuparnos tanto por ello.
  • Lo que aprendamos se podrá aplicar para crear juegos que será posible compilar para MsDos, para Windows y para Linux, sin ningún cambio o casi (esperemos).
  • Yo estoy localizable, algo que no puedo decir (al menos en este momento) de los autores de los dos cursos anteriores, de modo que puedo intentar atender las solicitudes para dirigir el curso hacia los aspectos que despierten más interés. 

 

Condiciones de uso.

Este texto se puede distribuir libremente a otras personas, siempre y cuando no se modifique. Tienes permiso para utilizarlo, pero pertenece a su autor, José Ignacio Cabanes.

Este texto se distribuye tal cual, sin ninguna garantía de ningún tipo. Si el uso directo o indirecto del contenido de este curso provoca cualquier problema en tu ordenador, el autor del texto no podrá ser considerado responsable en ningún caso. Este texto es para uso personal: su inclusión en cualquier otro artículo, curso o medio de cualquier tipo deberá ser consultada previamente al autor y deberá contar con su aprobación. La utilización del curso supone la aceptación total de estas condiciones. 

¿Cómo puedo colaborar?

Este texto está hecho "por amor al arte", sin recibir nada a cambio. Si quieres ayudar a que se siga mejorando, tienes varias formas de hacerlo:
  • La más sencilla: envíame un mensaje de apoyo, diciendo que utilizas el curso, qué es lo que te gusta y qué es lo que no te gusta.
  • Si descubres algún error, házmelo saber.
  • Si te consideras capacitado para colaborar aportando algún artículo creado por ti, será más que bienvenido.


Insisto: la única colaboración "imprescindible": es la primera de todas ellas: enviar un mensaje de ánimo, para que vea que este esfuerzo sirve para algo. Eso hará que robe parte de mi (poco) tiempo libre para irlo mejorando.

¿Cómo puedo preguntar dudas?

Si tienes dudas, posiblemente tu mejor alternativa será acudir al foro específico para el curso, creado en AprendeAProgramar.com

¿Qué herramientas emplearemos en este curso? 

El lenguaje que emplearemos va a ser C++(aunque traduciremos muchas cosas a Pascal, lee más abajo) Los primeros ejercicios serán más simples y usaremos un lenguaje muy cercano al C, sin sacar partido de la Programación Orientada a Objetos, pero más adelante sí la utilizaremos, cuando nuestros proyectos vayan siendo de mayor envergadura. 

En concreto, comenzaremos por usar el compilador DJGPP y la librería (perdón, quería decir "biblioteca") Allegro

Esta biblioteca se distribuye como código fuente, de modo que podemos recompilarla para que nuestros programas la aprovechen aunque usemos otros compiladores. Esto nos permitirá que nuestros programas estén diseñados inicialmente para DOS, pero después podremos hacer fácilmente que sean programas de Windows, sólo con usar otro compilador como MinGW.

Eso sí, tampoco necesitarás dominar C++ para seguir este curso (espero). Las órdenes relativas a gráficos que necesitemos las iremos viendo conforme nos hagan falta.
 

¿Y si no sé programar en C++? 

Es muy posible que seas capaz de seguir el curso sin problemas si tienes conocimientos de otro(s) lenguajes de programación, como C (por supuesto), Pascal (te costará algo más) o Basic (más difícil todavía, pero posible).

En cualquier caso, tienes muchos cursos gratuitos de C++ a tu disposición en Internet. En mi propia página Web tendrás a tu disposición más de un curso que te puede resultar útil. Entre ellos estará mi curso (claro) y algún otro que yo haya considerado interesante. Por cierto, si encuentras por Internet algún curso que esté bien y que se pueda distribuir libremente, te agradecería que me lo indicaras para que lo incluya en mi Web.
 

¿Y si prefiero el lenguaje Pascal? 

Tienes tu parte de razón. El lenguaje Pascal es más legible que C (y C++), y también existen compiladores para Windows, Dos, Linux y otros sistemas operativos. Así que se aprueba la moción: haremos las cosas también en lenguaje Pascal, utilizando el compilador de libre distribución Free Pascal. Eso sí, nos limitaremos a las posibilidades "estándar" que este compilador incorpora, de modo que no podremos hacer tantas cosas avanzadas como con C++ y Allegro (existen bibliotecas análogas para Free Pascal, como Graphix, pero no entraremos a ellas... al menos por ahora).
 

¿Y qué tal el lenguaje Java? 

Tampoco es una mala idea: 
  • El lenguaje Java tiene una sintaxis parecida a la de C++, de modo que los cambios no serán exageradamente grandes.
  • Existen versiones de Java para Windows, Linux y otros sistemas operativos (incluso algunos teléfonos móviles actuales incorporan una versión reducida del lenguaje Java).
  • Las órdenes de gráficos, manejo de ratón, etc. son parte del propio lenguaje, de modo que no dependemos de "bibliotecas externas" como Allegro. 

Entonces... ¿qué usaremos?

Nos centraremos en C (y más adelante en C++) con la ayuda de la biblioteca Allegro, pero indicaremos los cambios que serían necesarios para que cada juego funcione en Pascal o en Java, aunque no siempre sea posible o a veces suponga que el juego tenga alguna limitación (como no tener sonido, por ejemplo).