miƩrcoles, 9 de abril de 2008

DemoSystem's Architecture

Applications

DemoSystem consists of two applications:
  • DemoStudio: a demo-editing environment, its main function is to abstract whatever's inside programmers mind, into an easy to use GUI. This application is not necesarilly included along the demos when you release them.
  • DemoPlayer: the demo-player that loads "demo definition files" and play them. This is the one that need to be released with the demo and the rest of the assets.
Extensibility

DemoSystem is designed to provide a generic framework for demo-editing, with out sacrificing any functionallity some one may come up with in the future. To make that possible, the different components of the system are fully extensible thanks to a pluggin system.

Pluggins are easy to make, and can be used to provide any kind of operation on both the demoplayer and the demosystem. You can make pluggins by simply deriving a few classes, and then placing your binary .dll inside the right folder.

Also, for one's convenience, all the required clases and interfaces are placed into a separate library. Include a reference to that library in your project, and you're ready to go.

Multiplatform

DemoSystem is designed with multiplatform in mind, at several levels:
  • Rendering: All rendering logic is encapsullated into pluggable components, to allow rendering in different subsystems.
  • GUI: DemoStudio is conveniently divided into separated "bussines" and "presentation" layers. This will allow radically different user interfaces schemes.
We are targetting the following platforms at launch time (version 1.0):
  • Demo playback:
    • Windows via Ogre (supporting both DirectX & OpenGL)
    • Windows via XNA
    • Xbox360 via XNA
  • DemoStudio:
    • Windows only
Other platforms that may come in the future:
  • Playback and editing in linux (via Mono, as soon as 3D rendering becomes usable)
  • Creating demos directly in Xbox360 (as soon as we come up with an usable Xbox360 control scheme for editing)

No hay comentarios: