Arquitectura de Videojuegos
description
Transcript of Arquitectura de Videojuegos
![Page 1: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/1.jpg)
Facultad de Ingenieria - Computacion Grafica Avanzada - Aceleracion del Rendering
1
Arquitectura de VideojuegosArquitectura de Videojuegos
Seminario de Técnologías Interactivas y Videojuegos
Rudi Lausarot, Manuel Martínez, Vosky Clavijo.
Edición 2008
![Page 2: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/2.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
ContenidoContenido
Introducción Historia Third’s Parties Del Análisis al Diseño Diseño Jerárquico/OO Diseño orientado a Componentes Conclusión Bibliografía
![Page 3: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/3.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Introducción Introducción (1/2)(1/2)
¿Qué es la Arquitectura de un SW?– La arquitectura de software define, de manera abstracta,
los componentes que llevan a cabo alguna tarea de computación, sus interfaces y la comunicación ente ellos.
Motivación en los Videojuegos – Los Videojuegos son un software.– Una buena arquitetura/diseño permite:– Reusabilidad– Extensibilidad– Manejable.
![Page 4: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/4.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Introducción Introducción (2/2)(2/2)
Motivación en los videojuegos
– Acortar tiempos de producción-Los recursos no son gratis
-El tiempo tampóco
– Cambios en los requerimientos.– - Reusabilidad acorta el tiempo de cambio - Extensibilidad permite agregar requerimientos
facilmente.
![Page 5: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/5.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Historia Historia (1/3)(1/3)
•Desarrollo en el pasado
• Código de maquina y Assembler-Requerimientos no complejos. (comparados a los
actuales)-Hardware disponible muy limitado-Era común la frase “write to the metal”.
![Page 6: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/6.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Historia Historia (2/3)(2/3)
Cambio– Uso del lenguaje “C”-Doom casi completamente escrito en C .-Reacción inmediata de la comunidad de programdores.-Esceptisismo.
Preconceptos entre los programadores de VJ.– “Yo lo puedo hacer mejor”– “Necesito saber como está hecho”– Reinvención de la rueda.
![Page 7: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/7.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Historia Historia (3/3)(3/3)
Más en la actualidad.– Productos hechos por terceros escenciales– Half Life:
• Modificación del motor del quake• Reutilización y cambios para satifacer nuevas
necesidades• Ahorro de 12 meses de producción debido
![Page 8: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/8.jpg)
ThirdThird Party Party componentscomponents
![Page 9: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/9.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
ThirdThird Party Party componentscomponents (1/2)(1/2)
Motor 3DQuake
Motor Físico– Rigid body dynamics
Todos?
– Soft body dynamicsUnreal Tournament III
![Page 10: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/10.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
ThirdThird Party Party components components (2/2)(2/2)
Librerías (sonido, IA, etc.)– OpenAL
Doom 3, Jedi Knight II, Quake 4, Prey,Tremulous, etc.
Manejadores de inputs (abstracción de entrada de controles)
– lg3d-wii, sdl (windows, Mac OS, Linux, consolas)
Motor de Juego (son “casi” todos los puntos anteriores juntos).
![Page 11: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/11.jpg)
Del Análisis al DiseñoDel Análisis al Diseño
![Page 12: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/12.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (1/21)(1/21)
TOKENS– Elementos comunes en juegos
Todos los juegos tienen elementos discretos en común o directamente manipulados por el jugador. A estos elementos les llamaremos TOKENS.
Para explicar como usar y en que pueden ayudarnos a diseñar juegos estos TOKENS, nos basaremos en dos casos de estudio.
Pong y Pac-Man
![Page 13: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/13.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (2/21)(2/21)
PONG
![Page 14: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/14.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (3/21)(3/21)
Tokens jerarquicos de PONG
![Page 15: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/15.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (4/21)(4/21)
Tokenizacion– Identificamos los tokens del juego
Interacciones (eventos)– Definimos las interacciones posibles entre los
tokens• Matriz de interacciones
![Page 16: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/16.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (5/21)(5/21)
Matriz de interaccion de PONG
![Page 17: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/17.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (6/21)(6/21)
Token Game worldCadena de mensajes enviada cuando ocurre un gol
![Page 18: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/18.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (7/21)(7/21)
![Page 19: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/19.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (8/21)(8/21)
Simplificacion de Tokenizacion de PAC-MAN
![Page 20: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/20.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (9/21)(9/21)
Maquina de estados para los fantasmas
![Page 21: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/21.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (10/21)(10/21)
Maquina de estados para el Pac-Man
![Page 22: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/22.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (11/21)(11/21)
Balls! ? Maquina de estado Hot Ball
![Page 23: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/23.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (12/21)(12/21)
Maquina de estado SnowBall
![Page 24: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/24.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (13/21)(13/21)
Propiedades– Caliente, templado, frio
![Page 25: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/25.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (14/21)(14/21)
Propiedades– Caliente, templado, frio
![Page 26: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/26.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (15/21)(15/21)
Propiedades– Se agrega la propiedad Luz
![Page 27: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/27.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (16/21)(16/21)
Interacciones (eventos)– Definimos las interacciones posibles
entre los tokens
Hasta ahora tenemos:• Matriz de interacciones, eventos,
estados, propiedades.
![Page 28: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/28.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (17/21)(17/21)
Definimos:– Pac-Man:Hambriento– Fantasmas:
• Fuertes cazando• Debiles cazados• Ninguno, cuando son comidos
– Bolitas, Frutas, Pildora, : Comestible– Paredes laberinto: Solidas– Base: Solida, Hogar
![Page 29: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/29.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (18/21)(18/21)
Eventos– A: Power-up– B: Colision– C: Muere Pac-Man– D: Incremento Score– E: Fantasma es comido– F: Timer Reset
![Page 30: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/30.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (19/21)(19/21)
Matriz interaccion Token/Property
![Page 31: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/31.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño Del Análisis al Diseño (20/21)(20/21)
Matriz Property/Property
![Page 32: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/32.jpg)
Diseño Jerárquico/OODiseño Jerárquico/OO
![Page 33: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/33.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Descompocición JerarquicaDescompocición Jerarquica (1/3)(1/3)
Jerarquica basado en entidades– Es posible trabajar de esta forma en todo el
marco de trabajo.– Es normal que solo se toman como
entidades aquellas que pueden ser actualizadas (depende del juego, tipo de juego).
– De esta forma se logran otras ventajas:• Solo se salva el estado de estas.• En las actualizacione tienen prioridad
![Page 34: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/34.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Descompocición Jerarquica Descompocición Jerarquica (2/3)(2/3)
Ene Feb Mar Abr May Jun Jul Sep Oct Nov DicAgo
Jerarquico basado en entidades– Profunda Jerarquía de clases para representar
entidades de juego– Una entidad es un objeto del juego que tiene
distintas propiedades– El acercamiento es organizar los objetos del juegon
según sus propiedades y crear una típica jerarquia de objetos partiendo de un objeto abstracto o casi sin propiedades. “Entity”, “Actor”.
![Page 35: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/35.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Descompocición JerarquicaDescompocición Jerarquica (2/3)(2/3)
Ejemplo
![Page 36: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/36.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Data Driven Data Driven (1/3)(1/3)
Modelo orientado por lo datos– Indistinto del tipo de diseño usado– En lo posible el estado del sistema determinado por
datos y no por codigo.– Por ejemplo un archivo de datos por “Entity” con sus
propiedades– Para entidades con comportamiento dinamico se
usa scripting (por ejemplo LUA).
![Page 37: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/37.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Data Driven Data Driven (2/3)(2/3)
Ventajas de Data Driven– Testeos durante desarrollo, rápidos y eficaces.– Cambios en los requerimientos del juego más faciles
de implementar• Cambiar un auto porun robot gigante que lanze misiles• Datos, (velocidad, apariencia, sonidos, relaciones,e tc)
– Cambios posibles de realizar teoricamente en cualquier momento.
![Page 38: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/38.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Data Driven Data Driven (3/3)(3/3)
Desventajas de Data Driven– Seguridad– El diseño debe contemplarlo (hay que
pensarlo)– En el caso del scripting no debe ser usado
para tareas de alta demanda, solo para actualizaciones no constantes (bajo rate)
![Page 39: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/39.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Model-View-Controller Model-View-Controller (1/4)(1/4)
Model-View-Controller– Patron de arquitectura que pretende separar la
lógica de la aplicación de su representación ante el usuario y la comunciación al modelo
![Page 40: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/40.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Model-View-Controller Model-View-Controller (2/4)(2/4)
Aplicación en videojuegos– Vista: Representación de las entidades del
juego• Gráficos, Sonidos, eventos de interacción con
el usuarios• Lógica sobre estos.
– Modelo: Datos propios de las entidades, posición, velocidad, atributo x. Logica sobre estos.
– Controller: Entradas que modifican el modelo.• Inputs de usuarios, actualizaciones de estado
del server.
![Page 41: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/41.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Model-View-Controller Model-View-Controller (3/4)(3/4)
Aplicación en videojuegos– El modelo entonces mantiene la minima
cantidad de información (datos) necesarios (maquina de estado).
– La vista se encarga de la lógica de representación y de la representación propiamente dicha
– El controller se encargará de recibir las entradas de los usuarios y abstraerlas lógicamente para el modelo.
![Page 42: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/42.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Model-View-Controller Model-View-Controller (4/4)(4/4)
Beneficio inmediato y práctico.–Actualización de estado en juegos
multiplayer–Cambio completos en la representación
sin tocar ningún otro modulo (abstracción de motores).
–Cambios completos en el manejo de inputs sin afectar el resto.
![Page 43: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/43.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
FrameWorkFrameWork
FrameWork– Un diseño básico reusable con funcionalidad de por Un diseño básico reusable con funcionalidad de por
sí. sí. – ExtendibleExtendible– MantenibleMantenible– ModificableModificable– Flexible/AcotadorFlexible/Acotador
En VideoJuegosEn VideoJuegos– Estructura básica con funcionalidad de la que Estructura básica con funcionalidad de la que
facilmente se puede realizar un juego.facilmente se puede realizar un juego.
![Page 44: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/44.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Ejemplo PrácticoEjemplo Práctico
![Page 45: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/45.jpg)
Diseño orientado a ComponentesDiseño orientado a Componentes
![Page 46: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/46.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
IntroducciónIntroducción (1/2)(1/2)
¿Qué es el diseño orientado a componentes?– Énfasis en división en componentes.
¿qué es un componente? – Objeto construido para una especificación.– Criterios: múltiples usos, sin contexto
específico, componible, encapsulado, independiente.
![Page 47: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/47.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
IntroducciónIntroducción ((22/2)/2)
¿por qué si utilizar componentes?– Reutilizable.– Robustez.– Rapidez– Fácil de mantener.
¿por qué no utilizar componentes?– Difícil de comprender.
![Page 48: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/48.jpg)
POC en video juegosPOC en video juegos
![Page 49: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/49.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Objeto de Juego Objeto de Juego (1/3)(1/3)
También llamado entidad u objeto de escena.
Ej.:– Árbol, tanque, héroe, roca, secuencia de cámara,
etc..
Acciones:– Análisis sintáctico, animar, tocar audio, seguir
un camino, persistir, etc..
![Page 50: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/50.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
OJ como Jerarquía OJ como Jerarquía (2/3)(2/3)
Conjunto de objetos de juego representados mediante OO.
Al agregar funcionalidades:– Encapsular -> puede
generar duplicación de código.
– Derivar -> puede incrementar peso en hojas. Objetos “BLOB”.
![Page 51: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/51.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
OJ como Col. de Comp. OJ como Col. de Comp. (3/3)(3/3)
Otra forma de representar un objeto de juego.
Mueven funcionalidades del objeto a componentes.
Puede parecer mas complejo que jerarquía.
Mas manejable y sencillo de mantener.
![Page 52: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/52.jpg)
ImplementaciónImplementación
![Page 53: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/53.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
OJ OJ (1/9)(1/9)
Objeto de Juego. Contiene:
– Transformación, identificador único, conjunto de componentes. +string getNombre()
+setNombre(string nom)()+Transformación getTransf()+setTransf(Transformación tranf)()+clearComps()
-nombre-Transformación-Componentes
OJ
![Page 54: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/54.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
OCJ OCJ (2/9)(2/9)
Objeto componente de juego.
Especifica datos + comportamiento de funcionalidades específica.
Ej.:– Salud, representación
gráfica, manejos de física, funciones IA, etc..
Organizados en familias.
+string famID()+[virtual]update()+[virtual]string compID()+[virtual]render()
ocjVisual
+string compID()+update()+render()+float getRadio()+setRadio(float r)()
-radio
ocjVisualEsfera
+string compID()+update()+render()+float getLargo()+setLargo(float l)()
-largo
ocjVisualCubo
![Page 55: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/55.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
OCJ - base OCJ - base (3/9)(3/9)
Objeto componente de juego base.
Interfaz común a todo OCJ.
Facilita manejo a OJ.
+OJ getOJDueño()+setOJDueño(OJ obj)()+[virtual]update()+[virtual]string compID()+[virtual]string famID()
-OJDueño
OCJ
+string famID()+[virtual]update()+[virtual]string compID()+[virtual]render()
ocjVisual
![Page 56: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/56.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Manejo de OCJ en OJ Manejo de OCJ en OJ (4/9)(4/9)
Necesitamos:– Agregar, remover, obtener,
limpiar.
Más de un GOC de cada familia.– Muestra demasiada info.– Aumenta dependencias.
Entonces -> no mas de un GOC por familia.
Solución contenedor de comp.
+string getNombre()+setNombre(string nom)()+Transformación getTransf()+setTransf(Transformación tranf)()+OCJ getComp(string idFamilia)()+setComp(OCJ)()+clearComps()
-nombre-Transformación-Componentes
OJ
![Page 57: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/57.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Comunicación entre OCJComunicación entre OCJ (5/9)(5/9)
No es ideal. Puede ser una
necesidad. Resulta práctico.
![Page 58: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/58.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Plantillas OCJPlantillas OCJ (6/9)(6/9)
Impráctico inicialización de OCJ por OJ.
Posible desperdicio de memoria.
POCJ inicializa OCJ y amacena datos comunes.
+[virtual]string famID()+[virtual]string compID()+[virtual]constComp(OJ obj)()
POCJ
+string famID()+string compID()+OCJ constComp(OJ obj)()+int getSaludInicialDe(ParteCuerpo p)()+setSaludInicial(int[] sp)()
-saludInicial
pocjSalud
+ocjSalud(pocjSalud pocjs)()+int getSaludDe(ParteCuerpo p)()+setSaludDe(ParteCuerpo p, int s)()+bool estaHerido()
-salud
ocjSalud
![Page 59: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/59.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Plantillas OJPlantillas OJ (7/9)(7/9)
Las POCJ simplifican pero se puede hacer +.
Similar a POCJ pero para OJ.
+string getNombre()+setNombre(string nom)()+Transformación getTransf()+setTransf(Transformación tranf)()+OCJ getComp(string idFamilia)()+setComp(OCJ)()+clearComps()
-nombre-Transformación-Componentes
OJ
+string getNombre()+setNombre(string nom)()+lista<POCJ> componentes()+addPOCJ(POCJ)()+POCJ getPOCJ(string id)()
-nombre-comps
POJ
![Page 60: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/60.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Manejadores Manejadores (8/9)(8/9)
Tanto para OCJ como para OJ.
Centralizan manejo.+OJ crearOJ(string nom)()
-instancia
MPOJ
+OCJ crearOCJ(string nom)()
-instancia
MPOCJ
![Page 61: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/61.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Data-DrivenData-Driven (9/9)(9/9)
Los componentes refuerzan la creación de objetos utilizando archivos de datos.
![Page 62: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/62.jpg)
De jerarquía OO a col. Comp.De jerarquía OO a col. Comp.
![Page 63: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/63.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Paso 1 Paso 1 (1/3)(1/3)
Entidad como objeto “BLOB” organizado.– Dividir funcionalidades en subobjetos.– Referenciar desde el padre a los subobjetos.
Pro:– Razonablemente poca funcionalidad.– Poco tiempo.
Contra:– Sigue siendo “BLOB”.
![Page 64: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/64.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Paso 2 Paso 2 (2/3)(2/3)
Entidad como contenedor de componentes.– Factorizar componentes para que compartan misma clase
base.
Pro:– Necesidad de noción de objeto de juego como objeto
concreto.– Es posible transición a agregación pura.
Contra:– Todavía tenemos objeto raíz.
![Page 65: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/65.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Paso 3 Paso 3 (3/3)(3/3)
Entidad como una agregación pura de componentes.– Objeto es la suma de
sus partes.– Entidad es colección de
componentes.
![Page 66: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/66.jpg)
Caso : NeversoftCaso : Neversoft
![Page 67: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/67.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Tony Hawk’s Pro Skater Tony Hawk’s Pro Skater (1/3)(1/3)
Contexto:– 3 años de código.– Un juego de la saga por
año.
Problema:– Jerarquía objeto “BLOB”.– Objetos sufren sobrepeso.– Contienen información
innecesaria.– Duplicas de funcionalidad.
Propuesta de solución.– Transformar la jerarquía a
componentes.
![Page 68: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/68.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Tony Hawk’s Pro Skater Tony Hawk’s Pro Skater ((22/3)/3)
Recepción de la propuesta:– Resistencia programadores.– Difícil de explicar la idea a
gerentes. Ejecución de la propuesta:
– 2 años de reingeniería.– Primero construcción de
framework básico para componentes genéricos.
– Luego implementar aspectos del juego y mostrar a programadores.
Resultados:– Al comienzo poco visibles.– Luego fácil implementación de
nuevos objetos.
![Page 69: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/69.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Tony Hawk’s Pro Skater Tony Hawk’s Pro Skater (3/3)(3/3)
Detalles de la implementación:– Overhead de funciones
virtuales.– Compensado por
simplificación de objetos.– Necesidad de orden en lista
de componentes.– Necesidad de
comunicación de componentes.
Conclusiones:– Buena decisión.– Código mas limpio y fácil
de mantener.
![Page 70: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/70.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Tony HawkTony Hawk
![Page 71: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/71.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Conclusiones.Conclusiones.
– En el pasado poca importancia de la arquitectura debido bajos requerimientos.
– Con el incremento de los requerimientos la arquitectura comenzó a tomar mayor importancia.
– 3rd Parties imprescindibles el desarrollo actual AAA.– Tokenización una buena forma de pasar de los
requerimientos al diseño.– Diseño Jerárquico modelo muy estandarizado y pulido– Abstracción , modularización y Frameworks como
principios básicos– Diseño de Componentes buena opción para desarrollos
muy grandes.
![Page 72: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/72.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
ReferenciasReferencias
Libro– Game Architecture and Design. A new Edition (Rollins)– www.losersjuegos.com.ar/referencia/libros/descargas/
curso_programacion.pdf 3D engines
– http://cg.cs.tu-berlin.de/~ki/engines.html– http://www.quest3d.com/index.php?id=212&gclid=
CIWG84ylx5UCFQM1gQod3m9cjg– http://www.ogre3d.org/– http://www.codepixel.com/content/view/5135/34/
Phisics engines– http://www.tsnstudios.com/– http://www.iearobotics.com/proyectos/cuadernos/ct9/ct9.html
Manejadores de eventos– https://lg3d-wii.dev.java.net/
![Page 73: Arquitectura de Videojuegos](https://reader036.fdocuments.co/reader036/viewer/2022062301/5681592e550346895dc65d49/html5/thumbnails/73.jpg)
Facultad De Ingeniería – SVTI – Arquitectura y Diseño
ReferenciasReferencias
Programación– Game Programming Gems 6 -"Game Object Component System"
- Chris Stoy– http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
- Mick West– http://www.gamearchitect.net/Articles/GameObjects1.html -
Inheritance vs. Aggregation - Kyle Wilson– http://www.drizzle.com/~scottb/gdc/game-objects_files/frame.htm
- A Data-Driven Game Object System - Scott Bilas– http://garage.gaspowered.com/?q=su_301 - Introduction to
Dungeon Siege Architecture– http://www.gamedev.net/community/forums/mod/journal/
journal.asp?jn=443615&cmonth=9&cyear=2008&cday=4 - Componente-based design resources