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

Bienvenido a mi blog!

La creación de software comprende un área muy extensa, existen un sin fin de lenguajes, plataformas, sistemas, frameworks, protocolos, etc. sobre los cuales se puede trabajar, así que siempre hay algo nuevo que aprender.

En este espacio publicaré pequeños artículos prácticos acerca de lo que voy aprendiendo en mi trabajo como desarrollador, esperando sean de utilidad para otros.

Cristiandlr