730 likes | 917 Views
Arquitectura de Videojuegos. Seminario de Técnologías Interactivas y Videojuegos. Edición 2008. Rudi Lausarot, Manuel Martínez, Vosky Clavijo. Contenido. Introducción Historia Third’s Parties Del Análisis al Diseño Diseño Jerárquico/OO
E N D
Arquitectura de Videojuegos Seminario de Técnologías Interactivas y Videojuegos Edición 2008 Rudi Lausarot, Manuel Martínez, Vosky Clavijo. Facultad de Ingenieria - Computacion Grafica Avanzada - Aceleracion del Rendering
Contenido • 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 Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Introducción (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. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Introducción (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. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Historia (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”. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Historia (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. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Historia (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 Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Third Party components(1/2) • Motor 3D • Quake • Motor Físico • Rigid body dynamics • Todos? • Soft body dynamics • Unreal Tournament III Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Third Party components (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). Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (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 Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (2/21) PONG Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (3/21) • Tokens jerarquicos de PONG Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (4/21) • Tokenizacion • Identificamos los tokens del juego • Interacciones (eventos) • Definimos las interacciones posibles entre los tokens • Matriz de interacciones Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (5/21) • Matriz de interaccion de PONG Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (6/21) • Token Game world • Cadena de mensajes enviada cuando ocurre un gol Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (7/21) Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (8/21) • Simplificacion de Tokenizacion de PAC-MAN Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (9/21) • Maquina de estados para los fantasmas Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (10/21) • Maquina de estados para el Pac-Man Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (11/21) • Balls! ? • Maquina de estado Hot Ball Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (12/21) • Maquina de estado SnowBall Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (13/21) • Propiedades • Caliente, templado, frio Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (14/21) • Propiedades • Caliente, templado, frio Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (15/21) • Propiedades • Se agrega la propiedad Luz Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (16/21) • Interacciones (eventos) • Definimos las interacciones posibles entre los tokens • Hasta ahora tenemos: • Matriz de interacciones, eventos, estados, propiedades. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (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 Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (18/21) • Eventos • A: Power-up • B: Colision • C: Muere Pac-Man • D: Incremento Score • E: Fantasma es comido • F: Timer Reset Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (19/21) • Matriz interaccion Token/Property Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Del Análisis al Diseño (20/21) • Matriz Property/Property Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Descompocición Jerarquica(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 Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Descompocición Jerarquica (2/3) • 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”. Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Descompocición Jerarquica(2/3) • Ejemplo Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Data Driven (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). Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Data Driven (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. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Data Driven (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) Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Model-View-Controller (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 Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Model-View-Controller (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. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Model-View-Controller (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. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Model-View-Controller (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. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
FrameWork • FrameWork • Un diseño básico reusable con funcionalidad de por sí. • Extendible • Mantenible • Modificable • Flexible/Acotador • En VideoJuegos • Estructura básica con funcionalidad de la que facilmente se puede realizar un juego. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Ejemplo Práctico Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Introducción(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. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Introducción(2/2) • ¿por qué si utilizar componentes? • Reutilizable. • Robustez. • Rapidez • Fácil de mantener. • ¿por qué no utilizar componentes? • Difícil de comprender. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
Objeto de Juego (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.. Facultad De Ingeniería – SVTI – Arquitectura y Diseño
OJ como Jerarquía (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”. Facultad De Ingeniería – SVTI – Arquitectura y Diseño