La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

1 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. 236 segundo@dacya.ucm.es 91-3944740 segundo@dacya.ucm.es

2 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 2002-2003.  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).

3 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++.

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

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

6 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

7 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

8 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

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

10 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();

11 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

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

13 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);}

14 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().

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

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

17 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 9.0 6. 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)

18 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.2004 2."Physics for Game Developers", David M. Bourg, O'Reilly & Associates, Inc, 2002. 3."3D Games" Alan Watt & Fabio Policarpo, Addison-Wesley, 2001.  Animación por Computador: 1.Principles of Traditional Animation Applied to 3D Computer Animation, by J. Lasseter, Proc. of ACM SIGGRAPH 1987 2.Computer Animation: Algorithms and Tech., by Richard Parent, 2001. 3.Advanced Animation and Rendering Techniques: Theory and Practice, by A. Watt and M. Watt, 1992. Chapter 15 & 16. 4.Making Them Move: Mechanics, Control and Animation of Articulated Figures, by Badler, Barsky and Zelter, Morgan Kaufmann Publ., 1991.


Descargar ppt "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."

Presentaciones similares


Anuncios Google