Está en la página 1de 374
3 David VillaMiguel· MiguelFélix SergioA. J.GarcíaVillanueva· PérezRedondo· José· Francisco· Jorge
3
David VillaMiguel· MiguelFélix SergioA. J.GarcíaVillanueva· PérezRedondo· José· Francisco· Jorge L.CésarGonzálezMora LópezMoya
Edita: Diseño: ISBN: Publica: Autores: Título: David David Carlos Bubok 978-84-686-4025-9 Desarrollo Castro, Jorge
Edita: Diseño: ISBN: Publica: Autores: Título:
David David Carlos Bubok 978-84-686-4025-9 Desarrollo Castro, Jorge Francisco Villa López Vallejo (Edición González Miguel Moya de Alises, González, Fernández Videojuegos: García Física) Fernández, Morcillo Sergio Corchero, Félix LibroVirtual.org y Pérez Carlos Técnicas Miguel J. Villanueva Camacho, José González A. Avanzadas Luis Redondo (Edición Molina, González Morcillo Duque, electrónica) César Sánchez Mora
(de la Edición Física, a la venta en www.bubok.es)
EsteGarcíalibroMondarayfue Blender, InkScape compuestoy y DavidconVillaLaTeXAlises.a OpenOffice. Lapartirportadade unay lasplantentradililla delasCarlosfueronGonzálezdiseñadasMorcillo,con GIMPSergio,
delasCarlosfueronGonzálezdiseñadasMorcillo,con GIMPSergio, las Creative condiciones Commons siguientes: License
delasCarlosfueronGonzálezdiseñadasMorcillo,con GIMPSergio, las Creative condiciones Commons siguientes: License
delasCarlosfueronGonzálezdiseñadasMorcillo,con GIMPSergio, las Creative condiciones Commons siguientes: License
delasCarlosfueronGonzálezdiseñadasMorcillo,con GIMPSergio, las Creative condiciones Commons siguientes: License

lasCreativecondicionesCommonssiguientes:License1.:Reconocimiento.Usted especificadacomerciales. partir de estaobra. 3.porSinelobrasautor Más informaciónen:http://creativecommons.org/licenses/by-nc-nd/3.0/ derivadas.o el licenciador.No es libre se2.puedeNo deDebecopiar,reconocerdistribuir coalterar,mercial.transformarNo yloscomunicarcréditospúblicamentede puedeo generarutilizar la estauna obra obraobra delalaobra,manerabajo derivadapara finesa

es Informático, y y en proyecto profesionales sistemas oficiales. relacionadas Informática Ayudante virtuales. en red,
es Informático, y y en proyecto profesionales sistemas oficiales. relacionadas Informática Ayudante virtuales. en red,

es Informático, y y en proyecto profesionales sistemas oficiales. relacionadas Informática Ayudante virtuales. en red, los los Doctor distribuidos lenguajes Debian sistemas Es de se con experto Ciudad centran e imparte como las ubicuos C++ en desde redes en Real métodos y docencia maintainer Python. los y el las (UCLM) de sistemas 2002. redes de computadores en Colabora desarrollo Sus de la heterogéneas en empotrados Escuela paquetes intereses materias con ágiles de el y

Universidad David Villa

Profesor

de (2009, Castilla-La Doctor

Mancha) Ingeniero

Profesor de (2009, Castilla-La Doctor Mancha) Ingeniero ingeniero Universidad Ericsson Sergio GNU/Linux,

ingeniero Universidad Ericsson Sergio GNU/Linux, aumentada. Pérez consultor R&D. las de redes, (2011, Castilla-La Sus diseñando los intereses Ingeniero videojuegos Mancha) software principales en de trabaja y Informática, redes la realidad como para son

de trabaja y Informática, redes la realidad como para son Superior Desde Mancha, Telecomunicación, Francisco

Superior Desde Mancha, Telecomunicación, Francisco Doctor. los automa-tización sistemas 1999 Sus de desde Informática Moya actuales trabaja del 2008 Universidad distribuidos (2003, líneas como de diseño como la Universidad de profesor Doctor Politécnica investigación Profesor electrónico heterogéneos, de Ingeniero de de la Contratado Castilla Madrid). incluyen Escuela y sus en la la aplicaciones escala es también y en Debian el en diseño la Developer. construcción de sistemas de en chip. servicios Desde a 2007 gran

