jueves, 22 de abril de 2010

QYK Development (I): Architecture

(-- English Below --)

¿Como estamos estructurando el código de QYK? 
Pues como dijo un gran sabio, un sitio para cada cosa y una cosa para cada sitio.

El código lo tenemos divido en librerías, las cuales tienen un manager que son las fachadas de estas librerías.
Las librerías tienen que ser claramente diferenciables entre ellas por su función en el código, así tenemos:
  • Eventos: Se encarga de todo el input.
  • Render: Es la librería gráfica. Utilizamos OpenGL para facilitarnos la tarea.
  • IA: Aqui definiremos todas las funciones que tengan relación con la Inteligencia Artificial. Ejemplos de estas funciones pueden ser el pathfinding A* o el comportamiento de los enemigos (PNJs).
  • Internet: Es la librería donde declararemos las funciones de comunicación entre los clientes y el servidor para el multijugador.
  • Animación: Aqui implementamos los timers que usamos para las animaciones así como otras utilidades. 
  • Sound: Utilizando la librería FMOD creamos las clases necesarias para tener música y efectos sonoros.
  • Fisica: Gracias a la ODE hemos creado una librería de fisicas útil para detectar colisiones y rebotes.
  • Helper: Librería especial en la que hay todas aquellas clases útiles para simplificar el trabajo de las demás librerías como puede ser una clase Vector3, o Coord2D.
  • MAIN: Y finalmente la lógica del juego. Personajes, escenarios, etc.
Como hemos comentado antes, los managers son clases fachadas que nos permiten utilizar sus respectivas librerías sin tener que preocuparnos de como estan implementadas por dentro, así tendremos la RenderManager, SoundManager, etc. donde cada uno de estos managers estan implementados con el patrón singleton.

------------------------------------------------ 

How we are structuring the QYK code?
Well, as said a great man, a place for each thing and a thing for each place.
The code is divided into libraries, which have a manager that are the facade of these libraries.  
The libraries must be clearly distinguished between them for their role in the code, so we have:
  • Events: Responsible for all the input.
  • Render: Is the graphics library. We use OpenGL to do this task.
  • IA: Here we define all the functions that are related to Artificial Intelligence. Examples of these functions may be the A* pathfinding and the enemies's behavior (NPCs).
  • Internet: Is the library where we declare the communication's functions between clients and server for the multiplayer.
  • Animation: Here we implement the timers to use it for animations and other utilities.
  • Sound: Using the FMOD library, we create some classes to have music and sound effects.
  • Physics: Thanks to the ODE library we have a physical library useful for detecting collisions and rebounds.
  • Helper: Special library in which there are all those useful classes to simplify the work of other libraries such as a Vector3 class or Coord2D.
  • MAIN: And finally the game logic. Characters, settings, etc..
As we said before, managers are classes that we use as facades of their respective libraries without having to worry about how they are implemented, so we have the RenderManager, SoundManager, etc. where each of these managers are implemented with the singleton pattern.

3 comentarios:

  1. Y no usareis Xface para la animación facial??? Aleiiix

    ResponderEliminar
  2. El juego trata de tres magos que se ven arrastrados al futuro por un portal. Pues un efecto secundario del portal es una parálisis completa de cara.
    Tenemos a todo un equipo trabajando con las técnicas más avanzadas para conseguir este efecto de parálisis.

    Gracias por preguntar Anónimo :).

    ResponderEliminar
  3. Y por qué la paralisis sólo afecta a la cara?? Si todo el cuerpo atraviesa el portal no sería más logico que la paralisis afectara a todos los músculos del cuerpo??
    O es que llegan a una misteriosa Isla con propiedades electromagneticas singulares y curativas, misteriosos osos polares, etc... Y a lo largo del juego se les iran curando las paralisis???
    Gracias.

    Mr X.

    ResponderEliminar