GameDev #5: Conhecendo o XNA – Uma Visão Geral

em 30/10/2009

No nosso último encontro concluimos o primeiro ciclo da coluna GameDev do Nintendo Blast , que se propôs a apresentar todo o ciclo de... (por Jones Oliveira em 30/10/2009, via Nintendo Blast)

banner_gamedev

No nosso último encontro concluimos o primeiro ciclo da coluna GameDev do Nintendo Blast, que se propôs a apresentar todo o ciclo de vida de produção de um jogo de vídeo games a todos nós leitores. Vimos a produção de um vídeo game sob o prisma administrativo, conhecemos as principais profissões e as atividades desenvolvidas por esses profissionais. Na coluna de hoje tanto iniciaremos o nosso segundo ciclo da coluna, que tem como objetivo apresentar as tecnologias que utilizaremos para desenvolver nossos joguinhos, bem como apresentaremos uma visão geral do Microsoft XNA, a principal iniciativa da gigante de Redmond (e da indústria) para incentivar o desenvolvimento de jogos por desenvolvedores independentes e pequenas empresas – iniciativa que não se vê em nenhuma outra empresa da indústria, nem na Nintendo (infelizmente).

Observando a indústria de vídeo games conseguimos perceber que a cada dia somos cada vez mais bombardeados com novidades, novos consoles e novos jogos que estão chegando ao mercado. Em média de 5 em 5 anos estamos saltando de geração de consoles, diariamente temos algum lançamento de jogo, algum rumor ou algo do tipo, cada vez mais empresas entram para o ramo… A indústria simplesmente não para!DevKit do PS3 - Tão compacto quanto um PS2 Tijolo

Muitos podem pensar, erroneamente, que a evolução da indústria, e consequentemente dos jogos, está atrelada à facilidade cada vez maior de desenvolver jogos, de construir novas plataformas, quando na realidade toda essa produção não passa de uma questão mercadológica, de comércio e faturamento. Embalados pelos lucros e pelas vendas, os jogos estão cada dia mais complexos! Passamos rapidamente dos gráficos 2D para os 3D. Os enredos que nos prendem às jogatinas estão cada vez mais complexos. Os efeitos sonoros estão cada vez mais bem produzidos… os jogos estão cada dia mais completos, mais difíceis e caros de serem produzidos.

Kit de Desenvolvimento para PSP Desconsiderando o grosso dos custos que envolvem o desenvolvimento de um jogo e trazendo as coisas para a “nossa realidade”, de gamer, caso queiramos desenvolver qualquer jogo, por mais bobo que ele seja, teremos que desembolsar algo em torno de US$15.000 para a aquisição dos equipamentos chamados de development kits (kits de desenvolvimento) para uma plataforma específica. Esse preço sobe, e muito, se quizermos desenvolver para um console que ainda está por vir – lá se vão algo em torno de US$80.000 do nosso bolso! Fica a pergunta: alguém tem esse dinheiro ai?

Muitas pessoas que desejam começar na área de desenvolvimento de jogos muitas vezes sentem-se perdidas com a pergunta: “por onde devo começar?”. É fato que existem muitos cursos técnicos e, em alguns lugares do Brasil, até mesmo de graduação em desenvolvimento de jogos. Também existem várias ferramentas e linguagens de programação para você iniciar seus estudos sobre desenvolvimento de jogos – o que realmente pesa quando chegamos a esse ponto é: “tenho tempo e dinheiro o suficiente para investir em tecnologias que exigirão de mim uma curva de aprendizagem muito grande?”.

Em cima desses dois questionamentos a Microsoft desenvolveu uma iniciativa muito interessante chamada XNA que compreende um framework e ferramentas próprias para desenvolvimento de jogos voltadas a pessoas comuns, como eu e você, e de fácil aprendizagem. Quando falo pessoas comuns, estou falando de pessoas sem dinheiro, pois é tudo gratuito.

 

Entendendo o que é o XNA

xna-hero-banner Visando disponibilizar as tecnologias de desenvolvimento que antes eram praticamente monopolizadas pelas grandes softhouses da indústria e também atrair pequenas empresas, desenvolvedores independentes e entusiastas, a Microsoft resolveu lançar o XNA em 2006 como uma iniciativa de facilitar e popularizar o desenvolvimento de jogos digitais, quer eles sejam para PC, quer sejam para XBOX 360 ou Zune.

