--DRAFT-- Breve descripción de los módulos de la arquitectura del Engine. (j3dengine?)



Documentos relacionados
CAPÍTULO 3 Servidor de Modelo de Usuario

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

MANUAL SISTEMA RESERVAS TEM V1.2

Q-flow Patrones básicos de Workflow

(PHP y APACHE), y el programa de comunicación Skype, para controlar de manera

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

Workflows? Sí, cuántos quiere?

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

INTRODUCCION. entidades. Modelo lógico de la base de datos. Matricula. carne. codigo_curso. año semestre nota. propiedades

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Curso de Spring Framework

1 EL SISTEMA R/3 DE SAP AG

UNIVERSIDAD DE BUENOS AIRES FACULTAD DE INGENIERÍA. Documentación de Motivación del Proyecto. JMit. Java Monitoring by Introspection Tool

Diseño de Componentes

- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD. Rev. 01- FEBRERO 2013

Figura 4.1 Clasificación de los lenguajes de bases de datos

Bechtle Solutions Servicios Profesionales

Manual del Desarrollador

5.4. Manual de usuario

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

Instructivo para la sincronización de servidores Intellect

INDICE. 1. Introducción El panel Entities view El panel grafico Barra de botones Botones de Behavior...

Programación Avanzada Ingeniería Civil en Computación

Edición de Ofertas Excel Manual de Usuario

Obteniendo más valor de su Sistema ERP

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Introducción Render básico Rendereando a disco duro

1 Índice Introducción Propósito Alcance Modelo Arquitectónico Inicial... 3

WINDOWS : TERMINAL SERVER

ArquitecturaTécnica de TRAVEL OPEN APPS. Breve definición técnica de la plataforma Travel Open Apps

PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha

Gestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi

LiLa Portal Guía para profesores

Que es normalización? Normalización de una base de datos Grados de normalización: Primera Forma Grados de normalización: Segunda Forma Grados de

SAP Business Workflow

Componentes de Integración entre Plataformas Información Detallada

Internet Information Server

Capitulo 6. Como echarle el muerto a alguien.

WINDOWS 2003 SERVER DIRECTORIO ACTIVO Y DNS

1.1 AUDIENCIA CONTENIDO ITEMS DE MONITOREO ACCIONES MONITOREO Y ALARMA...7. 'HVFULSFLyQ.

DESCRIPCION DE PLC UP32 17/07/11 MAN-PLC-UP32-01A

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.1 UML: Introducción

Conceptos Generales en Joomla

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Elementos requeridos para crearlos (ejemplo: el compilador)

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

Pequeño tutorial de fútbol de robots en Squeak

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales.

Planificación en Team Foundation Server 2010

Autenticación Centralizada

FARMACODE software específico para farmacias

Normalización de bases de datos

DISEÑO DE COMPONENTES DE SOFTWARE *

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Windows Server 2012: Infraestructura de Escritorio Virtual

Base de datos en Excel

Algunas Herramientas de Apoyo al Análisis y Diseño de Software. Agustín J. González ELO329: Diseño y programación orientados a objetos

Introducción a la plataforma Moodle Aníbal de la Torre Plataforma Moodle. Accediendo a los contenidos

Guía de uso del Cloud Datacenter de acens

CAPÍTULO VI PROCEDIMIENTO PARA PROGRAMAR LA PRODUCCIÓN. Las expectativas de ventas, como se acaba de reflejar, y

Plataforma Helvia. Manual de Administración Administración General. Versión

! " " & '( ) ( (( * (+,-.!(/0"" ) 8-*9:!#;9"<!""#

G R U P O S INDICE Cómo crear una cuenta en ARQA? Cómo tener un grupo en ARQA? Secciones y funcionalidades de los grupos Configuración del grupo

PATRONES. Experto. Solución:


UTILIZACIÓN DE RELOJES

Creación y administración de grupos de dominio

1. Visualización de datos con Octave

4. Programación Paralela

Operación Microsoft PowerPoint 97

- MANUAL TÉCNICO - Implantación de software de Marketing Online

Network Services Location Manager. Guía para los administradores de redes

Movimiento Rectilíneo Uniforme

Capítulo 4. Implementación del lenguaje multitáctil

TEMA 3. SERVICIO DHCP

Capitulo 3. Desarrollo del Software

Contacto Lespade, Juan Pablo Dirección: Las Heras 490 Luján (B6700ATJ) Buenos aires Argentina Tel:

Manual de administración Administración General V

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Informàtica i Comunicacions Plaça Prnt. Tarradellas, FIGUERES (Girona) Tel Fax

Simulador de Carreras

Manual de Usuario Comprador. Módulo Administración de Presupuesto. Iconstruy e S.A. Serv icio de Atención Telefónica:

Capítulo 5. Análisis del software del simulador del sistema de seguridad

Administración de Dominios CGP 5.1

2.2.- Paradigmas de la POO

SOLUCIÓN SITUACIÓN ACTUAL

UNIVERSIDAD DE OVIEDO

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Introducción a la extensión de scripting en gvsig 2.0

1.1.- Introducción a la Web Vemos una introducción al medio donde se encajan los lenguajes que vamos a tratar: la web.

5/09/ Agregar cambios en las alertas Matias Herrera

Pantalla HMI como maestro 3 PLC esclavo

Copyright. INSTRUCTIVO DE CONFIGURACIÓN DE PC s DE CLIENTES CASH MANAGEMENT

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas

Manual de Usuario del Sistema de Vigilancia Profesional (Professional Surveillance System, PSS)

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

IVista: es la interfaz con la que el Presentador se comunica con la vista.

Transcripción:

--DRAFT-- Breve descripción de los módulos de la arquitectura del Engine. (j3dengine?) Arquitectura Tenemos 3 módulos principales: CoreObjects Processors GameActionAPI Además tenemos un cuarto módulo, ConfigurationEditor que sería una aplicación separada, la cual sirve para crear y configurar un World 1. Los primeros 3 y las librerías thirdparty formarían el SDK. El configuration editor sería el tool o herramienta. En el proyecto no implementaremos física, audio, networking, AI. Sin embargo el engine debe permitir extensión hacia esas funcionalidades. Las librerías thirdparty que utilizaremos son: Xith3D (y dependencias) para scenegraph, rendering y 3D model loading. jogl o lwjgl para acceso a dll de OpenGL JInput/HIAL para manejo de Input devices El diagrama de módulos muestra cada módulo y las dependencias entre estos. Funciones de cada Módulo CoreObjects El GameObject es el objeto principal del módulo. Un tipo especial de GameObject es el World. El World contiene todos los GameObject del nivel cargado en runtime. El World se carga a memoria a través del GameObjectManager, el cual provee de servicio de lookup para encontrar los GameObject por su nombre. Un GameObject tiene atributos y estado. El estado de un GameObject en un instante dado debe ser uno de los posibles estados válidos para ese GameObject. Un estado tiene atributos. Otro tipo de GameObject son los DynamicGameObject. Los estados de los DynamicGameObject tienen comportamiento (Behavior). Al cambiar de estado, se ejecuta un comportamiento de desactivación para el primer estado y se ejecuta uno de 1 World: Decidimos llamar World a lo que también se conoce en otros Engine como Level o Scenario.

activación para el nuevo estado. El comportamiento del DynamicGameObject será el que tenga el estado actual de ese DynamicGameObject. Hay otros GameObject especiales, las Cámaras y los Player. Los GameObject pueden tener una representación espacial, o sea, una Geometry. Esta Geometry es una referencia al nodo del Scenegraph que representa el modelo 3D. Cualquier modificación que impacte sobre la geometría del GameObject, se realizará a través de la referencia del Geometry. Otro componente importante de un DynamicGameObject es el MovementController. Éste provee la funcionalidad para transformar la posición geométrica del objecto. Si queremos iniciar un movimiento con una velocidad en una cierta dirección sobre un DynamicGameObject, lo haremos a través de su MovementController.

Processors Este módulo contiene la lógica de ejecución del Engine. El objeto principal es el Processor. El Processor contiene la lógica de ejecución de algún dominio de la ejecución del Engine. Hay un Processor para cada funcionalidad o dominio: User Interface, Rendering, Game Logic, Physics, Audio, y cualquier Processor necesario. Cada Processor utiliza las librerías necesarias para llevar a cabo la ejecución correspondiente. En este sentido el Engine es extensible. Si deseo agregar una funcionalidad nueva, por ejemplo que provea una librería de física, sea PhysicsLib. Debo agregar un Processor que adapte esa funcionalidad a los objetos del Engine, supongamos que se llama PhysicsProcessor. Ahora el Engine dispondría de un Physics Engine el cual estaría compuesto por el PhysicsProcessor más el PhysicsLib. Cada Processor ejecuta una lógica propia del dominio sobre el que es responsable. Además, debe consumir los eventos externos que son colocados durante la ejecución del Engine en la cola de eventos. Cada Processor tiene una cola de eventos, y los eventos son específicos del dominio del Processor. El GameEventMulticaster se encarga de hacer el dispatch de los eventos a los Processor que corresponda. Por ejemplo, el GameLogicProcessor podría tener un pseudo-código como el siguiente: class GameLogicProcessor : Processor{ execute(){ for each event in eventqueue{ processevent(event); objects = GameObjectManager.getAllDynamicObjects(); for each object in objects{ object.update(); Aunque no nos enfocamos ni testeamos performance, la arquitectura del Engine debe permitir ser mejorada y optimizada. Queremos hacer uso de las capacidades multithreading del sistema operativo y de los nuevos microprocesadores multicore. El ProcessorManager se encarga de cargar la configuración de los Processor y disponer los threads de ejecución. El Engine no fuerza un tipo de loop, sino que permite configurar los loops y darles prioridades.

Un ejemplo de archivo de configuración podría ser: <executionconfig> <loop name= main loop priority= 10 > <processor name= Renderer > edu.ua.processors.renderer </processor> </loop> <loop name= main loop priority= 5 > <processor name= UserInterface > edu.ua.processors.uiprocessor </processor> <processor name= GameLogic > edu.ua.processors.gamelogicprocessor </processor> </loop> </executionconfig> En este caso se armarían dos loops de procesamiento. O sea, habría dos threads en ejecución paralela. El primer thread sólo ejecutaría al Renderer y tiene la mayor prioridad. El segundo thread ejecuta dos Processor diferentes en secuencia, y posee una menor prioridad al primer thread. En este caso lo configuramos de esta manera porque asumimos que hay una dependencia entre la actualización del estado de los input devices y la ejecución de la lógica del juego. También asumimos que el rendering puede ejecutarse en paralelo a estos dos, ya que no hay una dependencia entre las ejecuciones.

GameActionAPI Este módulo provee la funcionalidad para ejecutar acciones que afecten al World. Las acciones u operaciones están representadas y encapsuladas en el GameAction. Hay distintos tipos de GameAction y pueden agregarse todos los tipos que sean necesarios. Por ejemplo, el GeometryAction es un subtipo de GameAction que encapsula operaciones de modificación de la geometría de los GameObject. Podría existir un GeometryAction que sirva para cambiar de posición a un objeto: class MoveObjectAction : GeometryAction { //constructor MoveObjectAction(targetObject, newposition){ execute(){ moveobjectto(targetobject, newposition); Los GameAction utilizar la funcionalidad de los demás módulos para implementar las operaciones. El GameActionAPI provee de un facade como punto de acceso centralizado a la funcionalidad del API, éste es el GameActionOperations. Tiene métodos simples para ejecutar las distintas operaciones. Estos métodos delegan la ejecución de las operaciones en los GameAction. Cuando se actualiza un DynamicGameObject se ejecuta su Behavior. La implementación del Behavior invoca GameActions para llevar a cabo las operaciones necesarias. Pero puede utilizar los métodos del GameActionOperations para simplificar el código de la implementación. Supongamos que el Behavior de un DynamicGameObject fuese mover al objecto a una posición determinada que varía al azar, se implementaría de la siguiente forma: class RandomMoveBehavior : Behavior { execute(){ action = new MovementAction(this, randomposition); action.execute();

En cambio si utiliza el GameActionOperations: import GameActionOperations.*; //importa las operaciones del facade class RandomMoveBehavior : Behavior { execute(){ move(this, randomposition); Si quisiéramos implementar un intérprete de scripts, los scripts serían más fáciles de programar al utilizar este facade.

j3dengine Modules DRAFT!!! Object-Oriented Model Model: Architecture Package: Diagram: MainModules Author: Pablo Date: 3/1/2007 Version: Core Objects Configuration Editor Game Action API Processors Third Party Libraries User Interface Library Scenegraph & Rendering Library Physics Library Audio Library JInput Xith3D 1 / 1

Loads World. Lookup service for Game Objects. DRAFT!!! Holds all game objects. Provides game time. GameObjectManager <<manages>> - - Attribute name value When state is changed, a specific behavior is executed to deactivate the former state, and an initialization behavior is executed once to activate the new state. World State GameObject states currentstate - name Sends a specific type of event under a given condition. [mmm - remove if unnecessary] DynamicObjectState behavior Behavior Player DynamicObject initbehavior finishbehavior Trigger Camera Object-Oriented Model Model: Architecture Package: Diagram: CoreObjects Author: Pablo Date: 3/1/2007 Version: MovementController Geometry Adapter for the scenegraph object. 1 / 1

DRAFT!!! Handles resources loading. Access point for resources lookup. ResourcesManager Event broadcaster. Domain specific implementations for each processor. Processor configuration. Thread priorities. GameEventMulticaster GameEventFactory ExecutionConfiguration ProcessorManager <<creates>> <<creates>> listeners GameEventQueue GameEvent ProcessorLoopThread Processor Executes collision detection. Adapter for Thirdparty physics library. Renderer Adapter for Thirdparty renderer. HUDProcessor UIProcessor PhysicsProcessor AudioProcessor GameLogicProcessor Executes GameObject's behavior. Displays 2D information and images on the HUD. UIManager GameObjectManager RenderingLibrary Object-Oriented Model Model: Architecture Package: Diagram: Processors Author: Pablo Date: 3/1/2007 Version: UILibrary PhysicsLibrary AudioLibrary 1 / 1

CoreObjects Behavior DRAFT!!! Provides centralized access to game actions. <<facade>> GameActionOperations BehaviorImpl GameAction Processors GeometryAction GameLogicAction AudioAction Change an object's speed, rotation,... (Movement and animation actions) Create an object, change state, destroy an object, create a Game event... Play a sound, start/stop music... Object-Oriented Model Model: Architecture Package: Diagram: GameActionAPI Author: Pablo Date: 3/1/2007 Version: 1 / 1