2. Motor de Videojuegos.. En un comienzo se programaba para un hardware específico, usando...

45
Programación Gráfica 2. Motor de Videojuegos.

Transcript of 2. Motor de Videojuegos.. En un comienzo se programaba para un hardware específico, usando...

Programación Gráfica2. Motor de Videojuegos.

2.1 Inicio de los videojuegos.

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 bajo nivel

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.

Programación a más alto nivel

2.2 API’s Gráficas.

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…

OpenGL: Pipeline Gráfica

Nivel de Abstracción

Hardware (Tarjeta Gráfica)

Aplicación (Videojuego)

API Gráfica (DirectX, OpenGL)

Driver

2.3 Introducción a los motores de

Videojuegos.

¿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.

Arquitectura Típica

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

Ejemplo de engine

IdTech3:

Ejemplo de engine

RenderWare:

Ejemplo de engine

Source Engine:

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

2.4 Componentes de un Engine.

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 Física

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 Sonido

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.

Motor de IA Máquinas de Estados.

Patrullar

Atacar

PerseguirHuir

Descansar

2.5 Herramientas para un Engine.

Mision Editor

TGEA 3D

Particle Editor

Ogre3D

Animation Tools

Source Engine

Monitoring Tools

Source Engine

Scripting Tools

Unreal Technology(UnrealKismet , the visual scripting system)

Sound Tools

Unreal Technology

Preguntas ¿?