Programación Gráfica
description
Transcript of Programación Gráfica
Programación a bajo nivel En un comienzo se programaba para un
hardware específico, usando directamente instrucciones de los diversos microprocesadores.
Si se deseaba que el videojuego fuera jugable en otro equipo, se debía reescribir el código.
Programación a más alto nivel Al aparecer el lenguaje C, comenzó el primer cambio,
ya que era un poco más fácil programar videojuegos, porque se necesitaba menos líneas para hacer lo mismo que se hacía antes.
Además se abstrajo el hardware, y no importaba si se programaba para una CPU o para otra.
La aparición de C++, fue el cambio crucial para la programación de videojuegos, ya que contiene más librerías que C y el lenguaje es más estructurado.
API: Application Programming Interface Es un conjunto de funciones que forman parte
de una biblioteca para permitir un nivel de abstracción al programador.
Minimiza el trabajo de implementación de software, ya que contiene una cantidad enorme de funciones útiles para diversos propósitos.
APIs: gráficas, encriptación, redes, IO …
APIs Gráficas Usan drivers para las tarjetas gráficas, de forma
que son la interfaz entre la aplicación software (videojuego) y el adaptador gráfico hardware.
Proveen una librería de elementos gráficos simples para poder así producir gráficos complejos.
APIs Gráficas: DirectX, OpenGL…
DirectX Se basó de un API de Gráficos 3D llamada Reality
Lab, y una vez que Microsoft compró la empresa que desarrollaba el software en 1995, lo implementó como motor gráfico para Windows 95.
Colección de APIs para la plataforma Windows y algunas consolas como Dreamcast, XBox y XBox360.
Provee APIs para gráfica 2D y 3D, sonido, video, input y redes.
DirectX: Pipeline Gráfica1. Introduce los datos de entrada (primitivas).
2. Opera sobre los vértices de forma individual.
3. Realiza operaciones con primitivas.
4. Almacena los datos en memoria.
5. Convierte la imagen 3D en pixeles.
6. Realiza operaciones con los pixeles.
7. Combina la salida de pixeles con patrones de profundidad para construir el resultado final.
OpenGL Desarrollada originalmente por Silicon Graphics
Inc. en 1992, actualmente por el grupo Khronos.
Provee sólo funciones gráficas, abstrayéndose de las distintas tarjetas gráficas.
Es Multiplataforma: Mac OS, Windows, GNU/Linux, PS3…
Nivel de Abstracción
Hardware (Tarjeta Gráfica)
Aplicación (Videojuego)
API Gráfica (DirectX, OpenGL)
Driver
¿Qué es un motor de videojuegos? Es una API especializada para videojuegos, que contiene
varios componentes y herramientas para el desarrollo de éstos.
Entre los componentes:◦ Motor de Render.◦ Motor de Física y Colisiones.◦ Motor de Sonido.◦ Gestor de Redes.◦ Motor de I.A.
Lo más importante es el motor gráfico, que se apoya en las APIs gráficas.
Contexto Histórico
En los 90’ tras el éxito de Doom y Quake, diseñados por id Software, surge el desarrollo de motores de videojuegos, en un principio sólo diseñados para FPS.
En un principio los videojuegos se escribían desde cero. Aparición de lenguajes de más alto nivel se comenzó a Reutilizar código
Importancia de un engine Facilita el desarrollo. Abstracción de la plataforma. Separación de motor y contenidos. Permite enfatizar en la parte artística. Permite el rápido desarrollo de videojuegos. Facilita la realización de secuelas.
Características a la hora de elegir un engine.
Plataforma:◦ PC: Windows, Linux, Mac OS.◦ Consola: Xbox 360, PS2, PS3, Wii.◦ Móviles: Zune, Windows Mobile, iPhone, Symbian.
Lenguaje:◦ C, C++, C#, Java, Python.
Tipo de Videojuego:◦ FPS, RTS, MMORPG, Fighting Game, Racing Game.
Licencia Comercial:
◦ Ventaja: Soporte, muchas herramientas adicionales.◦ Desventaja: Precio, sujeto a lo que ofrecen.
Open Source:◦ Ventaja: Precio, posibilidad de modificación.◦ Desventaja: Sin soporte técnico “oficial”, falta de
herramientas.
Licencia Comerciales: Torque Game Engine
Advance ($295). 3D Game Studio
($1.250). Quake III Engine
($250.000 + 5% de royalties).
Warcraft III Engine: ($3.750.000)
Open Source: Irrlicht. Cristal Space. Ogre. Panda 3D.
Nivel de Abstracción
Hardware (Tarjeta Gráfica)
Aplicación (Videojuego)
API Gráfica (DirectX, OpenGL)
Driver
Engine Gráfico
Motor de Render Proporciona funciones gráficas, se encarga de
la visibilidad, gestión de mallas, entre otras cosas.
Debe proporcionar técnicas para optimización de recursos visuales.
Motor de Física Simula modelos de física, utilizando variables
de tipo velocidad, masa, etc.
Detección de Colisiones. Gravedad en el mundo. Cuerpos rígidos y dinámicos. Aplicación de Fuerzas. Uniones entre cuerpos.
Motor de Sonido Encargado de reproducir la banda sonora del
videojuego y efectos de sonido.
Música de Background. Sonido 3D dependiendo de la posición,
velocidad y dirección.
Capaz de soportar múltiples formatos: Ogg Vorbis, Wav, Midi…
Motor de Redes Cada vez es más importante el concepto de Red,
ya que no es lo mismo interactuar con enemigos computarizados que interactuar con otros jugadores en el mismo mundo.
Motor de Redes Debe proveer las funcionalidades:
◦ Tanto de servidor como de cliente. ◦ Tanto para LAN como para Internet.◦ Para los nuevos protocolos de red, ej: IPv6.
Estabilidad y escalabilidad son conceptos claves.
Motor de IA Necesitamos “realidad” en nuestro videojuego.
Encargado de dotar ciertos elementos del videojuego con comportamientos seudo-inteligentes.
Técnicas simples: Máquinas de estados y algoritmos de búsquedas.
Nuevas técnicas: redes neuronales y algoritmos genéticos.
Bibliografía DirectX y OpenGL.
http://www.slideshare.net/guest5506a9/direct-xy-open-gl-presentation
Motor de juegos. http://www.esi.uem.es/jccortizo/motores.html
Programación de Videojuegos. http://sabia.tic.udc.es/gc/Contenidos%20adicionales/trabajos/Juegos/ProgramacionVideojuegos/Programacion%20de%20videojuegos.htm