martes, 18 de julio de 2017

PROGRAMACIÓN DE VIDEOJUEGOS

DEFINICION Y TIPOS DE VIDEOJUEGOS
Es una aplicación interactiva orientada al entretenimiento que, a través de ciertos mandos o controles, permite simular experiencias en la pantalla de un televisor, una computadora u otro dispositivo electrónico.
Los videojuegos pueden ser muy distintos entre sí, tanto en complejidad como en calidad gráfica y en temática. Veamos a continuación algunos de los géneros principales:
Plataformas: se trata de una experiencia que gira en torno a desafíos de tipo físico, que exigen un gran nivel de precisión por parte de los jugadores para avanzar a través de complejas estructuras, generalmente enfrentándose a diversos enemigos.
De disparos: un género amplio, al cual pertenecen tanto algunos títulos de guerra como de naves espaciales.
De aventuras: son juegos en los cuales la historia es la protagonista. Deben ser construidos en base a una rica narrativa, que atrape poco a poco al jugador en el mundo virtual, y le transmita la necesidad de resolver una serie de misterios.
De rol: suelen confundirse con los juegos de aventuras pero, a diferencia de estos últimos, su foco son los personajes y su evolución a lo largo de la historia. Este género es especialmente popular en Japón, aunque existen muchas comunidades de jugadores de rol en todas partes del mundo.
Deportes: Si bien su nombre parece decirlo todo, existe una línea muy delgada entre este género y el de simulación. Estos dos, a su vez, están emparentados con el género de acción; todo depende del grado de realismo de la experiencia y del tipo de interacción que se espere del jugador, entre otros factores.

AREAS DE DESARROLLO DE VIDEOJUEGOS
Programación del motor: Son los encargados de implementar la base sobre la que se sustenta el videojuego. Comunicación con el sistema operativo, gestión de memoria, gestión de cadenas, gestión de recursos, etc. Son necesarios grandes conocimiento de la plataforma para la que se programa, algoritmia y complejidad, opimización y gestión a bajo nivel.
Programación gráfica: Su misión es lidiar con los diferentes apis gráficas como DirectX y OpenGL. Conocimienos de dichas apis, y matemáticas sobre todo álgebra y geometría.
Programación de física: Se encarga de emular los comportamientos físicos del videojuego. Conocimientos de matemática vectorial y física dinámica y mecánica.
Programación de inteligencia artificial: Es la encargada de hacer nuestros enemigos (o nuestros aliados) inteligentes. Conocimientos de lenguajes de script, matemáticas y algoritmos de IA como pathfinding, máquinas de estados finitos o redes neuronales.
Programación de red: Se encarga de la parte multijugador, servidores y todo lo que sea conectar una máquina con otra.

Programación de Gameplay: El equipo que se encarga de programar la lógica del juego, sus reglas. Conocimientos de lenguajes de script y uso de las partes desarrolladas por los otros equipos.

LENGUAJES PARA PROGRAMAR VIDEOJUEGOS

Lenguajes de programación de videojuegos web

A pesar de que la mayoría de los juegos de Facebook siguen usando Flash, el futuro está en el JavaScript.
El problema de Flash es que Adobe ya no dará soporte a dispositivos móviles y recientemente anunció que no desarrollará ActionScript 4, por lo que aprenderlo tiene cada vez menos sentido.
Para comenzar podéis leer el clásico, JavaScript: The Good Parts, de Douglas Crockford (2008).

Lenguajes de programación de videojuegos para PC o consolas

Deberás empezar programando en lenguaje C#. Es un buen lenguaje para que te inicies en la programación de videojuegos, existen librerías y frameworks muy maduros que te facilitarán el aprendizaje.
Hay mucha gente que recomienda que aprendas C++, pero no te será necesario salvo que te especialices en el desarrollo de motores de gráficos o motores de inteligencia artificial.

Lenguajes de Programación  de juegos para móviles

Para crear juegos para smartphones Android el lenguaje rey es el Java, por encima del Python.
Si tu trabajo se va a centrar más en dispositivos que tienen incorporado el sistema Windows, entonces en lenguaje escogido será el C#, estándar de Microsoft.
Por último, en los iPhones e iPads y su iOS, tendremos que programar en Objective-C o Swift, el futuro para la casa de la manzana mordida.