Opera-tivos. Interacción innovación impartiendo Software de Interacción Profesor sistemas Informática, Miguel

Opera-tivos. Interacción innovación impartiendo Software de Interacción Profesor sistemas Informática, Miguel Informática Ángel Titular de al y Persona-Computador docencia e-Learning. Universidad Su aplicación desarrollo Persona-Computador Redondo de actividad de Universidad en la de de asignaturas de investigadora (2002, UCLM técnicas Castilla sistemas en Doctor la y en – de Escuela relacionadas al La se avanzados Ciudad y Ingeniería desarrollo en Mancha) centra Ingeniería Sistemas Superior Real, en con del de de es la

Ingeniería Sistemas Superior Real, en con del de de es la UCLM Jorge y López Máster

UCLM Jorge y López Máster (2011, en Diseño Ingeniero y Desarrollo en Informática de videojuegos por la

por la UCM). Especializado en desarrollo 3D con C++

y OpenGL, y en el engine Unity 3D. Actualmente

trabaja Works. como programador en Totemcat – Materia

trabaja Works. como programador en Totemcat – Materia asignaturas redes tecnología de contratado Informática,

asignaturas redes tecnología de contratado Informática, Félix investigación de empotrados. más sensores, de J. de computadores Villanueva doctor y que Universidad diez en arquitectura imparte entornos la años. e actualidad imparte (2009, se con Sus de centran inteligentes de una docencia Castilla-La principales son Doctor computadores. experiencia redes en el en en campo inalámbricas y Mancha) campos el Ingeniería sistemas área docente de Las las de de es

el Ingeniería sistemas área docente de Las las de de es Gráfica, temas Informática, la César

Gráfica, temas Informática, la César Universidad de Mora la interés Visión Universidad (2013, de están Artificial Master Minnesota, relacionados de y la en Casilla-La Realidad Computer 2011 con Aumentada. Mancha). Ingeniero la Science Informática Sus por en

Mancha). Ingeniero la Science Informática Sus por en Videojuegos Miguel GNU/Linux Flavor. García y en MS

Videojuegos Miguel GNU/Linux Flavor. García y en MS plataformas Windows es desarrollador y iOS, socio Android, fundador independiente Mac de Atomic OS de X,

