sábado, 20 de outubro de 2007

Camadas do XNA

Pois bem... Uma ótima maneira de entender melhor sobre o que há por trás do XNA ou o quê a plataforma XNA faz para ajudar aos programadores de jogos a abstrair alguns conceitos é um estudo sobre as camadas do XNA.

Quanto mais baixa a camada a ser observada, mais baixo nível sua implementação se torna. E o que significa uma implementação de baixo nível? No que tange a este artigo, significa que você perde um tempo relativamente grande pra dar um passo relativamente pequeno no desenvolvimento da sua aplicação. Já tentou programar em Assembly? Assembly é uma linguagem de baixo nível. Códigos em assembly são difíceis de se ler, mas o pior é programar mesmo, pois são necessárias muitas linhas de código pra fazer, por exemplo, um "a + b", enquanto que em uma lingaugem de alto nível, uma operação "a + b" é... "a + b"! :)

Continuando, o XNA nos provê já muita coisa para abstrairmos as camadas de mais baixo nível dos jogos. Eu disse "mais baixo nível", e não "baixo nível" porque o objetivo do XNA é ser uma API para programar sobre o DirectX, que já tem o objetivo de ser uma API sobre uma programação de ainda mais baixo nível! Isto é, o XNA está um nível de abstração mais alto que o DirectX. E isso só ajuda a popularizar o desenvolvimento de aplicações, no caso aplicações de jogos.

É como o Windows. Ele é ruim? Depende. Ruim pra quem? Pra quem sabe ou quem não sabe? Pra quem "não sabe de nada", ele é ótimo. E o resultado? Todo mundo usa! XNA é ruim? Não sei. Me parece que não. E tem tudo pra dar certo. Mas uma coisa é certa: todo mundo vai usar! :D

Então vamos às camadas!

A camada mais abaixo é a camada do DirectX, ou melhor, o conjunto de API´s do DirectX: Direct3D, que é a camada responsável pelos gráficos 3D, XACT, a API responsável pelo gerencimento do áudio, XINPUT, que gerencia os dispositivos de entrada, como mouse, teclado e gamepad, XCONTENT, que gerencia o conteúdo da aplicação.

Por cima dessa camada do DirectX, há o núcleo do framework XNA, responsável pelo gerenciamento dos gráficos, sons, entrada, etc. Esse gerenciamento é feito por algoritmos e que para nós, em princípio, não interessa como são implementados, pois essa é a idéia de um framework: abstrair detalhes de implementação que não são da lógica do negócio para otimizar a produtividade.

Indo a mais um nível acima, temos as extensões do framework XNA, como os modelos de aplicações. Isso é ótimo porque o framework já nos fornece um jogo pronto, porém vazio, sem nada! (execute um projeto assim que for criado. Você verá uma tela azul durante a execução, isto é, um jogo que mostra somente uma tela azul, sem nenhuma interatividade). Assim, essas extenções do framework já adiantam muitas coisas na hora de começar um projeto.

Na camada mais acima, finalmente, é onde nós vamos programar colocando nosso fonte, classes, componentes, etc., onde de fato está o nosso trabalho, onde nossos neurônios vão trabalhar, tendo todo o resto abstraído, desocupando nossas cabeças e nos dando a possibilidade de se concentrar somente no jogo em si! Veja o tamanho da abstração! Valeu, Microsoft!

Figura retirada do WorkShop de AFurtado.

Nenhum comentário: