martes, 9 de febrero de 2016

Manual sobre desarrollo y arquitectura de vídeo juegos.


Quiero compartir un manual sobre vídeo juegos escritos en c++. Si bien es bastante básico nos enseña conceptos básicos y avanzados de c++ que nos permiten desarrollar vídeos juegos.

Este tutorial de 306 paginas esta escrito por la Escuela Superior de Informatica de Ciudad real. 

Les dejo el indice: 

1.1. El desarrollo de videojuegos
1.1.1. La industria del videojuego. Presente y futuro
1.1.2. Estructura típica de un equipo de desarrollo
1.1.3. El concepto de juego
1.1.4. Motor de juego
1.1.5. Géneros de juegos
1.2. Arquitectura del motor. Visión general
1.2.1. Hardware, drivers y sistema operativo
1.2.2. SDKs y middlewares
1.2.3. Capa independiente de la plataforma
1.2.4. Subsistemas principales
1.2.5. Gestor de recursos
1.2.6. Motor de rendering
1.2.7. Herramientas de depuración
1.2.8. Motor de física
1.2.9. Interfaces de usuario
1.2.10.Networking y multijugador
1.2.11.Subsistema de juego
1.2.12.Audio
1.2.13.Subsistemas específicos de juego
2. Herramientas de Desarrollo
2.1. Introducción
2.2. Compilación, enlazado y depuración
2.2.1. Conceptos básicos
2.2.2. Compilando con GCC
2.2.3. ¿Cómo funciona?
2.2.4. Ejemplos
2.2.5. Otras herramientas
2.2.6. Depurando con GNU GDB
2.2.7. Construcción automática con GNU Make
2.3. Gestión de proyectos y documentación
2.3.1. Sistemas de control de versiones
2.3.2. Documentación
2.3.3. Forjas de desarrollo
3. C++. Aspectos Esenciales
3.1. Utilidades básicas
3.1.1. Introducción a C++
3.1.2. ¡Hola Mundo! en C++
3.1.3. Tipos, declaraciones y modificadores
3.1.4. Punteros, arrays y estructuras
3.1.5. Referencias y funciones
3.2. Clases
3.2.1. Fundamentos básicos
3.2.2. Aspectos específicos de las clases
3.2.3. Sobrecarga de operadores
3.3. Herencia y polimorfismo
3.3.1. Herencia
3.3.2. Herencia múltiple
3.3.3. Funciones virtuales y polimorfismo
3.4. Plantillas
3.4.1. Caso de estudio. Listas
3.4.2. Utilizando plantillas en C++
3.4.3. ¿Cuándo utilizar plantillas?
3.5. Manejo de excepciones
3.5.1. Alternativas existentes
3.5.2. Excepciones en C++
3.5.3. ¿Cómo manejar excepciones adecuadamente?
3.5.4. ¿Cuándo utilizar excepciones?
4. Patrones de Diseño
4.1. Introducción
4.1.1. Estructura de un patrón de diseño
4.1.2. Tipos de patrones
4.2. Patrones de creación
4.2.1. Singleton
4.2.2. Abstract Factory
4.2.3. Factory Method
4.2.4. Prototype
4.3. Patrones estructurales
4.3.1. Composite
4.3.2. Decorator
4.3.3. Facade
4.3.4. MVC
4.3.5. Adapter
4.3.6. Proxy
4.4. Patrones de comportamiento
4.4.1. Observer
4.4.2. State
4.4.3. Iterator
4.4.4. Template Method
4.4.5. Strategy
4.4.6. Reactor
4.4.7. Visitor
5. La Biblioteca STL
5.1. Visión general de STL
5.2. STL y el desarrollo de videojuegos
5.2.1. Reutilización de código
5.2.2. Rendimiento
5.2.3. Inconvenientes
5.3. Secuencias
5.3.1. Vector
5.3.2. Deque
5.3.3. List
5.4. Contenedores asociativos
5.4.1. Set y multiset
5.4.2. Map y multimap
5.5. Adaptadores de secuencia
5.5.1. Stack
5.5.2. Queue
5.5.3. Cola de prioridad
6. Sistemas del Motor de Bajo Nivel
6.1. Subsistema de arranque y parada
6.1.1. Aspectos fundamentales
6.1.2. Esquema típico de arranque y parada
6.1.3. Caso de estudio. Ogre 3D
6.1.4. Caso de estudio. Quake III
6.2. Contenedores
6.2.1. Iteradores
6.2.2. Más allá de STL
6.3. Subsistema de gestión de cadenas
6.3.1. Cuestiones específicas
6.3.2. Optimizando el tratamiento de cadenas
6.3.3. Hashing de cadenas
6.4. Configuración del motor
6.4.1. Esquemas típicos de configuración
6.4.2. Caso de estudio. Esquemas de definición
7. El Bucle de Juego
7.1. El bucle de renderizado
7.2. El bucle de juego
7.3. Arquitecturas típicas del bucle de juego
7.3.1. Tratamiento de mensajes en Windows
7.3.2. Esquemas basados en retrollamadas
7.3.3. Tratamiento de eventos
7.3.4. Esquema basado en estados
7.4. Gestión de estados de juego con Ogre3D
7.5. Definición de estados concretos
8. Importador de Datos de Intercambio
8.1. Formatos de intercambio
8.1.1. Archivos binarios
8.1.2. Archivos en texto plano
8.1.3. XML
8.2. Creación de un importador
8.2.1. Justificación y estructura XML
8.2.2. Lógica de dominio
8.2.3. La clase Importer
9. Recursos y el sistema de archivos
9.1. Gestión básica de recursos
9.2. Gestión de recursos con Ogre3D
9.3. Gestión básica del sonido
9.3.1. Introducción a SDL
9.3.2. Reproducción de música
9.3.3. Soporte de efectos de sonido
9.3.4. Integrando música y efectos
9.4. El sistema de archivos
9.4.1. Gestión y tratamiento de archivos
9.4.2. E/S básica
9.4.3. E/S asíncrona
9.4.4. Caso de estudio. La biblioteca Boost.Asio C++
9.4.5. Consideraciones finales
10.Hilos y Concurrencia
10.1.Fundamentos básicos
10.1.1.El concepto de hilo
10.1.2.El problema de la sección crítica
10.2.La biblioteca de hilos de ICE
10.2.1.The Internet Communications Engine (ICE)
10.2.2.Manejo de hilos
10.2.3.Exclusión mutua básica
10.2.4.Flexibilizando el concepto de mutex
10.2.5.Introduciendo monitores
10.3.Multi-threading en Ogre3D
10.4.Caso de estudio. Procesamiento en segundo plano mediante hilos