3d GAME PROGRAMMING WITH OPENGL Segundo Esteban San Román José Mª Vegas Gertrudix Dpto. Arquitectura de Computadores y Automáitca Fac. CC. Físicas, Desp.

Slides:



Advertisements
Presentaciones similares
ANALISIS Y DISEÑO ORIENTADO A OBJETOS
Advertisements

10. Modelación de un Videojuego. BALLOON ATTACK. El planeta está siendo invadido por extraños extraterrestres en forma de globos, y ningún arma existente.
Curso de Java Java – Redes Rogelio Ferreira Escutia.
Diferencia Entre Blogs y Websites Christian O. Rodríguez Méndez 8 de abril de 2010.
Ejemplo 2: Reparto de 3 objetos indivisibles.
Características Generales y Entornos de Desarrollo
Desarrollo de juegos de video Aprendiendo a programar en C# de manera divertida Sesión 6: Control del jugador de los sprites
Desarrollo de Juegos de Video en 3D
PROGRAMACIÓN Visual Profra. Graciela Prado. Visual Basic Es un lenguaje de programación diseñado para facilitar el desarrollo de aplicaciones en un entorno.
CAPACITACION PARA EL TRABAJO: INFORMATICA
Estructura de un Sistema Operativo
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Procesadores de Lenguajes I
Mortal Kombat The Avengers Frank PerezHector Vasquez Fernando LebronJusnen Volquez.
Es el arte de instruir a un computador sobre los pasos necesarios para resolver los problemas que influyen en la creación de un videojuego. Es el.
Modelado en 3D y Composición de Objetos
Armando Lechler Avitia
Desarrollo de un Videojuego para Android
LOGICA DE NEGOCIOS ADAN GONZALEZ BARRERA.
Gráficos y Diseños por Computadora
Con fines prácticos se puede clasificar al software en tres tipos: Software de sistema Software de programación Software de aplicación.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Profesor: Miguel Angel Vidal
Geometría Generativa Utilizando GeoGebra y Papel.
GAME MAKER. INTRODUCCIÓN Game Maker es un entorno para el desarrollo de juegos, creado en 1999 por Mark Overmars, profesor del departamento de Ciencia.
MOODLE ASPECTOS BÁSICOS
TITULO DEL TRABAJO Practica Numero... Autores del Trabajo LOGO DEL TRABAJO O IMAGEN REPRESENTATIVA DEL MISMO (OPCIONAL)
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar.
COMPLEMENTOS DE INSTALACION DE SOFTWARE API´s y Complementos Plug-ins.
Valor X Valor Y Punto (0,0) Coordenadas.
BASE DE DATOS BY: Julián Villar Vázquez.
Graficaci ó n IA7200-T Dr. Juan Jos é Flores Romero
Hugo del Moral Guerrero
Ing. Elkin José Carrillo Arias
!¡Animaciones¡! Escobar cañaveral dennys Estefanía Luisa fda Miranda Henao 11*
LENGUAJES DE PROGRAMACIÓN
Motor RPG Cristóbal Troncoso. Objetivos Una persona que no sepa programar pueda crear su propio juego de rol a través de editores de niveles y editores.
VIDEO Y AUDIO DIGITAL.
Graficacion.
Aspectos Tecnológicos de la Programación de Videojuegos Video Juegos y el Cine SEMINCI 2006 Museo de la Ciencia David Escudero Mancebo Universidad de Valladolid.
Ingeniería en Sistemas de Información
Selección y creación de música y efectos de audio
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
Jose María Buades Rubio Sistema de Partículas Su aplicación a los gráficos en tiempo real.
Laboratorio de Computación Grafica Universidad Central de Venezuela
MAPAS CONCEPTUALES.  Anteriormente en este artículo comentamos sobre la necesidad de movernos hacia el pensamiento dinámico que se requiere para construir.
Access.
Los Controles de Visual Basic
Diseño de Sistemas.
Introducción a UML Departamento de Informática Universidad de Rancagua
FACULTAD: CIENCIAS ECONÓMICAS Y EMPRESARIALES ASIGNATURA: GESTIÓN DE CONTENIDO ELECTRÓNICO TÍTULO: TINFOPATH - VENTAJAS Y USO. AUTORA: MARIA DANIELA TOMALÁ.
Jairo Pinto Ing. sistemas
Capítulo 2 “Subprogramas/Funciones - Arreglos”
1. Introducción..  Componentes de un motor de videojuegos: ◦ Motor de Render. ◦ Motor de Física. ◦ Motor de Sonido. ◦ Motor de Redes. ◦ Motor de IA.
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
Programación de Videojuegos
Introducción a GDevelop
 Orientada a la producción fácil y amigable de Actividades Educativas Computalizadas para las clases.  Permite la producción de módulos hipervinculados.
