lunes, 21 de enero de 2013

Inicio

Introducción

Mi intención en este blog es la de crear un diario/tutorial de como desarrollo mis videojuegos. Desde la programación, pasando por el arte y el sonido.

El desarrollo de videojuegos en solitario tiene como principal objetivo el auto aprendizaje y el desarrollo de las propias capacidades creativas. Sin embargo a la hora de trabajar en la industria, tendrás que trabajar con compañeros, directores y jefes, con lo cual no se debe considerar el desarrollo en solitario como el modo optimo de trabajar en videojuegos.

Todos tenemos la tentación de considerarnos los mas listos aptos capaces y guapos del universo y que podemos hacer todo por nosotros mismos. Es cierto que actualmente con las plataformas móviles resulta mucho mas fácil desarrollar software y juegos con equipos reducidos, pero ello no implica que se requiera un gran coste, si bien no en dinero, si en tiempo invertido en el desarrollo, cosa que también se tiene que tener en cuenta, sobre todo si tienes novia y amigos y quieres conservarlos.

Mi principal consejo es que te tomes lo que aquí escribo como un método practico de aprender a programar videojuegos, y no como una guía para desarrollar un modelo de negocio.

2D vs 3D

La mayoría de la gente que se acerca al mundo del videojuego lo hace desde la perspectiva del jugador. Ven juegos fantásticos y quieren hacer cosas parecidas. Pues bien, es mucho mas difícil hacer un juego 3D que otro parecido 2D

El 3D añade una dimensión al juego 2D, pero también un montón de problemas. La complejidad de programación y el nivel de matemáticas requerido es mayor. Las herramientas de producciones 3D suelen ser mas numerosas que las de 2D, así también el flujo de trabajo se complica un poco mas.

Es cierto que con la aparición de Unity, UDK, y otros la complicación de programar se simplifica a realizar unos cuantos scripts. Pero la complicación de crear el arte puede no compensar el tiempo de aprendizaje y desarrollo.

Por eso para aprender a programar, he decidido a crear solo juegos 2D. Además todo lo que se aprende en 2D en cuestión de gestión de recursos, inicialización de sistemas, inteligencia artificial, etc. es directamente aplicable a las 3D.

C/C++

Existen multitud de lenguajes de programación, casi tantos como programadores. Ninguno de ellos es tan versátil y puede llegar a tantos dispositivos y plataformas como C/C++.

Si bien el lenguaje de programación C/C++ puede crear aplicaciones para casi todas las plataformas, será necesaria una cuidadosa elección de herramientas y librería para que nuestro código sea lo mas portable posible.

Además, casi todos los lenguajes modernos tienen alguna similitud con el lenguaje C/C++, y este es el más extendido entre los profesionales.

Eso no quita para que por ejemplo utilicemos C# para hacer herramientas, o Python para hacer script que nos facilite la vida, etc.

Otra de mis teorías, es que una vez que aprendes un lenguaje de programación, aprender cualquier otro lenguaje es mucho mas sencillo. Al fin y al cabo, la lógica de un ordenaros no cambia.

Que conocimientos debes tener.

Aunque intentare hacer un curso / recordatorio de programación en C/C++ y también otro cursillo de configuración y utilización de las herramienta de programación, mi intención es no dedicar mucho tiempo a estas cuestiones.

Así espero que el lector de este blog sepa al menos programar en algún lenguaje de alto nivel, para que le sea sencillo adaptarse a la programación en C/C++.

Aquí hay unos libros fantásticos para empezar a aprender a programar de la universidad de Navarra:

Aprenda Lenguaje ANSI C como si estuviera en primero
Aprenda C++ básico como si estuviera en primero
Aprenda C++ avanzado como si estuviera en primero

Hasta aquí esta declaración de intenciones. Espero de todo corazón que os sea útil y os resulte interesante.