Algumas das principais características do XNA são oferecer um ambiente de desenvolvimento rico, de fácil aprendizagem e que funciona todo em ambiente de tempo de execução gerenciado.zune-hd

Quando falamos de um ambiente de desenvolvimento rico estamos falando que o XNA nos oferece, por meio do XNA Game Studio integrado ao Visual Studio, um ambiente integrado de desenvolvimento, não havendo a necessidade de utilizar várias ferramentas para executar tarefas que poderiam ser feitas em um lugar só – no caso, o Visual Studio.

cco_shell_default_header_xna_logoÉ de fácil aprendizagem por utilizar a linguagem de programação C#, a qual tem como principal característica a sua similaridade com as linguagens de programação C/C++ e Java, o que diminui bastante a curva de aprendizado para desenvolvedores dessas linguagens. Até para quem nunca programou, C# é extremamente amigável e conta com uma vasta biblioteca que contém todos os pormenores da linguagem, além de uma forte comunidade presente no MSDN – o portal de desenvolvedores da Microsoft. Assim como C#, o XNA conta com uma forte comunidade de estudantes e profissionais, o XNA Creators Club – o que facilita mais ainda o aprendizado dessa tecnologia.

 xbox360_consoleO fato de todo o código escrito para os jogos em XNA ser executado em um ambiente de tempo de execução gerenciado é um dos pontos altos da facilidade de se desenvolver em XNA. Por utilizar o .NET Framework através do XNA Framework, o desenvolvedor está livre de ter que se preocupar com tarefas “bizonhas” que não fazem parte da ideia, da concepção do seu jogo. Por exemplo, quando se desenvolve jogos sem o apoio de um framework com linguagens de programação como C/C++, muitas vezes o desenvolvedor tem que se preocupar e implementar técnicas de otimização de desempenho, de gerenciamento de memória, renderização de gráficos e coisas do tipo, que simplesmente não fazem parte do projeto em si.

A utilização de um framework faz com que o desenvolvedor foque na sua solução, no seu jogo. Essa parte “chata” de escrever linhas de código que serão executadas à nível de hardware fica por conta do framework que, em linhas gerais e de forma bastante simples, pode ser visto como uma biblioteca de instruções pré-estabelecidas e testadas que visam simplificar o desenvolvimento de um software. Mesmo assim isso não quer dizer que as vezes você não precise escrever códigos para otimizar alguma coisa, mas isso é extremamente raro, principalmente em pequenos projetos. Saiba mais sobre frameworks.

Dessa forma o XNA é uma alternativa bastante atraente para quem está procurando iniciar em desenvolvimento de jogos: oferece todas as ferramentas, suporte através de uma comunidade, pouco conhecimento técnico e tecnologia extremamente didática e de fácil aprendizado.

 

Visão geral do XNA

Ao contrário do que acontece num estúdio de desenvolvimento de jogos em que há a necessidade de programas específicos para desenvolvimento, de máquinas específicas para executar esses códigos e tudo o mais que vem nos kits de desenvolvimento, basicamente o que é necessário para desenvolver em XNA é um computador rodando o Windows XP SP2 ou superior, o Visual C# Express Edition (gratuito) e o XNA (gratuito) propriamente dito – só isso.

Basicamente o XNA se organiza da seguinte forma:

 

image

XNA Framework

É o principal responsável por simplificar o desenvolvimento de jogos, tanto para Windows, quanto para o XBOX 360 e para o Zune. A utilização de um framework é que confere um ambiente gerenciado de execução do código escrito em XNA.

No caso do XNA Framework as instruções foram baseadas no .NET Framework e atendem especificamente às principais rotinas de desenvolvimento de jogos, possuindo várias camadas específicas, as quais discutiremos no nosso próximo artigo.

Para o desenvolvimento de jogos para PCs com Windows, o XNA Framework se baseia no .NET Framework propriamente dito. Já para as plataformas XBOX 360 e Zune, devido às suas particularidades de arquitetura, o XNA Framework se utiliza da versão compacta do .NET Framework, o .NET Compact Framework.

 

Visual Studio

Quando se desenvolve alguma coisa em alguma linguagem de programação, pode-se optar por utilizar quaisquer coisas para escrever o seu código – desde um papel + caneta, até o bloco de notas ou um ambiente de desenvolvimento (também conhecidos como IDEs) completo. A grande diferença entre essas formas de desenvolver são as facilidades oferecidas pelos ambientes de desenvolvimento.

