A engine tem uma estrutura simples, porém bem flexivel.
Divimos a engine em varias assemblies, sendo atualmente as seguintes:
- Tecnodata3D.Utility
Engloba metodos e classes básicas necessárias ao funcionamento da engine. Nela se encontram singletons como a Global ( disponibiliza uma interface geral de acesso a todos os subsistemas da utility ), Input, Camera, AssetManager (gerencia o conteúdo do jogo), Log, ScreenManager (gerencia as telas do jogo) e UserProfileManager. Possui classes que representam entidades, luzes, coleções (ex. Pair), perfis de usuário e configurações, exceções, efeitos e módulos. Além de tudo isso, inclui também a classe BaseGame que é necessário herdar para a criação de um aplicativo usando a engine;
- Tecnodata3D.Additional
Inclui vários componentes como contador de FPS, capturador de imagem de tela, e telas padrão de jogo (explicarei esta parte em mais detalhe num novo post);
- Tecnodata3D.ContentPipeline
Todas as classes necessárias para a criação de tipos próprios de dados, como por exemplo nossa T3DModel e Terrain;
- Tecnodata3D.Physics
Toda a lógica de mundo físico é definida aqui nesta assembly. Por hora estamos utilizando a biblioteca Newton para simulação de física, mas nossa estrutura de classes é flexivel ao ponto de nos permitir utilizar outras bibliotecas, ou mesmo criar uma lógica do zero;
- Tecnodata3D.Renderer
Aqui se encontram as classes responsáveis pelo desenho 2D e 3D na tela, incluindo um SceneManager (que utiliza de um SceneGraph internamente para controle de cena). Inclui também facilidades pra criação de interfaces gráficas 2D, e controle de cursor de mouse;
Esta estrutura nos possibilitou uma fácil visualização do escopo da engine, e uma flexibilidade enorme na hora de alterar e adicionar módulos de engine. Eu estarei explicando mais detalhadamente cada uma das assemblies em posts seguintes - então até breve.
quarta-feira, 7 de novembro de 2007
Assinar:
Postar comentários (Atom)
2 comentários:
A classe Util não é um porão? Onde muitos programadores colocam rotinas diversas?
Não seria mais prudente definir mais as classes?
[billguedes]
Opa Guedes, bacana voce ter postado por aqui.
Bom, na verdade a Utility nao eh uma classe, e sim um conjunto de classes. Nessa biblioteca, colocamos tudo representa a base da engine. Existe uma biblioteca extra na engine que define rotinas e classes diversas de apoio, a qual chamamos de Tecnodata3D.Additional. É mais uma questao de nomeclatura.
Em relaçao a definir mais classes - a utility incorpora um bom punhado de classes necessarias ao funcionamento da engine (e cresce a cada dia q passa), isso inclui classes para manipulaçao de modelos (com texturas e animaçoes), camera, input, logging, configuraçoes de usuario, controle de fluxo, gerenciamento de janela e jogo, etc.
Postar um comentário