OTROS EJEMPLOS DE LENGUAJES
C: SDL
C++: SFML
C#: XNA / MonoGame
Python: PyGame
Java: libgdx, spiller
Ruby: Gosu
Flash: Flixel
Lua: Love2D
ESTRUCTURA DE BASE DATOS
Es un sistema que almacena datos que están relacionados. Es un repositorio en donde guardamos información integrada que podemos almacenar y recuperar. Un conjunto de información almacenada en memoria auxiliar que permite acceso directo y un conjunto de programas que manipulan esos datos 
 MySQL
*  XML
*  SQL
APIS GRAFICAS
DirectX


 DirectX esta compuesto de 7 componentes: DirectGraphics (incluye 3D y 2D), DirectInput, DirectSound, DirectPlay, DirectShow, DirectMusic. Y ha venido ganando mucha popularidad en los últimos años entre los programadores de videojuegos, en especial desde que Microsoft comenzó a mejorar la parte de Direct3D haciéndolo más amigable y eficiente, y se ha vuelto una seria competencia para OpenGL. Sin embargo, Algunos juegos programados usando DirecX son "Age of Empires", "Close Combat" y "Flight Simulator", además de todos los juegos para el Xbox. Microsoft desveló en la Game Developer´s Conference que su proyecto XNA consistirá en un Visual Studio en versión para el desarrollo de videojuegos.
VENTAJA.
Una de sus principales ventajas es que no está hecho solamente para la parte gráfica, sino que puede manejar toda la multimedia de la computadora como sonidos, música, dispositivos de Entrada/Salida como teclado, joystick, y varias otras cosas más.
DESVENTAJA.
DirectX tiene una gran desventaja: no es portable, es decir, una vez terminado de programar el juego estará condenado a trabajar solamente en Windows, y cuando se quiera convertir para que correrá en otras computadoras que usen Mac, Linux, o consolas, hay que hacerle muchos cambios al código.

OpenGL

Librería Grafica Abierta: Creado por Silicon Graphics en 1992, es el principal ambiente de programación para desarrollar aplicaciones gráficas que existe. Es multiplataforma (habiendo incluso un openGL para móviles). Esta diseñado para usarse en una gran variedad de sistemas operativos sin tener que modificarlo o modificándolo muy poco, esto significar una gran ventaja para cualquier desarrollador al abarcar el mayor mercado posible. Además su arquitectura fue pensada para poder evolucionar conforme avanza el tiempo, de modo que pueda adaptarse con facilidad a las novedades que van surgiendo en la industria.

Desde que apareció, OpenGL ha sido un ambiente de programación estable y confiable, y quizás la razón por la que es más conocido es porque fue la primera en ofrecer la posibilidad de desarrollar aplicaciones 3D; fue precisamente con OpenGL que se hicieron los primeros juegos 3D como Wolfenstain y Doom, hoy también es muy usado en juegos como Quake y muchos más.

LIBRERIAS DE VIDEOJUEGOS

Actionscript. Esta es una lista de librerías para desarrollar juegos, la iré modificando para incluir más librerías. Ustedes mismos sugieran sus librerías favoritas en este hilo para incluirlas:
Allegro: Librería en C altamente portable a muchas plataformas que incluye rutinas básicas de videojuegos: gráficos 2D, matemática 3D, sonido y controles.
SDL: Simple DirectMedia Layer está hecho en C y es una librería madura utilizada en grandes proyectos. Loki, una empresa que estuve a principios de 2000 portando juegos a Linux utilizó esta librería para esta tarea.
OGRE: Es una librería open source para hacer gráficos 3D.
Crystal Space: Crystal Space es una librería open source para hacer gráficos 3D en tiempo real. Fue la librería utilizada para hacer Yo Frankie, o también conocido como Project Apricot.
ODE: Open Dynamics Engine (ODE) es una librería en C++ que facilita la implementación de fenómenos físicos en tu juego. Es la librería que se utilizó para implementar la física de World of Goo.
ClanLib: ClanLib Game SDK es una biblioteca de herramientas multiplataforma cuyo principal enfoque se encuentra en la creación de juegos de video. La misma es de código abierto y gratuito para uso comercial, bajo la licencia ClanLib.
Python

Panda3D: Panda3D es una librería open source implementada en Python y C++ por la gente del Entertainment Technology Center, en la Universidad Carnegie-Mellon. Disney utilizó esta librería para hacer el juego online de Pirates of the Caribbean

ENTORNOS PARA PROGRAMACION DE VIDEOJUEGOS


Unreal Engine
Antiguamente, este entorno de desarrollo venía con los propios juegos creados en este editor cuando este salía al mercado, de este modo el jugador que quisiera podría editar los contenidos del juego e incluso los escenarios y crear nuevos modos de juego.

Pero se cambió el modelo de negocio de y ahora se puede descargar de forma gratuita, con el añadido que si tu juego supera los 3.000 dolares de beneficios, a partir de ese momento Unreal se llevaría un porcentaje de los beneficios.
El entorno se parece mucho al de Unity 3D, permitiéndonos agregar formas geométricas al escenario y que después tengan sus texturas, interacciones… Sin lugar a dudas un gran competidor para Unity 3D y muy útil para los desarrolladores y creadores de juegos. 

GDevelop
Es un programa de creación de videojuegos en 2D de código libre. Con este entorno podremos crear juegos para Windows, Linux e incluso para la web utilizando HTML5. 


Al igual que Stencyl, cuenta con una interfaz drag and drop facil de utilizar. En su web podemos encontrar muchos ejemplos y tutoriales para aprender a utilizar esta herramienta perfectamente y de este modo empezar con el proceso de creación.
Lo que hace a GDevelop único y tan sencillo de utilizar son los eventos, ya que estos utilizan una forma de expresar la lógica de nuestro juego sin tener que aprender un lenguaje de programación a fondo.


Unity 3D
Considerada por muchos la mejor herramienta para crear y diseñar un videojuego. Con Unity 3D podremos sacar versiones de nuestro futuro videojuego para Xbox, PC, Linux, HTML5, iOS, Android, Play Station, BlackBerry, Samsung TV y una de las características que lo hace realmente potente es la integración del lenguaje C#.


Este entorno de desarrollo tiene tiene motor de diseño de juegos 3D y otro diferente para juegos 2D. Por último recalcar que dispondremos de una librería muy extensa con documentación con la que poder empezar a aprender cómo iniciarnos en el proceso de creación de un juego básico.

Stencyl
Este software se llamaba originalmente StencylWorks, mientras que en el desarrollo de las últimas versiones para el público se decidió que el nombre se debería acortar llagando a llamarse Stencyl.


Stencyl es una plataforma de creación de videojuegos en 2D. Esta plataforma nos permite crear videojuegos desde Linux, OS X y Windows para varias plataformas como iPhone, iPad, Android, Windows, macOS y Linux.
El método de empleo se basa en el Drag and Drop mediante diferentes bloques con distintas funcionalidades. Sin embargo, para aquellos usuarios más avanzados, también tiene la opción de extender las funcionalidades a través de código.

PyGame
Para finalizar este apartado vamos a presentaros PyGame, el entorno de desarrollo de juegos en Pyton. Tiene una estética muy retro pero sin embargo sus módulos son muy potentes.

Lo cierto es que es perfecto para empezar a programar videojuegos y aprender cómo funcionan las diferentes variables y pantallas. Con PyGame encontraremos más programación que en los anteriores ya que es un requisito indispensable para desarrollar videojuegos.
También puede utilizarse para crear otros programas multimedia o interfaces gráficas de usuario. Herramientas y entornos para avanzados

CryEngine 3
Seguro que os suena este nombre. Esto es porque es el entorno en el que se han creado los juegos de la saga Crysis. Con este editor podremos desarrollar juegos para las plataformas más importantes del mundo incluyendo las consolas.


Tiene muchas herramientas para el desarrollo del juego que van desde el sistema de Scripting Visual a la posibilidad de editar pistas de audio y vídeo para el juego. CryEngine es para uso personal y no comercial, pero si nuestro proyecto prospera, podremos adquirir por Steam una licencia de 9 dólares al mes.




No hay comentarios.:

Publicar un comentario