O Visual Studio é a principal IDE para desenvolvimento de soluções com tecnologias Microsoft e o XNA, integrado ao Visual Studio por intermédio do XNA Game Studio (que também é instalado quando se instala o XNA no seu computador), se utiliza de suas facilidades para deixar o desenvolvimento de jogos mais simples ainda. No Visual Studio o desenvolvedor é capaz de gerenciar todo o seu projeto, desde os arquivos de códigos até os arquivos de mídia, modelos 3D, engines, além de executar os jogos em busca de erros de programação (debbuging) – que é praticamente o que os kits de desenvolvimento mencionados no início do artigo fazem.

 

Considerações finais

Como vimos, o XNA é uma excelente alternativa para quem está iniciando em desenvolvimento de jogos. Claro que ela não é a única alternativa gratuita que existe porai – existem iniciativas com Java, com C/C++, Objective C e várias outras linguagens de programação – mas é a mais didática e prática existente justamente por se utilizar de um framework exclusivo para isso e tornar as coisas mais simples de serem entendidas. Pra se ter uma ideia, XNA é a principal tecnologia utilizada em cursos de ensino superior em desenvolvimento de jogos nos EUA, ganhando espaço e notoriedade cada vez maiores em instituições brasileiras também.

racing_game_full Ao contrário do que muita gente pode pensar, não são apenas jogos em 2D, simples e bobos que podem ser desenvolvidos em XNA – pelo contrário. Nele você pode desenvolver jogos totalmente em 3D, com módulos multiplayer online e tudo o mais – tudo isso implementado “às custas” do framework! Quem desejar dar uma olhada nas possibilidades de desenvolvimento com XNA pode dar uma olhada nos Starter Kits disponíveis no XNA Creators Club.

tim-sweeneymay25 Algumas pessoas que já programam e/ou desenvolvem alguma solução de software podem apontar que, por ser executado em um ambiente gerenciado, o XNA perde em desempenho para jogos desenvolvidos em linguagens como C/C++. Bem, isso seria verdade há algum tempo, mas deixou de ser um problema com o XNA o qual tem todo o seu processamento de baixo nível executado pelas bibliotecas do DirectX 9.0c! E mesmo que isso fosse um problema, grandes desenvolvedores, como Tim Sweeney (Unreal 3, Epic Games), dizem que “produtividade é tão importante quanto performance” e “nós sacrificaríamos prazer 10% de nossa performance por 10% de alta produtivdade”.

Dessa forma, sabemos de uma vez por todas que o XNA é uma excelente solução para iniciarmos os nosso estudos em desenvolvimento de jogos. Para você que é curioso e já deseja arriscar seus primeiros passos em XNA, poderá encontrar, gratuitamente, todas as ferramentas necessárias para começar os seus estudos na sessão de downloads do Creators Club.

mario_coin É importante perceber que você poderá desenvolver para o seu XBOX 360 gratuitamente também, caso tenha um. Porém para distribuir/vender seus jogos para outros “caixistas”, você deverá ter uma assinatura do Creators Club no valor de US$99. Como desenvolvedor independente, ou pequena empresa, a Microsoft repassará uma porcentagem de vendas do seu jogo para você, bem como é feito pela Apple com aplicações para o iPhone por exemplo. Contudo o objetivo da nossa coluna aqui no Nintendo Blast não é a de desenvolver os jogos para distribuição/venda deles na Live, mas sim introduzi-los às tecnologias de desenvolvimento de jogos utilizando o XNA.

Hoje iniciamos a segunda fase da nossa coluna de GameDev aqui no Nintendo Blast. Tivemos uma visão geral da plataforma que utilizaremos para aprender como desenvolver nossos joguinhos para PC. No nosso próximo encontro iremos explorar as camadas do XNA Framework para entedermos como ele funciona e quais facilidades ele nos proporcionará na hora de desenvolvermos os nossos jogos. Até a próxima!


Escreve para o Nintendo Blast sob a licença Creative Commons BY-SA 3.0. Você pode usar e compartilhar este conteúdo desde que credite o autor e veículo original.
Este texto não representa a opinião do Nintendo Blast. Somos uma comunidade de gamers aberta às visões e experiências de cada autor. Escrevemos sob a licença Creative Commons BY-SA 3.0 - você pode usar e compartilhar este conteúdo desde que credite o autor e veículo original.