Driver o controlador para la pc.
ACCESS ANDERSON JAVIER ACEVEDO RIOS DIEGO MADARRIAGA BRIEVA.
Proyecto de Videojuego centrado en aspectos de diseño Autor: Alejandro González Fiel Director: Aquilino Adolfo Juan Fuente 1 Spacedash: Proyecto de videojuego.
Área Académica: Informática Tema: Creación y edición de video Profesor: Lic. en Comp. Marco Antonio Zamora Lucio Periodo: enero-junio de 2015.
Integrantes Miguel Betancourt Alexis Tacuri.  Activiti es una plataforma para la formación de flujos de trabajo y procesos empresariales dentro del.
INVESTIGACION DE TEMARIO JOSE LUIS VEGA MERINO.  1.2. Requerimientos de instalación.  Microsoft Windows 7 Professional y Microsoft Windows 7 Ultimate.
Clase Nº1 Métodos, texturas, rectángulos. Introduccion ¿Que vamos a aprender en el taller? Programar juegos Un poco de historia…
:: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
Definición: Es un estilo de programación, su objetivo primordial es la separación de la capa de presentación, capa de negocio y la capa de datos. ARQUITECTURA.
Presentación > Luis Andrés Murcia Press Start QUÉ ES ANIMACIÓN DIGITAL? Es la técnica de crear imágenes en movimiento mediante el uso de un computador.
Transcripción de la presentación:

3d GAME PROGRAMMING WITH OPENGL Segundo Esteban San Román José Mª Vegas Gertrudix Dpto. Arquitectura de Computadores y Automáitca Fac. CC. Físicas, Desp

Introducción a la Física de Videojuegos Introducción  El presente curso explica cómo realizar un juego de acción en primera persona en 3D “First Person Shooter”, tipo Quake, usando OpenGL.  Trabajo desarrollado por José María Vegas Gertrudix para la asignatura de Informática Gráficas  Contribuciones de:  Kevin Hawkins y Dave Astle por la idea del tema del juego y de la estructuración del código del mismo,“OpenGL Game Programming”  Jason Shankel por el algoritmo de generación del terreno,  IDSoftware por el código para usar los modelos del Quake2,  Alexey Goloshubin por otras ideas proporcionadas con respecto a cómo se ha de construir un motor 3D (gracias a su Poly Engine)  Ian Luck por su sencilla librería de sonido (librería Bass).

Introducción a la Física de Videojuegos Introducción  Las herramientas empleadas son:  Microsoft visual C++ 6.0,  OpenGL 1.1,  DirectX 8.0,  Poly Engine,  Bass audio Library 0.8a.  Características más notables del juego:  Uso de ficheros.bmp,.tga,.pcx para texturas;  Uso de ficheros.wav para sonido;  Uso de modelos del Quake2 por medio de ficheros.md2;  Entorno de movimiento en 3D;  Uso de programación orientada a objetos con C++.