socio Android, fundador independiente Mac de Atomic OS de X, José Luis González (2010, Doctor en

José Luis González (2010, Doctor en Informática, Universidad

sector, sistemas Granada). como interactivos Nintendo Especialista o y MercurySteam. videojuegos, en calidad y temas experiencia Es autor donde de de imparte distintos usuario su

diseño y evaluación de la

experiencia libros sobre del la jugador. jugabilidad

de en

docencia e investiga. Ha colaborado con distintas compañías del

y

el

Prefacio

Prefacio Con más de 40.000 descargas y 4TB servidos desde Junio de 2012, el material docente

Con más de 40.000 descargas y 4TB servidos desde Junio de 2012, el material docente y el código fuente de los ejemplos del Curso de Ex- perto en Desarrollo de Videojuegos , impartido en la Escuela Superior de Informática de Ciudad Real de la Universidad de Castilla-La Man- cha, se ha convertido en un referente internacional en la formación de desarrolladores de videojuegos.

Puedes obtener más información sobre el curso, así como los resul- tados de los trabajos creados por los alumnos de la 1 a y la 2 a edición, en la web del mismo: http://www.cedv.es. La versión electrónica de este libro (y del resto de libros de la colección) puede descargarse des- de la web anterior. El libro «físico» puede adquirirse desde la página web de la editorial online Bubok en http://www.bubok.es.

Sobre este libro

Este libro forma parte de una colección de 4 volúmenes, con un perfil principalmente técnico, dedicados al Desarrollo de Videojuegos :

1. Arquitectura del Motor . En este primer libro se estudian los aspectos esenciales del diseño de un motor de videojuegos, así como las técnicas básicas de programación y patrones de diseño.

2. Programación Gráfica. El segundo libro de la colección se centra en algoritmos y técnicas de representación gráfica, así como en optimizaciones y simulación física.

3. Técnicas Avanzadas . En este tercer volumen se recogen ciertos aspectos avanzados, como estructuras de datos específicas, téc- nicas de validación y pruebas.

4. Desarrollo de Componentes . El último libro está dedicado a ciertos componentes específicos del motor, como la Inteligencia Artificial, Networking, Sonido y Multimedia o técnicas avanzadas de Interacción.

del motor, como la Inteligencia Artificial, Networking, Sonido y Multimedia o técnicas avanzadas de Interacción.

Requisitos previos

Este libro tiene un público objetivo con un perfil principalmente técnico. Al igual que el curso, está orientado a la capacitación de pro- fesionales de la programación de videojuegos. De esta forma, este libro no está orientado para un público de perfil artístico (modeladores, ani- madores, músicos, etc.) en el ámbito de los videojuegos.

Se asume que el lector es capaz de desarrollar programas de nivel

medio en C y C++. Aunque se describen algunos aspectos clave de C++

a modo de resumen, es recomendable refrescar los conceptos básicos

con alguno de los libros recogidos en la bibliografía del curso. De igual

modo, se asume que el lector tiene conocimientos de estructuras de datos y algoritmia. El libro está orientado principalmente para titula- dos o estudiantes de últimos cursos de Ingeniería en Informática.

Programas y código fuente

El código de los ejemplos puede descargarse en la siguiente página web: http://www.cedv.es. Salvo que se especifique explícitamente otra licencia, todos los ejemplos del libro se distribuyen bajo GPLv3.

Agradecimientos

Los autores del libro quieren agradecer en primer lugar a los alum- nos de la 1 a y 2 a edición del Curso de Experto en Desarrollo de Vi- deojuegos por su participación en el mismo y el excelente ambiente en las clases, las cuestiones planteadas y la pasión demostrada en el desarrollo de todos los trabajos.

Los autores también agradecen el soporte del personal de adminis- tración y servicios de la Escuela Superior de Informática de Ciudad Real, a la propia Escuela y el Departamento de Tecnologías y Sistema de Información de la Universidad de Castilla-La Mancha.

De igual modo, se quiere reflejar especialmente el agradecimiento

a las 8 empresas que ofertarán prácticas en la 3 a edición del cur-

so: Devilish Games (Alicante), Dolores Entertainment (Barcelona), from

the bench (Alicante), Iberlynx Mobile Solutions (Ciudad Real), Kitma- ker (Palma), playspace (Palma), totemcat - Materia Works (Madrid) y

Zuinqstudio (Sevilla). Este agradecimiento se extiende a los portales

y blogs del mundo de los videojuegos que han facilitado la difusión

de este material, destacando a Meristation, Eurogamer, Genbeta Dev, Vidaextra y HardGame2.

Finalmente, los autores desean agradecer su participación a los colaboradores del curso: Indra Software Labs , DocPath, la asociación de desarrolladores de videojuegos Stratos y Libro Virtual.

Resumen

Resumen El objetivo de este módulo, titulado «Técnicas Avanzadas de Desa- rrollo» dentro del Curso de
Resumen El objetivo de este módulo, titulado «Técnicas Avanzadas de Desa- rrollo» dentro del Curso de

El objetivo de este módulo, titulado «Técnicas Avanzadas de Desa- rrollo» dentro del Curso de Experto en Desarrollo de Videojuegos , es profundizar es aspectos de desarrollo más avanzados que complemen- ten el resto de contenidos de dicho curso y permitan explorar solucio- nes más eficientes en el contexto del desarrollo de videojuegos.

En este módulo se introducen aspectos básicos de jugabilidad y se describen algunas metodologías de desarrollo de videojuegos. Así mis- mo, también se estudian los fundamentos básicos de la validación y pruebas en este proceso de desarrollo. No obstante, uno de los compo- nentes más importantes del presente módulo está relacionado con as- pectos avanzados del lenguaje de programación C++, como por ejemplo el estudio en profundidad de la biblioteca STL, y las optimizaciones.

Finalmente, el presente módulo se complementa con aspectos de representación avanzada, como los filtros de partículas o la programa- ción de shaders, y con un estudio en detalle de técnicas de optimiza- ción para escenarios interiores y exteriores. Por otra parte, se realiza un estudio de la plataforma de desarrollo de videojuegos Unity, espe- cialmente ideada para el desarrollo de juegos en plataformas móviles.

I

Índice general

Índice general 1. Aspectos de Jugabilidad y Metodologías de Desarrollo   1 1.1. Jugabilidad y Experiencia
Índice general 1. Aspectos de Jugabilidad y Metodologías de Desarrollo   1 1.1. Jugabilidad y Experiencia

1. Aspectos de Jugabilidad y Metodologías de Desarrollo

 

1

1.1. Jugabilidad y Experiencia del Jugador

 

1

 

1.1.1. Introducción

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

1.1.2. Caracterización de la Jugabilidad

 

3

1.1.3. Facetas de la Jugabilidad

 

4

1.1.4. Calidad de un juego en base a la Jugabilidad .

.

.

8

1.2. Metodologías de Producción y Desarrollo

 

13

 

1.2.1. Pre-Producción

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

1.2.2. Producción

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

1.2.3. Post-Producción

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

1.3. Metodologías Alternativas

 

20

 

1.3.1. Proceso Unificado del Juego

 

20

1.3.2. Desarrollo Incremental

 

21

1.3.3. Desarrollo Ágil y Scrum

 

21

1.3.4. Desarrollo Centrado en el Jugador

 

.

.

.

.

.

.

.

.

.

22

2. C++ Avanzado

 

25

2.1.

Programación genérica

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

2.1.1. Algoritmos .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

2.1.2. Predicados

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

29

2.1.3. Functors .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

30

2.1.4. Adaptadores

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

32

2.1.5. Algoritmos idempotentes

 

34

III

 

2.1.6. Algoritmos de transformación

.

.

.

.

.

.

.

.

.

.

.

.

37

2.1.7. Algoritmos de ordenación

 

41

2.1.8. Algoritmos numéricos

 

44

2.1.9. Ejemplo: inventario de armas

.

.

.

.

.

.

.

.

.

.

.

.

44

2.2. Aspectos avanzados de la STL

 

48

 

2.2.1. Eficiencia

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

48

2.2.2. Semántica de copia

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

52

2.2.3. Extendiendo la STL

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

54

2.2.4. Allocators

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

57

2.3. Estructuras de datos no lineales

 

60

 

2.3.1. Árboles binarios

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

61

2.3.2. Recorrido de árboles .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

77

2.3.3. Quadtree y octree

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

80

2.4. Patrones de diseño avanzados

 

83

 

2.4.1. Forma canónica ortodoxa

 

83

2.4.2. Smart pointers

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

84

2.4.3. Handle-body

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

90

2.4.4. Command

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

93

2.4.5. Curiously recurring template pattern

 

97

2.4.6. Acceptor/Connector

 

102

2.5. C++11: Novedades del nuevo estándar

 

106

 

2.5.1. Compilando con g++ y clang

106

2.5.2. Cambios en el núcleo del lenguaje

 

107

2.5.3. Cambios en la biblioteca de C++

 

121

2.6. Plugins

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

124

 

2.6.1. Entendiendo las bibliotecas dinámicas

 

125

2.6.2. Plugins con libdl

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

128

2.6.3. Plugins con Glib gmodule

 

133

2.6.4. Carga dinámica desde Python

 

135

2.6.5. Plugins como objetos mediante el patrón Factory

Method

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

135

2.6.6. Plugins multi-plataforma

 

138

3. Técnicas específicas

 

141

3.1.

Serialización de objetos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

141

3.1.1.

Streams

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

142

3.1.2.

Serialización y Dependencias entre objetos

147

 

3.1.3.

Serialización con Boost

 

156

3.2.

C++ y scripting

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

161

3.2.1. Consideraciones de diseño

 

161

3.2.2. Invocando Python desde C++ de forma nativa

 

162

3.2.3. Librería boost

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

164

3.2.4. Herramienta SWIG

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

169

3.2.5. Conclusiones

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

171

4. Optimización

 

173

4.1. Perfilado de programas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

175

 

4.1.1. El perfilador de Linux perf

 

177

4.1.2. Obteniendo ayuda

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

179

4.1.3. Estadísticas y registro de eventos

 

179

4.1.4. Multiplexación y escalado

 

180

4.1.5. Métricas por hilo, por proceso o por CPU

.

.

.

.

.

.

182

4.1.6. Muestreo de eventos .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

182

4.1.7. Otras opciones de perf

 

187

4.1.8. Otros perfiladores

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

187

4.2. Optimizaciones del compilador

 

189

 

4.2.1. Variables registro .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

190

4.2.2. Código estático y funciones inline

 

191

4.2.3. Eliminación de copias

 

197

4.2.4. Volatile

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

198

4.3. Conclusiones

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

199

5. Validación y Pruebas

 

201

5.1. Programación defensiva

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

201

 

5.1.1.

Sobrecarga

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

203

5.2. Desarrollo ágil

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

204

5.3. TDD

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

205

 

5.3.1. Las pruebas primero

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

205

5.3.2. rojo, verde, refactorizar

 

206

5.4. Tipos de pruebas .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

206

5.5. Pruebas unitarias con google-tests

 

208

5.6. Dobles de prueba

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

210

5.7.

Dobles de prueba con google-mock

212

5.8.

Limitaciones

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

217

6. Empaquetado y distribución

 

219

6.1. Empaquetado y distribución en Windows

 

220

 

6.1.1. Creación de un paquete básico

 

220

6.1.2. Interacción con el usuario

 

227

6.1.3. Otras características .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

228

6.2. Empaquetado y distribución en GNU/Linux

 

229

 

6.2.1. Pidiendo un paquete

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

230

6.2.2. Obteniendo el fuente original

 

231

6.2.3. Estructura básica

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

232

6.2.4. Construcción del paquete

 

237

6.2.5. Parches: adaptación a Debian

 

240

6.2.6. Actualización del paquete

 

242

6.2.7. Subir un paquete a Debian

 

243

6.3. Otros formatos de paquete

 

244

7. Representación Avanzada

 

245

7.1. Fundamentos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

245

 

7.1.1. Billboards

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

245

7.1.2. Sistemas de partículas

 

249

7.2. Uso de Billboards

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

250

 

7.2.1. Tipos de Billboard

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

252

7.2.2. Aplicando texturas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

253

7.3. Uso de Sistemas de Partículas

 

254

 

7.3.1. Emisores

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

255

7.3.2. Efectores

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

255

7.3.3. Ejemplos de Sistemas de Partículas

 

256

7.4. Introducción a los Shaders

 

258

 

7.4.1. Un poco de historia

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

259

7.4.2. ¿Y qué es un Shader?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

261

7.4.3. Pipelines Gráficos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

261

7.4.4. Fixed-Function Pipeline

 

263

7.4.5. Programmable-Function Pipeline

 

266

7.4.7.

Lenguajes de Shader .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

271

7.5. Desarrollo de shaders en Ogre

 

272

7.5.1. Primer Shader

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

273

7.5.2. Comprobando la interpolación del color

 

277

7.5.3. Usando una textura

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

279

7.5.4. Jugando con la textura

 

281

7.5.5. Jugando con los vértices

 

284

7.5.6. Iluminación mediante shaders

 

287

7.6. Optimización de interiores

 

287

7.6.1. Introducción

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

287

7.6.2. Técnicas y Algoritmos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

288

7.6.3. Manejo de escenas en OGRE

 

303

7.7. Optimización de Exteriores

 

305

7.7.1. Introducción

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

305

7.7.2. Estructuras de datos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

305

7.7.3. Determinación de la resolución

 

307

7.7.4. Técnicas y Algoritmos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

309

7.7.5. Exteriores y LOD en OGRE

 

315

7.7.6. Conclusiones

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

326

8. Plataformas Móviles

 

327

8.1. Método de trabajo con un motor de videojuegos

 

327

8.1.1. Generación de contenido externo al motor

327

8.1.2. Generación de contenido interno al motor

328

8.2. Creación de escenas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

328

8.3. Creación de prefabs

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

332

8.4. Programación de scripts

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

332

8.4.1. Algunos scripts básicos

 

334

8.4.2. Triggers

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.