martes, 30 de marzo de 2010

Videojuegos con Irrlicht 3D y Raknet




Hace cerca de dos años presenté un proyecto en la universidad sobre desarrollo de videojuegos. Básicamente es un documento que consta de dos partes:

- Una introducción teórica a los videojuegos 3D (partiendo desde temas básicos de Álgebra lineal) y

- El desarrollo de un pequeño videojuego de primera persona (con fines únicamente demostrativos)

Parte del contenido del documento está basado en los tutoriales oficiales de Irrlicht Engine que están publicados en http://irrlicht.sourceforge.net/tutorials.html

El documento se compone de cuatro capítulos que explican de forma general y secuencial los fundamentos utilizados para crear un videojuego 3D. Se asume que el lector tiene conocimientos de álgebra y programación, específicamente del lenguaje C++. Los primeros tres capítulos aportan la base teórica y el cuarto capítulo describe el juego irrArena (La aplicación de demostración).

Contenido de los capítulos

El capítulo I presenta una introducción a las Matemáticas de los videojuegos. Se tratan temas como sistemas lineales, vectores, interpretación geométrica de las operaciones vectoriales, proyecciones y transformaciones lineales.

El capítulo II incluye documentación y ejemplos del Engine Irrlicht 3D, cubriendo temas que van desde el manejador de video, el entorno GUI, manejo de escena, carga de mapas de Quake 3, intercepción de eventos del teclado y del ratón (movimiento), colisiones, iluminación de escena, sonido 2D y 3D con irrKlang y carga de archivos XML con irrXML.

En el capítulo III se presenta una introducción a la librería de funciones de Red RakNet, la cual ha sido diseñada específicamente para videojuegos. Se incluyen algunos ejemplos de comunicación de red, tales como el envío de cadenas y una pequeña aplicación que ilustra cómo envíar estructuras de datos genéricos y cómo combinar esta librería con Irrlicht.

El capítulo IV es la parte demostrativa del texto. Se desarrolla el videojuego “irrArena”, de primera persona, multijugador, para ello se utiliza Irrlicht3D y Raknet, presentando la documentación correspondiente y el diseño del mismo.

Índice del documento

Pg. Tema
- - - - - - - - - - - - - - - - -
1 Introducción
3 Propuesta de proyecto
5 Objetivo general
5 Objetivos específicos

7 Capítulo I – Álgebra lineal
9 1.1 Antecedentes
10 1.2 Introducción
10 1.3 Vectores
17 1.4 Transformaciones lineales

25 Capítulo II – Irrlicht 3D Engine
26 2.1 Introducción
26 2.2 Características
27 2.3 Configurando el IDE (vs2005) y un ejemplo básico
33 2.4 Cargar mapas de Quake 3 y agregar una cámara FPS
37 2.5 Manejo de eventos y movimiento
42 2.6 Graphical User Inrface (GUI)
47 2.7 Detección de colisiones
53 2.8 Audio 2D y 3D con irrKlang
59 2.9 irrXML

61 Capítulo III – RakNet
63 3.1 Introducción
63 3.2 Características
64 3.3 Incluir RakNet en un proyecto
65 3.4 Comunicación básica: envío de cadenas
71 3.5 Irrlicht y RakNet, envío de estructuras

81 Capítulo IV – Aplicación: irrArena
83 4.1 Introducción
83 4.2 Características del juego
84 4.3 Instalación del juego
91 4.4 Diseño del juego

95 Conclusiones
97 Glosario
101 Bibliografía
103 Apéndice A – Licencia de Irrlicht Engine
105 Apéndice B – Contribuciones y recursos
107 Apéndice C – Contenido del CD


Actualización: El enlace roto se ha corregido. Los archivos ahora están en un hosting propio. Saludos.




Texto en formato PDF:
Videojuegos3D-Irrlicht Raknet.pdf


Recursos Necesarios para ejecutar los ejemplos del texto:
irrlicht-1.4, RakNet-3.24, irrxml-1.2, irrKlang-1.1.0

Codigo fuente de ejemplo (se hace referencia en el texto [PDF]).
sources-Cap2.zip
sources-Cap3.zip
sources-Cap4.zip




Creative Commons License
Desarrollo de Videojuegos 3D con Software Libre by Cristian dlr is licensed under a Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 Unported License.
Based on a work at cristiandlr.blogspot.com.

Envía SMS a Guatemala

14 comentarios:

  1. Ahora mismo no se puede acceder al pdf:

    Error

    This file is neither allocated to a Premium Account, or a Collector's Account, and can therefore only be downloaded 10 times.

    This limit is reached.

    Una pena porque el documento tiene pinta de ser muy interesante.

    Salu2

    ResponderEliminar
  2. Hola cris:

    El documento no se puede ver parece que en rapidshare ya excedió su cuota, quisiera leerlo y comentarlo en mi blog de desarollo de juegos (http://www.micronosis.com), al mismo tiempo te ofrezco espacio gratuito de hosting, pues como Niko lo comentó en su blog probablemente está/va a tener bastante acceso en estos dias.

    Puedes contactarme para más detalle en gustavorg en gmail.com

    ResponderEliminar
  3. Aa es una lastima no poder acceder al docuemnto yo fue testigo de parte del producto resultante en base a toda esta investigacion y era muy bueno saludos cristian muy interesante...

    ResponderEliminar
  4. A si por cierto soy Marco Antonio Saludos..

    ResponderEliminar
  5. Nop, tampoco pude descargarlo :(

    ResponderEliminar
  6. Holaaa. ¿Se va a volver a subir el archivo en algún sitio? Estaría bien poder leerlo, parece interesante.

    ResponderEliminar
  7. Hola, perdón por la tardanza en contestar... Voy a publicar nuevamente el enlace mañana, cuando esté en mi computadora. Saludos

    ResponderEliminar
  8. Genial! Hay sitios mejores que rapidshare, por ejemplo, www.sendspace.com es mucho menos restrictivo. También creo que son buenos www.mediafire.com y www.megaupload.com, al menos nos permitirán bajar el archivo mas de 10 veces xD

    Saludos!

    ResponderEliminar
  9. Hola de Nuevo, he actualizado los enlaces y los archivos están ahora en un hosting propio. Espero les sean de utilidad,

    Saludos.

    ResponderEliminar
  10. Muchas gracias. Está muy bien, un gran trabajo y además con el código fuente. Se agradece!
    Ah! Por curiosidad, ¿por qué elegíste finalmente Irrlicht en vez de Ogre?
    Saludos

    ResponderEliminar
  11. De nada. Elegí Irrlicht porque está bien documentado y pienso que gracias a eso se aprende más rápido. Aunque Ogre por su parte puede que sea más popular, en general si aprendes a usar un Engine es más fácil después familiarizarse con otro diferente.

    Saludos

    ResponderEliminar
  12. grandioso trabajo, estoy iniciandome en este tema de los videojuegos y es agradable encontrar este tipo de publicaciones. Gracias y buena suerte.

    ResponderEliminar
  13. Este comentario ha sido eliminado por el autor.

    ResponderEliminar