martes, junio 19, 2007

DATOS INTERESANTES DE VIDEOJUEGOS

¿QUÉ SE NECESITA SABER PARA HACER UN VIDOJUEGO?
Programación. Lo primero que se necesita es saber programar en algún lenguaje orientado a objetos, yo en lo personal uso C++, pero también se puede utilizar C#, Delphi, Java, etcétera. En cuanto a compiladores, no hay gran diferencia, se pueden utilizar el Visual C++ 2005 Express Edition de Microsoft o el C++ de Borland.

Game Engines. los estudios dedicados a los videojuegos, utilizan Game Engines comerciales o desarrolladas por ellos mismos. Utilizar un Game Engine cuando se está iniciando en la programación de videojuegos, podría ser una limitante hasta cierto punto, porque primero se tendría que estudiar la documentación de ésta para saber utilizarla y si no se tienen los fundamentos teóricos suficientes, cuando se quiera modificar una parte del engine para adaptarla al juego deseado, será mucho más difícil. Existe una gran variedad de engines, desde algunas gratuitas y/o, open source como Irrlicht, hasta otras comerciales como el Unreal Engine 3, cuyo licenciamiento puede rebasar los cien mil dólares.

Matemáticas. Es deseable tener conocimientos generales de álgebra lineal y trigonometría, sobre todo para el área de programación de gráficas. Si no se tienen estos conocimientos, se tendrán que aprender al mismo tiempo que se hace con la teoría y programación de gráficas.

¿QUÉ SE NECESITA APRENDER PARA DESARROLLAR VIDEOJUEGOS?

Esta pregunta no es fácil de contestar, sobre todo porque existen diferentes áreas dentro de la programación de videojuegos: gráficas, redes, inteligencia artificial, sonido, lógica principal.
El área en el que está centrado este artículo es en la de gráficas, y para esta área se necesitan aprender básicamente dos cosas:

•Teoría de gráficas: involucra aprender las bases de los sistemas de coordenadas 2D y 3D, las bases de los objetos 3D que son representados como modelos poligonales (vértices, normales, caras, etcétera); las báses de la arquitectura gráfica (diferentes tipos de transformaciones y proyecciones); las matemáticas involucradas (vectores, planos, matrices y todas sus operaciones relacionadas). Diferentes modelos de iluminación, mapeado de texturas, entre otras cosas. Es necesario tener estos conocimientos, ya que se aplican a las APIs para programación gráfica existentes y son necesarios para explotar todo su potencial.

• Una API para programación de gráficas: que es básicamente una librería que usamos en nuestro código para poder mandar gráficas a la pantalla, sin tener que accesar al hardware directamente (en su lugar, los drivers se encargan de procesar las peticiones hechas por las APIs). Las dos APIs de gráficas más usadas son OpenGL y Direct3D, y dado que los resultados que se pueden obtener con ellas, son, hasta cierto punto similares, la elección de una u otra es cuestión personal.


¿CÓMO PUEDO PROGRAMAR VIDEOJUEGOS PAR XBOX360, PLAYSTATION 3, GAMECUBE?

En el caso de Xbox360, para desarrollar un juego se necesita obtener un “Kit de Desarrollo”, que consta de una consola Xbox360 especial para desarrollo, herramientas, SDKs, y documentación. El desarrollo se hace en una PC con Visual Studio o CodeWarrior por ejemplo. Dicha PC está conectada a la consola especial de desarrollo, generalmente por ethernet. Una vez compilado el código, éste se pasa a la consola; la forma de cómo hacerlo, depende de cada sistema. En Xbox, se cuenta con unos plugins en Visual Studio que copian los datos de la PC al disco duro del Xbox, y después el Xbox monta el directorio que se copió, como si fuera el disco duro interno, para empezar a correr el juego.

Para obtener el kit de desarrollo, se necesita ser un desarrollador registrado con Microsoft, y los kits son muy caros. Aunque existe el XNA Game Studio Express, éste, no es suficiente para hacer juegos comerciales, en realidad, es un producto dirigido más para estudiantes y hobbyists. Además, para ser aceptado como desarrollador, se debe seguir un proceso que está sujeto a aceptación por parte de Microsoft. Se puede encontrar más información en:
www.xbox.com/en-us/dev/ default.htm

RECOMENDACIÓN


¡QUÉ TARJETA GRÁFICA PARA EMPEZAR?


El mercado de las tarjetas gráficas es dominado por dos compañías, ATI y NVIDIA. Las dos ofrecen tarjetas gráficas de muy buena calidad y de una gran variedad de precios, dependiendo de la generación de la tarjeta. Muchas veces, al ver las cajas de las tarjetas pueden surgir más preguntas, ya que la información que tienen, puede parecer extraña. Por ejemplo, es importante entender lo que son los Shaders.

Shaders: hasta hace algunos años, se decía que las tarjetas gráficas tenían una arquitectura fija (Fixed-Function Pipeline) ya que la información enviada desde la aplicación, siempre pasaba por las mismas operaciones dentro de la tarjeta gráfica. Esto ha cambiado, y actualmente las tarjetas gráficas tienen una arquitectura programable.

Una arquitectura programable significa que desde la aplicación, se le puede indicar a la tarjeta gráfica que ejecute ciertos programas pequeños (llamados Shaders) ella misma, liberando al CPU completamente de ejecutar esas funciones. Es por esto que las tarjetas gráficas actuales, cuentan con su propia memoria y procesador, conocido como GPU (Graphics Processing Unit). Muchos de los efectos visuales avanzados que vemos en los juegos de hoy en día, son implementados por medio de Shaders.

Hace algunos años, los Shaders eran escritos en lenguaje ensamblador, por tal razón no eran tan populares. Actualmente la mayoría de los Shaders, son escritos en lenguajes de “alto nivel”, muy parecidos a C, los tres más usados son: GLSL (específico de OpenGL); HLSL (específico de DirectX) y Cg (puede correr ya sea en OpenGL o DirectX).

Las tarjetas gráficas con arquitectura programable tienen dos núcleos o procesadores programables, uno se ejecuta a nivel de objetos y otro se ejecuta a nivel de pixeles. Los Shaders que se pueden ejecutar en ellos, se conocen como Vertex Shaders y Pixel Shaders respectivamente (los últimos también se conocen como Fragment Shaders).

Las tarjetas gráficas con arquitectura programable, también tienen soporte para la arquitectura fija, y es decisión de la aplicación, utilizar una u otra arquitectura o incluso utilizar las dos. Es por eso que muchas veces, aunque tengamos un procesador avanzado, si no tenemos una tarjeta gráfica con arquitectura programable como lo requieren algunos juegos, no podremos ejecutarlos.

TIPS GENERALES


•Es más fácil empezar por 2D, y algunas cosas de 2D se aplican a 3D también.
•Es más sencillo aprender OpenGL que DirectX (en mi opinión).
•Jugar muchos juegos. Es la mejor manera de sacar ideas para juegos nuevos.
•Ayudar a otros. También se aprende mucho cuando se enseña.
•Tratar de hacer un clon de algún juego 2D sencillo (Tetris, Pong) y después mejorarlo.
•Para un juego 3D, es más rápido desarrollarlo en equipo.

links

softwareguru.com.mx