Introducción a la Física de Videojuegos Clases para la Construcción del Motor 3D  Clase CVector, CPlano… : Ya sabéis…  Clase CNodo: Representa un único nodo de una lista cíclica doblemente enlazada, que a su vez forma parte de la estructura de un árbol. Esta es la estructura usada para construir la jerarquía de objetos del mundo.  Clase CObjeto: Nos permite representar en el motor cualquier cosa que se pueda dibujar, moverse, colisionar e incluso ‘pensar’  Clase CSistemaEntrada: Gestiona la entrada utilizando DirectInput.  Clase CRaton: Gestiona los eventos de Ratón  Clase CTeclado: Gestiona los eventos de Teclado  Clase CSonido: Gestiona el sonido utilizando DirectMusic y direct Sound.

Introducción a la Física de Videojuegos Clases para la Construcción del Motor 3D  Clase CModeloMD2: Los personajes del juego están en formato MD2. Este formato fue creado por idSoftware® para su uso en el juego Quake2™. Un archivo md2 contiene la geometría del modelo, información de los frames de animación, nombres de los archivos de skins (pieles), coordenadas de texturas.  Clases Auxiliares para el modelo MD2, Clase CTextura…  Clase CEntidad: Es una aplicación de un modelo en el mundo, contiene el estado gráfico actual del modelo y el sistema de sonido  Clase CVentanaOpenGL: Gestiona los mensajes de Windows. Se encuentra por encima de CMotor3D  Clase CMotor3D: Clase base  Clase CMotor3DSimple: La clase CMotor3DSimple contiene el bucle principal de los mensajes de Windows, es decir, el bucle del juego, además proporciona los métodos necesarios para manejar cualquier entrada que se reciba del Sistema de Entrada.

Introducción a la Física de Videojuegos Construcción específica del juego  Clase CMundo: Este objeto contendrá todos las entidades que existqan en el juego y se encargará de gestionaroslos  Clase CCamara: CCamara define el sistema de visión del motor gráfico y es responsable de determinar la vista del mundo.  Clase CTerreno: La representación gráfica del terreno.  Clase CJugador: Gestiona Cámara, Disparo, Sonido, Terreno  Clase CMunicion:  Clase CExplosion:  Clase CEnemigo:  Clase COgro:  Clase CSod:  Clase CIGU: Interface Gráfico de Ususario, Clase CFuente

Introducción a la Física de Videojuegos Arquitectura del Motor Gráfico EntradaLógica del juego Sistema de Audio Base de datos del mundo Gestor de texturas Objetos del mundo Gestor de texturas

Introducción a la Física de Videojuegos Arquitectura del Motor Gráfico CNodo CVentanaOpenGL CSistem aEntrada CTeclado CRaton CJoystick CMotor3D CObjecto CEntidad CCModeloMD2 CAudio CMotor3DSimple CCamara CMundo CSistema Particulas CTextura CSistemaSonido

Introducción a la Física de Videojuegos CObjeto CNodo Nodo Siguiente Nodo Anterior Nodo Padre Nodo Hijo CTerreno CJugadorCEnemigoCenemigo...

Introducción a la Física de Videojuegos CObjeto  El verdadero poder de la clase CObjeto se hace mas evidente cuando hay que renderizar, mover o detectar colisiones en un objeto.  M é todos en la parte p ú blica (implementados): void Preparar(); void Animar(float intervaloTiempo); void ProcesaColision(CObjeto* objetoColision); void Dibujar(CCamara* camara);  Funciones virtuales en la parte protegida (a implementar): virtual void AlAnimar(float intervaloTiempo); virtual void AlDibujar(CCamara* camara); virtual void AlColisionar(CObjeto* objetoColision); virtual void AlPreparar();

Introducción a la Física de Videojuegos CObjeto Mundo del juego Habitación 1Habitación 2Habitación 3 MonstruoTesoro EspadaArmadura Animar()-1 Animar()-2Animar()-6Animar()-7 Animar()-3Animar()-5 Animar()-4 Animar()-9Animar()-10 Animar()-8 Hacha Jugador

Introducción a la Física de Videojuegos Ciclo del Juego  Se puede decir en t é rminos generales que un ciclo de juego conlleva los siguientes pasos: 1.Recoger la entrada 2.Mover el jugador 3.Ejecutar la inteligencia artificial 4.Realizar los c á lculos f í sicos 5.Ejecutar los sonidos 6.Renderizar la escena  Sin embargo, el ciclo de juego del motor simple del Ba ñ o de Sangre no es tan claro debido a la jerarqu í a de objetos que maneja el juego.

Introducción a la Física de Videojuegos Ciclo del Juego void CMotor3D::CicloJuego(float intervaloTiempo) { //obtener la cámara. CCamara* camara = this->AlObtenerCamara(); //obtener el mundo. CMundo* mundo = this->AlObtenerMundo(); if(this->usarDirectInput) this->CompruebaEntrada(intervaloTiempo); //inicializa OpenGL. this->AlPreparar(); //mueve/orienta la cámara. camara->Animar(intervaloTiempo); //mueve/orienta los objetos. mundo->Animar(intervaloTiempo); //prepara objetos y comprueba colisiones. mundo->Preparar(); //dibujar objetos. mundo->Dibujar(camara); //intercambiar búffers. SwapBuffers(this->hDC);}

Introducción a la Física de Videojuegos Ciclo del Juego Por debajo de CMotor3D, en la jerarqu í a de clases, encontramos CMotor3DSimple, esta clase contiene:  M é todos de respuesta a eventos del teclado como por ejemplo AlPresionarTecla(int nVirtKey).  La c á mara del motor gr á fico. Es muy f á cil de controlar ya que la mayor parte del tiempo se maneja a trav é s de la entrada recibida por teclado. La funci ó n m á s importante de CCamara es Animar() que se usa para mover y orientar la c á mara.  Los objetos del mundo. Como se vio anteriormente, la funci ó n CicloJuego() de CMotro3D usa la clase CMundo para interactuar con todos los objetos del juego a trav é s de las funciones Preparar(), Animar() y Dibujar().

Introducción a la Física de Videojuegos Animaciones  Para la animaci ó n del personaje, el archivo md2 utiliza Keyframes e interpolaci ó n.

Introducción a la Física de Videojuegos Disparo y Explosión  Los disparos son tambi é n modelos md2 co 2 keyframe.  Para las explosiones de los cohetes se ha utilizado un sistema de part í culas.

Introducción a la Física de Videojuegos Mejoras Futuras 1. Posibilidad de cargar niveles del Quake2 2. Añadir, ver y oír el arma del jugador como modeloMD2 3. Posibilidad de reproducir varios sonidos al mismo tiempo. 4. Utilizar nuevos modelos MD2 como enemigos, ya sean del Quake2 o de otros juegos (como el DoomGL). 5. Actualizar el juego a DirectX Crear una librería que independice el código del Motor 3D del código específico del juego. 7. ¡QUE SE VEA SANGRE! (Esto lo quería Gertrudix, no yo)

Introducción a la Física de Videojuegos Bibliografía Recomendada  Física de videojuegos: 1."Game Physics", David H Eberly. Elsevier/Morgan Kaufmann, cop "Physics for Game Developers", David M. Bourg, O'Reilly & Associates, Inc, "3D Games" Alan Watt & Fabio Policarpo, Addison-Wesley,  Animación por Computador: 1.Principles of Traditional Animation Applied to 3D Computer Animation, by J. Lasseter, Proc. of ACM SIGGRAPH Computer Animation: Algorithms and Tech., by Richard Parent, Advanced Animation and Rendering Techniques: Theory and Practice, by A. Watt and M. Watt, Chapter 15 & Making Them Move: Mechanics, Control and Animation of Articulated Figures, by Badler, Barsky and Zelter, Morgan Kaufmann Publ., 1991.