Hoje fiquei sabendo, pelo blog do Juliano, que foi disponibilizado o XNA Game Studio 2.0 beta. Isso me incentivou a escrever sobre este interessante tema.

Na era pré-XNA existiam apenas duas formas de fazer jogos :

- Baixo nível, acessando direto APIs. Em ambiente windows, APIs do DirectX, em outros ambientes, OpenGL. Programação complexa feita em C++ ou outras linguagens de baixo nível

- Altissimo nível, através do uso de Engines, como o TorqueX (que na sua versão mais simples, é gratuita) da Garage Games e inúmeras outras

xbox01 Enquanto o uso de programação baixo nível era complexo demais, o uso das engines poderia deixar o desenvolvedor limitado aos recursos oferecidos pela Engine.

Surge então o XNA, um framework que abstrai o uso do DirectX, permitindo o desenvolvimento de jogos com grandes recursos gráficos dentro de um ambiente gerenciado.

O XNA é um framework para ser utilizado com o .NET framework. Qualquer linguagem do .NET framework pode fazer o desenvolvimento de jogos para XNA, mas até hoje a ferramenta de desenvolvimento integrada ao XNA - o XNA Game Studio - era facilmente integrada apenas ao C# e dava mais trabalho para fazer o desenvolvimento com outras linguagens.

O XNA assumiu então uma posição entre as duas formas de desenvolvimento de games existentes : extremamente mais simples do que o desenvolvimento em baixo nível, mas sem as limitações das engines, já que possui todo o suporte do .NET framework.

Mas o XNA nem de longe deseja tomar o lugar das engines, pelo contrário. A intenção é simplificar o desenvolvimento de Engines e o desenvolvimento de jogos focando-se (óbvio) no XBOX 360.

Um exemplo disso é que quando o XNA ainda era versão beta, em 2006, a pioneira Garage Games anunciou a versão de sua Engine, TorqueX, desenvolvida sobre o XNA, demonstrando assim que o XNA seria a base para a criação de muitas engines

O XNA Game Studio desenvolve jogos para PC e XBOX. Porém para que o desenvolvimento seja feito para o XBOX é necessário uma assinatura do XNA Creators Club, que pode ser anual ou semestral.

Afinal, o que tem de novo no XNA Game Studio 2.0 que acabou de ser disponibilizado em versão beta ?

Suporte a todas as versões do Visual Studio

Como citei antes, a versão anterior se prendia ao C#, e não só ao C#, mas ao C# Express. Agora o Game Studio suporta todas as versões do Visual Studio

Integração com Game Services

A aplicação pode ser integrada com as informações de Game Cards do XBox e todas as informações possíveis do usuário do jogo

XNA Game Studio Device Connect Center

Um novo recurso ligado ao XNA Game Studio para a realização da conexão com o XBOX, que ficou muito mais simples na versão 2.0

Upgrade Wizard de projeto

Necessário para as migrações de versão, nem é uma "vantagem", tinha que vir e pronto.

Conversor entre plataformas

Ferramenta de conversão de jogos entre PC e XBOX (para jogos criados no XNA Game Studio, ok ?)

Integração com os Game Content Projects

O projeto do jogo em si agora é bem mais integrado aos projetos de game content (trilha sonora, personagens, etc)

Update (by Galileu Vieira) : Recursos para jogo em rede

O XNA Framework agora suporta trabalho em rede, ou seja, criação de jogos multiplayer permitindo que jogadores em diferentes máquinas possam jogar em conjunto ou competir entre si.

Sendo que isso tudo é só o inicio. Você podem ver mais detalhes no SharpGames e no XNA Creators Club

Para incentivar o estudo do XNA e o surgimento de novos profissionais para a área de jogos, que é uma área muito carente, a Microsoft criou o XNA Game Challenge. Uma competição de desenvolvimento de jogos que passou a ser realizada anualmente pela Microsoft Brasil.

O primeiro prêmio da XNA Game Challenge é o ingresso e viagem para um congresso sobre desenvolvimento de jogos. Legal, não seria nada demais, se não fosse pelo pequeno detalhe, que passa despercebido, de que o congresso acontece dentro de um navio que realiza um cruzeiro para diferentes pontos do mundo durante a duração do congresso. Ano passado foi no Caribe, este ano sairá de Miami com destino a Port Key e Cozumel.37

Este ai na foto é André Furtado. Pernambucano, estudante da UFPE, André Furtado criou uma célula acadêmica para estudar a tecnologia .NET. Estudou. Ganhou duas vezes a ImagineCup (Japão e Coréia - competição anual para estudantes, feita pela Microsoft), criou uma metodologia de desenvolvimento nacional, como uma opção ao RUP e ao MSF, sendo uma simplificação deste último, chamada Pro.NET, fez uma tese de mestrado sobre como construir o cenário de um jogo utilizando a tecnologia DSL que existe no Visual Studio (e que ficou ainda melhor no VS .NET 2008), apresentou a tese embaixo do gelo, em uma faculdade de Moscou, ganhou a I XNA Game Challenge da Microsoft (coisa simples, ao pedirem para melhorar um jogo, adicionou reconhecimento de voz), o que gerou a foto abaixo, no cruzeiro ao Caribe, até que finalmente a Microsoft resolveu o problema : Contratou ele para trabalhar na MS Corp, lá de fora, então agora ele não pode mais competir.

As imagens abaixo são da ferramenta de criação de jogos SharpLudus, criada por André Furtado. Observem como a ferramenta funciona dentro do Visual Studio (o que só é possível ver na primeira imagem) e funciona graficamente, gerando o código a partir do desenho gráfico realizado. André está fazendo a tese de doutorado neste momento, que consiste em portar o SharpLudus para que a geração de código seja em XNA.

 y1pwK3T3HHSQzF5hfZsc8XVxXuMVnaF0jd31CrDl6yS4nw7C_aO_9uiJqGYJr0gJNkPiHRnfACFh1Y

y1pwK3T3HHSQzFd_D65J20ytMhz7OyNXrg0yr_LAtDqTycuxXuYr_w7JCzG40BMj2VO5Ib7XjIoIqg

Abaixo, vídeos da apresentação de um jogo criado por ele com reconhecimento de voz. Uma pena que o vídeo não permita ver com perfeição a tela do jogo, mas já dá uma idéia (o 2o vídeo encontra-se melhor) :

 

 

 

Para deixar vocês morrendo de raiva inveja motivados, antes dos links deixo aqui algumas fotos selecionadas de Cozumel, onde o ganhador da XNA Challenge estará em pouco tempo. Lanço um desafio interessante : Se o ganhador tiver conhecido a XNA Challenge aqui no MeioBit, que tal tirar uma dessas lindas fotos com um cartaz do MeioBit em mãos (Tem prêmio ? Não sei, só os chefes (oi, Leo!) podem decidir) ?

cozumel cozumel-cristo tbb-cozumel02-762859 estado_quintana_roo__cozumel_titulo cozumelscubadiving cozumelscubadiving2

Acho que já está bom, não podemos deixar que ninguém se motive em excesso. Abaixo, agradecimentos, referências e links que serão úteis, além de uma dica final...

Agradecimentos ao Juliano, por eu ter visto a notícia no blog dele, e ao Murilo, criador do SharpGames e cujo post no SharpGames me ajudou a montar estas informações.

Para detalhes técnicos do funcionamento do XNA vocês podem conferir estes artigos e links :

Ambos os artigos foram escritos ainda na versão beta e o código precisará de adaptação, mas já dão uma boa demonstração de como tudo funciona.

Update (by André Furtado) :

- XNA Workshop 2.2

http://www.sharpgames.net/Downloads/XNA+Workshop+2+2+por+AFurtado.xna

- Webcast XNA, agosto/2007

http://www.sharpgames.net/Downloads/Webcast+XNA+de+AFurtado+-+agosto+2007.xna

- Blog sobre engenharia de software aplicada a games e XNA

http://www.afurtado.net 

Por fim, para encerrar, não podia deixar de tocar neste assunto. Existe uma frase, muito utilizada atualmente, que por si só da uma noção dos planos para o Midia Center e XBOX. Já vi isso sendo mencionado não só em eventos internacionais como eventos nacionais. A frase é (copia literal) "mudando o paradigma teclado + monitor para o paradigma TV + controle remoto"

Vejam mais sobre isso no anuncio do Partners Day e no link mais acima que contém o material das palestras.

0

PhilSouza's picture

Caramba Dennes, quanto link repetido, chega a dar nervoso rapaz. Isso é alguma coisa automática do editor ou você que teve todo esse trabalho? Melhor colocar no final do post uma lista de links, fica a sugestão.

http://www.mundovoip.org/

Dennes's picture

Oi, Phil !

É, tive esse trabalho. A idéia foi, nos mesmos termos técnicos linkar os mesmos sites de suas definições/fontes de informações, para que quem não conhece algo possa pesquisar.

Tá ficando ruim, é ? Vou ter que repensar isso...

[]'s

---------------------
CidadaoCarioca
BufaloInfo

Tonny's picture

Engraçado como seus quase posts sempre falam sobre tecnologia MS. Não parece ser só coincidencia (oh, como sou ingenuo!). acho que falta um comentarista pro software livre, pra que o meio bit seja mais abrangente. O mundo Apple tah muito bem coberto pela Fabi, com um estilo que se adapta ao estilo mais cool da apple. E vc tah cobrindo bem a MS, posts informativos (um pouco fanboys demais, meio propaganda, mas tah melhorando, algumas críticas realistas tão surgindo e são muito bem vindas). Falta alguem pra falar do linux com mais frequencia, um "especialista" por assim dizer, como vc é da MS, a Fabi da Apple, o Cardoso da blogosfera, o Dori dos games, falta alguem do mundo Linux.

Dennes's picture

Oi, Tonny !

Os posts são sobre tecnologias MS porque a tecnologia MS é minha especialidade.

Você não vai me ver deixando de assumir algum ponto errado na tecnologia MS por simples fanboyismo. Por outro lado, existem inúmeros pontos na tecnologia MS que alguns acham que estão errados por puro desconhecimento...

Mande seus artigos no link que existe aqui no meioBit para colaborar com todos, serão analisados, publicados, e... quem sabe ?

[]'s

---------------------
CidadaoCarioca
BufaloInfo

Marcellus Pereira's picture

Não é a primeira, nem será a última vez que falo: estamos abertos a profissionais certificados RedHat ( ou outra certificação livre ). Alguém?

Pra escrever tem que ter certificação?

Hum... estranho. Não sabía que a Fabiane tinha certificação pra escrever sobre o mundo Mac, nem o Dori pra falar de Games.

Tem muita gente, com muito blog bom em português, escrevendo sobre Linux. O MeioBit podería ser proativo nesse sentido, e convidar alguém para escrever, ao invés de esperar que pessoas se candidatem - só uma sugestão. =)

P.S.: Não quis desmerecer a Fabiane e do Dori com o que falei, muito pelo contrário. O Senhor Baboo tem título de MVP, e é dono de um dos sítes mais lamentáveis em língua portuguesa.

davidkwast's picture

Eu posso começar a escrever sobre GNU, Linux, Python e ferramentas multiplataforma (Escritas em C, C++, Python...). Como podem ver em meu blog, ando meio preguiçoso.

Tenho um pouco de experiência com C++/QT4, compilação do Kernel Linux para x86 e Amd64, distribuição GentooLinux, Python, tenho um Macbook e estou num projeto com software embarcado.

PS: Não sei nada de MS!!! E muito pouco de Java. :)

davidkwast.blogspot.com

awregan's picture

O mundo linux tem pouca identidade, falta um patrono do linux =/

Luiz Luiz's picture

Awregan disse:
"O mundo linux tem pouca identidade, falta um patrono do linux "

Linus? (ou Stallman :)
___________________________________
"Nós poderíamos ser muito melhores se não quiséssemos ser tão bons." (Sigmund Freud)

Tonny's picture

Sabe inclusive, lendo seu post sobre o VS 2008 tive vontade de aprender vb, tinha pensado nisso mais depois deixei pra lá, seu post me deu vontade denovo de conhecer essa plataforma.

Dennes's picture

Oi, Tonny !

Muito legal, garanto que vai valer a pena !

Se você for estudante, de uma olhada nos vídeos em videos, vai achar bem interessante.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

Tonny's picture

Mas muito bom o post. Só uma coisa:

"O XNA Game Studio desenvolve jogos para PC e XBOX. Porém para que o desenvolvimento seja feito para o XBOX é necessário . Já a versão Professional permite o desenvolvimento e deployment para XBOX 360, mas existe uma aquisição especial : é feita uma assinatura que dá direito a participação em uma comunidade de desenvolvimento de jogos e a material específico sobre o desenvolvimento para XBOX."

Esse trecho tah confuso, reveja ele, tem uma frase sem nexo: "Porém para que o desenvolvimento seja feito para o XBOX é necessário." NEcessário o que? Imagino que seja uma licensa Professional, com a versão "comum" (gratuita?) só pode-se desenvover jogos pra PC, é isso?

Dennes's picture

Oi, Tony !

Foi mal, deixei este trecho escapar, mas já corrigi. É necessária uma assinatura semestral ou anual do XNA Creators Club.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

viniciusfs's picture

Em "Na era pré-XNA existiam apenas duas formas de fazer jogos", corrija para "Na era pré-XNA, para quem só conhece o que se passa debaixo do domínio microsoft.com, existiam apenas duas formas de fazer jogos".

Dennes's picture

Oi, Vinicius !

As duas formas citadas são o uso de API's (DirectX ou OpenGL) ou o uso de Engines.

Se você está informado sobre outra forma que não seja via API's do SO (qualquer que seja) ou Engines, por favor, explique e farei uma atualização do artigo.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

hamacker's picture

Analogo ao OpenGL é o Direct3D (nao o DX). Se bem que se for coer mosquitos OpenGL é apenas uma especificação com uma dezenas de bibliotecas para usa-la.
Analogo ao framework DirectX é o SDL (som, video, joy, etc...). Mas tem muitas outras tambem.

de restante tá muito bom, afinal é só uma pincelada rápida.

Dennes's picture

Oi, Hamacker !

Interessante a comparação do SDL com DirectX, porque outras pessoas aqui nos comentários compararam o SDL mais com o XNA...

Acho que tirar essa dúvida e chegar a uma conclusão comum vai gerar uma informação útil...

[]'s

---------------------
CidadaoCarioca
BufaloInfo

DiegoCBarboza's picture

Acho que nesse ponto o hamacker está comparando as coisas do ponto de vista do programador. O DirectX, o XNA e a SDL seriam equivalentes deste ponto de vista, uma vez que todos os três dão acesso a funções de vídeo, audio, teclado, mouse...

Porém, tanto o XNA quanto a SDL não acessam o hardware diretamente, usando o DirectX, OpenGL ou outras APIs pra isso.

Por fim, em termos de camada de software, o Direct3D e o OpenGL estão lado a lado, visto que ambos são uma camada de acesso direto ao hardware.

Não sei se ficou bem claro a explicação, mas é mais ou menos isso.

-------------------------------------------------------
Diesoft Games

hamacker's picture

SDL é um conjunto de bibliotecas que serve tanto para desenvolver quanto o rodar o aplicativo. Para usar a analogia de forma mais coerente, existem o SDL runtime (DX) e existe SDL SDK (só para programadores).

Dennes's picture

Oi, Hamacker !

Perfeitamente, mas não vai ao hardware, acessa-o via OpenGL.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

viniciusfs's picture

E outra, o TorqueX não existia antes do XNA porque ele é baseado no XNA. Acho que esse artigo não vai valer a pena ler.

Dennes's picture

Oi, Vinicius !

Trata-se de uma referência genérica sobre Engines, especialmente porque o Torque existe há bem mais tempo que o TorqueX, exatamente pelo motivo que você citou.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

viniciusfs's picture

Não valeu mesmo.

magno's picture

Os seus artigos estão bem legais. O chato é que cada vez que eu leio um artigo seu, dá mais medo estudar .NET ante à quantidade enorme do que há para ser aprendido.

Realmente uma coisa que faltava no XNA era o uso nas outras versões do Visual Studio.

Não ligue para os que acham ruim você ter se especializado mais em aplicativos Microsoft. Como dizia um de meus professores:

"Saiba tudo que há para saber na sua área e tenha um caderno com os telefones de quem sabe o resto."

Dennes's picture

Oi. Magno !

O volume de informações realmente é muito grande, mas de pouquinho em pouquinho chega-se lá!

Se você for estudante, veja estes videos e divulgue em sua faculdade.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

magno's picture

Valeu Dennes, vou divulgar para alguns amigos meus, uma vez que já terminei a faculdade e lá todo mundo tinha horror de programação.

O problema maior é a falta de tempo, eu desenvolvo aplicativos especialistas, onde o que mais conta são os cálculos em si e não a linguagem, plataforma ou estabilidade. Desse modo fica mais difícil me aprofundar no assunto, já que eles não são da minha alçada.

carloshp's picture

"Na era pré-XNA existiam apenas duas formas de fazer jogos :

- Baixo nível, acessando direto APIs. Em ambiente windows, APIs do DirectX, em outros ambientes, OpenGL. Programação complexa feita em C++ ou outras linguagens de baixo nível"

Nada mais errado.

Em ambiente Windows, OpenGL é tão (ou mais) usado quanto Direct3D, até porque é uma API mais madura, estável e que permite o porte do jogo para outras plataformas. TODOS os jogos 3D da id Software são em OpenGL.

Além disso, existem API's multiplataformas gratuitas muito conhecidas e consagradas como o SDL (Simple DirectMedia Layer), Allegro e outras. Mas, como não saíram do Mundo Microsoft...

Além disso, a vasta maioria dos jogos é feita em C puro, não C++. E se falarmos em consoles ou mercado mobile, C++ nem é considerado como opção.

Por último, C++, "linguagem de baixo nível" ? Desde quando ?

---
Tecnologia deve ser o meio, não o fim.

magno's picture

Para quem programa em C#/VB .NET tem o Tao Framework, que é uma mão na roda para quem quer usar OpenGL no Windows.

P.S.: Eu odeio C++, mas "linguagem de baixo nível" foi um pouco exagerado.

Dennes's picture

Oi, Carlos !

O OpenGL disputava muito de igual para igual com o DirectX até a época do NT 4, que eu me lembre.

Porém o DirectX, em sua evolução, aproveitou bem melhor os recursos específicos de placas gráficas do que o OpenGL, mais genérico. Hoje o ambiente windows é fortemente focado em DirectX.

Bem, se SDL, Allegro e outras são API's realmente e não engines, posso fazer um Update e cita-las. Mas de que forma fazem o trabalho multi-plataforma ? São criadas em Java ?

Quanto ao uso do C puro, observe que escrevi claramente ali "e outras linguagens", isso resolve.

Quanto a definição do C++, compare-a com VB, C# e Java.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

viniciusfs's picture

O ambiente Windows é fortemente focado em DirectX porque ambos são da Microsoft. Você usar isso como exemplo da evolução do DX em relação ao OpenGL soa tolo.

As APIs citadas são apenas dois exemplos, existem MUITAS outras APIs/frameworks para desenvolvimento de jogos. As duas são multiplataforma porque são escritas em C mas Java também tem coisas legais nessa área.

Como OpenGL é maduro existem muitas soluções para desenvolvimento de jogos que usam ele por baixo dos panos. Uma pesquisa faria MUITO bem para seu artigo.

O XNA é uma boa ferramenta mas é novidade revolucionária apenas para quem só conhece o mundo Microsoft. A abstração que ele dá muitas outras bibliotecas e APIs também dão. Eu mesmo já experimentei algumas e não vi muita diferença do XNA para elas, inclusive achei o fato dele ser apenas para Windows um tanto quanto frustrante.

Essa propaganda toda de revolucionário que o XNA recebe rendeu um artigo no meu blog dedicado a games. No caso, o artigo surgiu depois que li sobre o XNA ser o YouTube dos jogos por isso é focado mais nesse tema mas faço argumentação sobre a utilidade do XNA e a semelhança com outras APIs por ai.

http://www.oitobits.net/arquivo/o-xna-nao-e-um-game-maker/

Dennes's picture

Oi, Vinicius !

"Você usar isso como exemplo da evolução do DX em relação ao OpenGL soa tolo."

Só tem um problema : Não escrevi isso. Onde achou tal afirmação ?

Escrevi, sim, que o directX evoluiu mais que o openGL no sentido do uso de recursos nativos do hardware.

Quanto ao seu artigo sobre o XNA, irei ler, depois comento...

[]'s

---------------------
CidadaoCarioca
BufaloInfo

viniciusfs's picture

"Porém o DirectX, em sua evolução, aproveitou bem melhor os recursos específicos de placas gráficas do que o OpenGL, mais genérico. Hoje o ambiente windows é fortemente focado em DirectX."

Então a segunda frase não tem nada a ver com a primeira? Você fala da evolução do DX, que ele aproveitou melhor os recursos das placas. Depois diz que o Windows é focado nele e não tem nenhuma ligação entre as duas frases. Porque ao ler a impressão que se tem é que o Windows ser focado no DX é um mérito pra ele.

Dennes's picture

Oi, Vinicius !

Você misturou um pouquinho a coisa, não ?

Veja sua reclamação inicial :

"Você usar isso como exemplo da evolução do DX em relação ao OpenGL soa tolo."

O trecho que você citou, em nenhum momento diz que o fato do ambiente windows ser focado em directX é uma evolução para o directX em relação ao OpenGL.

Diz sim, que o ambiente windows se focou em DirectX por este ter evoluido mais no sentido de aproveitar o hardware do que o openGL, e neste caso é uma vantagem para o ambiente windows : Escolheu-se o que dará melhor poder de processamento.

Claro, você pode não concordar com isso, mas nesse caso gostaria que fornecesse material, links comparativos openGL e DirectX poderiam ser produtivos.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

Dennes's picture

Oi, Vinicius !

No seu artigo, você reclamou de não ser destacado o fato do XNA não ser uma engine de criação de jogos.

Ora, foi exatamente isso que eu afirmei em meu artigo :

"O XNA assumiu então uma posição entre as duas formas de desenvolvimento de games existentes : extremamente mais simples do que o desenvolvimento em baixo nível, mas sem as limitações das engines, já que possui todo o suporte do .NET framework. "

Exatamente o que afirmo em palestras e recomendo a palestrantes afirmarem : XNA não é uma engine para criação de jogos, o XNA fez um meio caminho entre a programação de baixo nível e as Engines, sendo que isso faz com que ele seja uma grande novidade.

Alguns aqui nos comentários sugeriram que já existem outras coisas equivalentes. Citaram SDL, mas aqui nos comentários mesmo um outro participante do MeioBit descartou isso, afirmando ser a SDL mais equivalente ao DirectX.

Citaram a Allegro, esta não pesquisei ainda, mas vou pesquisar.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

carloshp's picture

"O OpenGL disputava muito de igual para igual com o DirectX até a época do NT 4, que eu me lembre.
Porém o DirectX, em sua evolução, aproveitou bem melhor os recursos específicos de placas gráficas do que o OpenGL, mais genérico. Hoje o ambiente windows é fortemente focado em DirectX."

OpenGL nao disputava nada com DirectX na epoca do NT4, simplesmente porque NINGUÉM sequer considerava DirectX algo USÁVEL na prática. Era uma API mal projetada, mal documentada, de baixa performance (para se ter idéia, só passou a tirar proveito de aceleração 3D por hardware a partir da versão 7) e que mudava totalmente a cada release, levando os incautos que apostavam nela à loucura. John Carmack, lider técnico e dono da id Software (Wolfenstein 3D, Doom, Quake, etc) escreveu um célebre artigo rebaixando o DirectX em 2001 à sombra da mosca do cocô do cavalo do bandido que fica parado atrás do vilão. De lá pra cá muita, muita coisa mudou, a API amadureceu, etc. Mas até mais ou menos 2004 (portanto, MUITO DEPOIS do Windows NT), OpenGL era *A* API 3D. E hoje ainda a maioria dos jogos a suporta, e um bom numero deles é feito exclusivamente para OpenGL (incluindo o próximo jogo da id, Rage).

"Bem, se SDL, Allegro e outras são API's realmente e não engines, posso fazer um Update e cita-las. Mas de que forma fazem o trabalho multi-plataforma ? São criadas em Java ?"

Não, são bibliotecas escritas em C (apesar de, por acaso, ambas terem bindings para Java, que além disso tem ) e suportadas em vários sistemas operacionais (DOS, Linux, Windows, etc) e vários ambientes de desenvolvimento (inclusive o Visual Studio). Sugiro uma visita aos respectivos sites: Allegro e SDL. Uma visitinha à página sobre o SDL na Wikipedia também pode ajudar a perceber o peso que esta biblioteca tem no mundo dos jogos e como ignorá-la é um pecado imperdoável num artigo sobre desenvolvimento de jogos.

Ahh, e já ia esquecendo: conhecer um pouquinho melhor a história do OpenGL (consórcio do qual a Microsoft faz parte, aliás) ajudaria também...

---
Tecnologia deve ser o meio, não o fim.

Dennes's picture

Oi, Carlos !

Interessante que você precisou buscar um artigo de 2001 para falar mal do DirectX. Tem algo mais recente ?

Quanto a essas bibliotecas em C, já que você as conhece, poderia escrever para o MeioBit sobre elas, comparando-as com o XNA ?

Se ficar bom, pode ser publicado...

[]'s

---------------------
CidadaoCarioca
BufaloInfo

carloshp's picture

"Interessante que você precisou buscar um artigo de 2001 para falar mal do DirectX. Tem algo mais recente ?"

Claro que tenho: Mark Rein, da Epic (da serie Unreal) comentando como a adoção do DirectX10 pelos desenvolvedores será lenta (se é que realmente vai acontecer) por causa dos consoles, ou este artigo técnico descrevendo como o DirectX10 tem uma performance pior que o 9 e oferece pouco em troca, ou Gabe Newell, da Valve (da série Half Life) dizendo com todas as letras: "DirectX10 restrito ao Vista foi um erro" (o detalhe mais cômico é que Gabe é ex-empregado da Microsoft, de onde saiu para criar a Valve). Ahh, e tem ainda a melhor de todas, Martin Slater, que desenvolveu um dos poucos títulos usando DirectX10 (BioShock), e que eu faço questão de transcrever um trecho do comentário dele aqui pois resume bem o que se esperar:

"[DirectX 10] offers your gameplay nothing ... DirectX 10, probably for the next three, four, five years is not important to you. Microsoft are going to tell you everything under the sun differently. Everybody under the sun is going
to tell you differently."

Em resumo, o que você está anunciando como a melhor coisa depois do pão de forma para desenvolvimento de jogos na verdade não está tão bem cotado assim pelos caras realmente bons. Mas, afinal de contas, o que eles pensam que sabem sobre isso mais do que a Microsoft, não é ?

"Quanto a essas bibliotecas em C, já que você as conhece, poderia escrever para o MeioBit sobre elas, comparando-as com o XNA ?"

Acho que você já sabe qual seria o resultado dessa comparação, né ? Não, obrigado.

---
Tecnologia deve ser o meio, não o fim.

Dennes's picture

Oi, Carlos !

Não existe o menor sentido em um artigo sobre XNA você postar links criticando o DirectX 10. O XNA está muito longe de ser restrito ao DirectX 10, portanto você mudou completamente de assunto.

Dentro do tópico do artigo seria válida sim uma comparação entre o OpenGL e Direct3d, tal como esta comparação

Alguns trechos importantes :

"Some former critics of Direct3D now acknowledge that Direct3D is at least comparable to OpenGL in terms of capabilities and ease of use"

"In January 2007, John Carmack said that "...DX9 is really quite a good API level. Even with the D3D side of things, where I know I have a long history of people thinking I’m antagonistic against it...""

"In general, Direct3D is designed to be a 3D hardware interface. The feature set of Direct3D is derived from the feature set of what hardware provides. OpenGL, on the other hand, is designed to be a 3D rendering system that may be hardware accelerated. These two APIs are fundamentally designed under two separate modes of thought. The fact that the two APIs have become so similar in functionality shows how well hardware is converging into user functionality."

Este ponto mostra a informação que citei do Direct3D aproveitar melhor os recursos de hardware que o OpenGL. Mas também mostra que informações antigas não podem ser muito levadas em consideração, na área de informática as mudanças são muito rápidas.

"Even so, there are functional differences in how the two APIs work. Direct3D expects the application to manage hardware resources; OpenGL makes the implementation do it. This tradeoff for OpenGL decreases difficulty in developing for the API, while at the same time increasing the complexity of creating an implementation (or driver) that performs well. With Direct3D, the developer must manage hardware resources independently - however, the implementation is simpler, and developers have the flexibility to allocate resources in the most efficient way possible for their application."

"According to a Gamasutra article (registration required), the aforementioned John Carmack considered switching from OpenGL to Direct3D because of the contrived use of P-buffers"

[]'s

---------------------
CidadaoCarioca
BufaloInfo

hamacker's picture

Dennes disse :
O OpenGL disputava muito de igual para igual com o DirectX até a época do NT 4, que eu me lembre.

Porém o DirectX, em sua evolução, aproveitou bem melhor os recursos específicos de placas gráficas do que o OpenGL, mais genérico. Hoje o ambiente windows é fortemente focado em DirectX.
----
Nao concordo.
OpenGL é uma especificacao da industria para a industria.
Jogos usando OpenGL é que é uma novidade recente, depois do sucesso da GLIDE ficou provado que este é um mercado promissor, daí então veio o DX com foco em entretenimento.

OpenGL tem que atender a industria de games, mas nao pode esquecer de dispositivo portateis e nem pesadas maquinas de simulação.

O DX10 (XNA) nao tem intenção de invadir outras plataformas nao-Microsoft e portanto nao tem como afirmar "DirectX, em sua evolução,aproveitou bem melhor os recursos específicos de placas gráficas do que o OpenGL", especialmente, repito, porque quem cria o hardware cria tambem o OpenGL e quem cria o XNA nao cria o hardware.

Dennes's picture

Oi, Hamacker !

Não concorda com qual parte ?

Se não concorda que aproveitar melhor o hardware seja uma vantagem, então, como dizem, concordamos em discordar.

Mas se não concorda que o DirectX faça isso, então procurarei documentos técnicos sobre o assunto... se puder indicar alguns também, será produtivo...

[]'s

---------------------
CidadaoCarioca
BufaloInfo

hamacker's picture

(...)nao tem como afirmar "DirectX, em sua evolução,aproveitou bem melhor os recursos específicos de placas gráficas do que o OpenGL"(...)

Dennes's picture

Oi, Hamacker !

Veja este link : Comparação

Conforme consta, isso de certa forma aconteceu, apesar de não ser o estado atual de ambas.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

hamacker's picture

Lí esse artigo da wikipedia antes, mas fui ler novamente, mudou um pouquinho desde a ultima leitura, mas acho que o artigo não favoreceu DX tanto como voce diz :
'Competition between the two rose as each game developers would choose either one or the other. Most of the time, the developers would favor Direct3D because of its widespread use. However, in some cases it was not extremely reliable, such as when the accelerator crashed, the whole computer would crash in some cases, because some operating systems rely on the accelerator entirely.'

Concordo que o DX é uma framework completa, mas não concordo com ela ser superior, eu até disse isso aqui uma vez, a Microsoft se preocupa com o desenvolvimento apenas voltado para entretenimento em suas plataformas, o que torna agradável para um programador que irá usar uma das suas plataformas.A microsoft mima os desenvolvedores, trazendo documentacao abundante e ouvindo deles as queixas. É muito diferente do consorcio em torno do OpenGL (GL) já que os fabricantes que ditam a GL se preocupam mais genericamente e atendem especificamente a industria (especialmemte de hardware), obviamente uma HP quando pensar num jogo para win vai pensar muito mais em DX, mas quando a mesma empresa que tambem faz equipamentos médicos nao vai abrir mao da GL nos seus softwares embutidos. É dificil voce ver uma industria da aeronáutica usar DX em suas simulações, idem para NASA e tantos outros que não sejam voltados ao ramo de entrenimento.

No que se refere somente a desenvolvimento de jogos, não acho que alguém vai criar uma aplicação em C e usar GL nativamente, a GL é complexa e pesada porque não é especifica para games, ao exemplo do que ocorre com o DX vao preferir usar GL atraves de uma das milhares de frameworks existentes. Multiplataforma ainda é o caminho, se a MS nao soltar um DX para outros SOs e especificacao de hardwares, a dominação no mundo windows sofrerá perdas porque hoje há no minimo 3 plataformas de SO (Windows, Mac e Linux) e 3 plataformas de games (XBOX, PS, WII) e contratos de exclusividade estao cada vez mais escassos. Basta ver que a ID Software vende seu engine para as concorrentes poderem rodar seus games em todas as plataformas.

Quando hoje se fala em DX10 e seus super-ultra-recursos, acho que existe mais sentimento do que realidade. Quando ví HELO3 (DX9), achei que tinha visto o que era super, mas quando ví a animação do jogo Uncharted para PS3 (provavelmente alguma framework usando GL) rapidamente HELO3 foi superado.

E a briga continua.

Dennes's picture

Oi, Hamacker !

Quando você fala "favoreceu o DX", isso é um pouco radical, pois essa não é nem a minha intenção nem do artigo.

Inicialmente citei a informação que possuia : DX aproveita melhor o hardware.

Mas com o link do artigo, ficou claro no artigo que apesar do DX ter seguido esta linha de construção, enquanto que o OpenGL seguiu uma filosofia de construção completamente diferente, os dois hoje conseguiram chegar no mesmo lugar e, segundo o artigo, entre vantagens e desvantagens os 2 te uma equivalência muito grande.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

carloshp's picture

Basta dizer que dependendo do fabricante de hardware, uma ou outra API tem melhor performance. Tipicamente, produtos da NVidia tem melhor performance com OpenGL, enquanto os drivers da ATI costumam ser mais rápidos para DirectX. Como na prática os produtos da NVidia vem liderando o mercado de graficos 3D há alguns anos (tanto em venda quanto em performance), diminuir o papel do OpenGL em prol do DirectX no mínimo tira um pouco da credibilidade do artigo.

---
Tecnologia deve ser o meio, não o fim.

hamacker's picture

Acho que não.
Se voce olhar a especificacao das ATIs vai notar que elas possuem muito mais hardware (qualidade) do que as NVIDIA para fazer a mesma coisa.

Não é o hardware e nem o fato de promover DX/openGL, mas eu acho que a questão é os drivers.

É só dá uma olhadinha no historico: a ATI recentemente renunciou dar suporte a placas mais antigas (que nem eram tao antigas assim) talvez para começar uma nova geração de drivers com especificacao de hardwares mais recentes, falhas graves de segurança no Vista começaram com os drivers da ATI que teve que correr para corrigir, liberou as especificacoes tecnicas de suas placas para atrair mao de obra opensource e voltou atras e deu suporte ao AIGLX para a turma do pinguim. Ou seja ela tem se movimentado muito na direção dos drivers.

O problema da ATI é com drivers...

carloshp's picture

O problema da ATI sempre foram os drivers. De fato alguns modelos realmente ganham da NVidia (mas eu não vou nem entrar no mérito de discutir qual é melhor ou pior, porque isso já é outra guerra santa :) ), só que geralmente o suporte a OpenGL tem problemas de performance quando não está simplesmente quebrado, e leva algumas versões para acertar. Neste aspecto a NVidia tem melhor histórico.

---
Tecnologia deve ser o meio, não o fim.

DiegoCBarboza's picture

hamacker, nem o XNA é DX10 nem o contrário, não confunda as coisas.

-------------------------------------------------------
Diesoft Games

davidkwast's picture

Na boa, parei aqui...

"""Bem, se SDL, Allegro e outras são API's realmente e não engines, posso fazer um Update e cita-las. Mas de que forma fazem o trabalho multi-plataforma ? São criadas em Java ?"""

Pra mim, isso mostra que vc desconhece qualquer coisa fora do mundo MS e um pouco de Java... Então realmente nem vejo como pode rolar uma boa discussão, já que muitos aqui não devem conhecer a MS muito bem. Pelo menos eu não conheço, por isso não falo muito, mas quando vejo umas discussões dessas...

Será que o Dennes não é o Cardoso disfarçado? Olha só o sucesso dos posts dele. Heheheh. Do ponto de vista de um blog, seus posts são muito bons. Mas o conteúdo é um pouco parcial demais, hehehe

davidkwast.blogspot.com

Tonny's picture

Compara c e c++ com VB, python e ruby. Alto ou baixo nível, como ele usou, é num sentido relativo.

carloshp's picture

Tonny,

Linguagem de baixo nível é o termo que se usa para designar linguagens sem mecanismos de abstração do ambiente (principalmente hardware). Assembly e linguagem de máquina são linguagens de baixo nível. C++ é uma linguagem de alto nível, pois você pode expandi-la com bibliotecas que fornecem camadas de abstração sobre as particularidades do ambiente, facilitando o porte para outras plataformas. Logo, a definição do Dennes não foi correta.

---
Tecnologia deve ser o meio, não o fim.

Dennes's picture

Oi, Carlos !

Acadêmicamente, o artigo nem ao menos teve a pretensão de fazer as classificações de forma estritamente perfeita.

Que tal você nos explicar essas classificações, incluido as classificações que diferenciam C++ e VB.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

carloshp's picture

A classificação de alto ou baixo nível que eu mencionei não é acadêmica, é o entendimento comum entre os profissionais da área.
---
Tecnologia deve ser o meio, não o fim.

Dennes's picture

Oi, Carlos !

Concordaremos em discordar então : O entendimento comum entre os profissionais da área é que alto ou baixo nível é relativo a quais linguagens e ambientes você está comparando.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

lucascavalcante's picture

Opa Dennes!

Gosto dos seus posts (apesar de sempre dar uma preguiça de ler, ô homi pra escrever), a única coisa chata é que sempre encontramos fanboys o criticando ou criticando a microsoft... sem conhecimento de causa.

Se essa é sua especialidade, todos tem que respeitar... mas parece que existem certos tipos de seres que não entendem isso.

Se não gostam da Microsoft, simplesmente não leiam os posts do Dennes. Ao invés de comentários que não agreguem em nada à discussão.

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

A respeito do XNA, tens algum livro bom para indicar?

E ouvi dizer que os pré-requisitos da máquina para rodar o XNA não são poucos. Poderia esclarecer melhor esses requisitos?

Abraços

---
Hoje não estou afim de assinar...

Dennes's picture

Oi, Lucas !

Indicar, indicar mesmo, não, não analisei os livros. Mas em uma olhada rápida montei uma lista dos livros de XNA que mais me atrairam, tem um link para isso no fim do artigo, entre os links. Observe que em geral os livros da Wrox e da Apress são bem legais.

Rodei a versão beta do XNA no notebook bem caidinho que eu tinha, que ganhei quando o Brasil ganhou o penta, e rodava bem, sem problemas de performance, 256 de RAM, na época.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

Wallacy's picture

Legal Dennis, gostei também, não tenho nenhuma relação com tecnologia MS, mais vou ler, achei algumas informações bem interessantes...

lfiore01's picture

Ótimo artigo Dennes!!!

Se meu DDA me deixasse eu me concentrar bem para programar, já
estaria brincando um pouquino com XNA.

Visit my blog -> www.leandrofiore.eti.br

Consultoria em TI para pequenas empresasa -> www.aninfo.com.br

NewUser's picture

Eu conheço XNA há um tempo(instalei o visual studio express por isso).

Não gostei muito do XNA, mas não digo que é ruim, me compliquei no C Sharp, não consegui iniciar os jogos pq sempre tinha um erro de carga de arquivos, compilação de arquivos .x ... mas não me dediquei muito à leitura da documentação. Eu tive melhores experiências com OpenGL, acho que não vou conseguir fazer um jogo que preste com OpenGL, mas vou continuar com OGL mesmo, pois quero mais do que fazer jogos é entender de CG. Tb quero tentar um Managed DirectX com C++.

Mas como sempre tenho que discordar do Dennes:
* C e C++ não são linguagens de baixo nível quando se fala em desenvolvimento de Games onde até assembly às vezes é usado.
* Totalmente fanboy quando fala em era pré-XNA(A EA tá usando XNA para fazer os jogos revolucionários?!)
* Vc perguntou se SDL e feita em Java? Cara, tem pessoas que conseguem desenvolver coisas portáveis sem máquina virtual. A SDL usa OpenGL em sistemas não-Windows e DX em Windows. O OpenGl é tão portável que vai estar nos celulares com Android.

Dennes's picture

Oi, NewUser !

Ok, você está comparando o XNA com o OpenGL. A diferença do XNA neste caso é que o XNA mais se assemelha ao Managed DirectX do que ao OpenGL. Programar diretamente com OpenGL vai fazer com que sua programação seja de mais baixo nível, quero dizer, chamando muitas API's bem mais complexas que no caso do XNA.

Quanto ao Managed DirectX, já esbarrei várias vezes com uma FAQ, no site sobre DirectX da Microsoft, de que ele não terá continuidade, a idéia é que seja utilizado o XNA, que com a possibilidade de uso em qualquer edição do Visual Studio agora pode ser programado com C++

"* C e C++ não são linguagens de baixo nível quando se fala em desenvolvimento de Games onde até assembly às vezes é usado."

Claro, concordo com você. Valem as regras de Einstein, tudo é relativo. Se você compara C e C++ com Assembly eles são de alto nível, se compara com VB, são de baixo nível.

Mas porque até assembly ainda é utilizado ? Com a chegada do XNA, C, C++ e Assembly passam para 2o plano (pelo menos no caso do XBOX), já que surge a possibilidade do desenvolvimento ser feito em linguagens de alto nível para .NET.

Só que outras pessoas aqui mesmo afirmaram que o XNA não é novidade, que existem outros frameworks de tão alto nível quanto. Então queria que você me desse sua opinião : Se existiam outros frameworks de tão alto nível quanto, por que C, C++ e Assembly continuam sendo utilizados ?

"* Totalmente fanboy quando fala em era pré-XNA(A EA tá usando XNA para fazer os jogos revolucionários?!)"

Linguagens de baixo nível, como C, C++ e Assembly. Se isso está no texto, por que me classificar como fanboy ?

"Vc perguntou se SDL e feita em Java? Cara, tem pessoas que conseguem desenvolver coisas portáveis sem máquina virtual. A SDL usa OpenGL em sistemas não-Windows e DX em Windows. O OpenGl é tão portável que vai estar nos celulares com Android."

Se eu apresentasse uma proposta assim (quero dizer, com essa arquitetura, essa "forma" de portabilidade) para um analista, diriam que eu estava sugerindo uma POG. Isso exige uma reescrita de um pedaço razoável do código, por isso a primeira possibilidade que levantei foi VM.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

carloshp's picture

" (...) 'Vc perguntou se SDL e feita em Java? Cara, tem pessoas que conseguem desenvolver coisas portáveis sem máquina virtual. A SDL usa OpenGL em sistemas não-Windows e DX em Windows. O OpenGl é tão portável que vai estar nos celulares com Android.'

Se eu apresentasse uma proposta assim (quero dizer, com essa arquitetura, essa "forma" de portabilidade) para um analista, diriam que eu estava sugerindo uma POG."

Mas que visão preconceituosa, hein ? Tá mais que na hora de rever seus conceitos e beber de outras fontes...

---
Tecnologia deve ser o meio, não o fim.

Dennes's picture

Oi, Carlos !

Não tem preconceito nenhum nisso... redija isso como uma proposta de arquitetura e apresente a um grupo de analistas, sem dizer que isso é da SDL... depois me conte o resultado...

[]'s

---------------------
CidadaoCarioca
BufaloInfo

carloshp's picture

Como não é preconceituoso ? Vamos à definição do próprio site do projeto:

" Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power."

SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. The code contains support for AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, and OS/2, but these are not officially supported.

SDL is written in C, but works with C++ natively, and has bindings to several other languages, including Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, and Smalltalk."

O que tem escrito aí que possa induzir a pensar em POG ? Porque sinceramente a impressão que me passa é justamente o contrário (e eu sou analista de sistemas).

---
Tecnologia deve ser o meio, não o fim.

Dennes's picture

Oi, Carlos !

Neste texto, absolutamente nada, Carlos, neste caso esqueça a questão de POG.

Mas no comentário original, um erro na definição "A SDL usa OpenGL em sistemas não-Windows e DX em Windows" Isso, se fosse verdade, seria muito perto de POG, senão a própria.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

NewUser's picture

Eu não estou comparando XNA com OpenGL, eu sei o propósito do XNA, do OpenGL e do DirectX mais puro(sem as camadas de abstração que as engines, APIs, Frameworks, o XNA implementam).

XNA é bom, mas claro que ainda tem empresas que vão preferir as engines que funcionam em PC, PS3, Wii e XBOX...

"Se eu apresentasse uma proposta assim (quero dizer, com essa arquitetura, essa "forma" de portabilidade) para um analista, diriam que eu estava sugerindo uma POG. Isso exige uma reescrita de um pedaço razoável do código, por isso a primeira possibilidade que levantei foi VM."

Não é POG não, se vc trabalhar com coisas relacionadas a Unix e sistemas Unix-Like em geral vc perceberá que existe portabilidade sem uma máquina virtual, é realmente essa tradição Unix que faz o Linux ser chato para muitos(O MAC OS X também está incluso nisso). A SDL roda em SOs que a gente nunca viu na vida. Ela não é tão baixo nível como vc pode pensar.

libsdl.org

"Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power."

SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. The code contains support for AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, and OS/2, but these are not officially supported.

SDL is written in C, but works with C++ natively, and has bindings to several other languages, including Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, and Smalltalk. "

Claro que eles reescrevem código, mas não de maneira POG, pois se não ela não funcionaria muito bem. Até mesmo o Java tem que ter código reescrito(constantes modificadas, camadas mais baixas...) para rodar em todas as plataformas em que ele é usado.

Veja por exemplo a biblioteca QT4 que funciona em Windows, Linux e MAC OS X.

Sobre o assembly, na verdade o assembly é usado em rotinas que são muito executadas e precisam de um alto desempenho(assembly inline), até o Delphi suporta assembly inline, dependendo do compilador C/C++ que esteja sendo usado, o assembly inline pode ser utilizado.

Dennes's picture

Oi, NewUser !

"XNA é bom, mas claro que ainda tem empresas que vão preferir as engines que funcionam em PC, PS3, Wii e XBOX..."

Não discuto isso, em momento algum discuto isso... li em algum lugar muito recentemente sobre que o sonho das empresas de desenvolvimento de jogos seria conseguir uma padronização para os consoles, reduzindo assim o custo de criação dos jogos...

Poderia falar um pouco mais sobre as engines que conseguem esse feito, de desenvolver para vários ambientes ? Algo sobre como conseguem...

"vc perceberá que existe portabilidade sem uma máquina virtual, é realmente essa tradição Unix"

Não quis chamar a portabilidade de POG, de forma alguma. Mas a forma como foi descrita sua implementação, se fosse aplicada a qualquer outro sistema facilmete seria confundida com POG...

Se bem que, se bem modelado, com um bom pattern de providers, ou algo assim...

"Claro que eles reescrevem código, mas não de maneira POG"

O trecho que você copiou ai já esclareceu tudo. Comentários anteriores falaram que em Windows usava directX e em outros ambientes OpenGL. Isso seria escrever um volume muito grande de código. Mas o trecho que você copiou deixa claro que usa OpenGL, não directX.

Então apaguem esta história de POG, mas não misturem SDL com DirectX como em um comentário anterior...

[]'s

---------------------
CidadaoCarioca
BufaloInfo

TheDarkMaster's picture

Não é mais correto remodelar o DirectX do que jogar uma camada de aplicação (o XNA) encima para traduzir as instruções complexas em versões mais simples?

Simplicar pessoal, simplificar. =P

viniciusfs's picture

Não, porque o DirectX tem um propósito, é uma API para aplicações multimídia, ele cuida de dispositivos de entrada, vídeo, audio, etc. O XNA usa tudo isso do DirectX mas é voltada para criação de jogos especificamente.

Até a comparação DX e OpenGL é falha porque eles tem objetivos diferentes. O certo seria compara o Direct3D com OpenGL. Se é que ainda chama Direct3D a parte que cuida de hardware g?afico 3D no DX.

hamacker's picture

Tá meio estranho alguns comentários, só para saber :
O framework XNA não é o atual DirectX 10 SDK com outro nome e o Game Studio a plataforma ambiente para desenvolver tais jogos em C# ?

Sei lá, já estou ficando confuso aí com tantos comentários.

Dennes's picture

Oi, Hamacker !

Não, não é isso não e este é o ponto por causa do qual tratei no artigo o XNA como inovação.

DirectX, Direct3D, OpenGL, são API's.

XNA é um framework gerenciado que utiliza o DirectX (não precisa ser o 10) para permitir a construção de jogos. A abstração realizada, dispensando o desenvolvedor de conhecer todos os detalhes das API's, é a inovação.

TorqueX, por outro lado, é uma engine. Com um nível de abstração muito maior do que o XNA, mas por isso mesmo arriscando-se a ter limitações.

O XNA, estando no meio do caminho, torna um pouquinho mais popular a criação de jogos, sem porém ser uma engine, ao mesmo tempo que permite a criação de engines mais poderosas, como o próprio TorqueX que foi baseado nele.

Game Studio é a ferramenta de desenvolvimento devidamente construida para o XNA, sendo que a linguagem utilizada pode ser qualquer uma suportada pelo framework .NET.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

NewUser's picture

"O framework XNA não é o atual DirectX 10 SDK com outro nome e o Game Studio a plataforma ambiente para desenvolver tais jogos em C# ?"

Não, o XNA é outra coisa, o Dennes te explica isso melhor.

Olha aí Dennes:
http://www.gamedev.net/reference/programming/features/dx9sdl/

E de qualquer forma a SDL tem que usar apis diferentes para iniciar as janelas nas diferentes plataformas, muitas coisas mudam de um ambiente para outro.

"Poderia falar um pouco mais sobre as engines que conseguem esse feito, de desenvolver para vários ambientes ? Algo sobre como conseguem..."

Simples: usam C/C++ na maioria das vezes e escrevem o código para todas as plataformas no mesmo código, na hora de compilar vc "diz" ao compilador para qual plataforma compilar, como existem #ifdef no código que guiam o compilador em sua tarefa, o binário sai funcionando para aquela plataforma.
É a chamada compilação condicional. Essa é a técnica que eu conheço, devem existir várias outras...

http://developer.apple.com/documentation/DeveloperTools/gcc-4.0.1/cpp/Conditional-Syntax.html
http://developer.apple.com/documentation/DeveloperTools/gcc-4.0.1/cpp/System_002dspecific-Predefined-Macros.html

davidkwast's picture

Isso mesmo, acredito que muitos projetos são baseados em frameworks e libs que tratam de selecinar as LIBS do SO que é o target e o CORE do programa somente trata de usar funções e objetos dessas LIBS e Frameworks. Quem já programou em QT, GTK, etc deve ter passado por isso, é só não usar uma LIB específica do SO que vc está que seu código rodará em todas as plataformas de seu Framework/Lib sem alterações, somente acertando a compilação.

Pra quem não sabe, o Skype e Google Earth são feitos em QT4. E o site da Trolltech é feito em Python (esssa ultima eu nem sei pq escrevi, só pra fazer graça!!! Já pensou se o próprio site fosse escrito em C++/QT???)

"""Qt sets the standard for high-performance, cross-platform application development. It includes a C++ class library and tools for cross-platform development and internationalization. Qt also provides unique solutions to inter-object communication, goes beyond C++ to add flexibility for advanced GUI development and provides a special edition for back-end server applications."""
http://trolltech.com/products/qt/indepth

Eu costumo dizer que o QT faz o C++ ficar até mais poderoso que o Java.

davidkwast.blogspot.com

Wallacy's picture

"Eu costumo dizer que o QT faz o C++ ficar até mais poderoso que o Java."

Já falei uma vez isso tambem hehehe.... :)

davidkwast's picture

Ei Wallacy,

To vendo que vc tem um perfil parecido com o meu, vamos tentar escrever algumas coisas para o MeioBit?

Principalmente sobre desenvolvimento com as Libs, Aplicações e linguagens que são uma mão na roda como Wget, Mplayer, QT, SDL, Python, PyGame...

Quem sabe uma dia o GNU não ganhe um subdominio aqui? hehhe

gnu.meiobit.com

Abraços

contato: david (ponto) kwast (no) gmail (ponto) com

davidkwast.blogspot.com

Wallacy's picture

Assim que eu tiver um tempo, poderei ajudar sim, acontece que estou terminado um projeto, e ainda vou demorar mais ou menos um mês, para conclui-lo.

Mais posso falar algo sobre python, pyqt, etc...
Tambem tenho um zilhão de distribuições aqui, posso fazer um compatativo.

Mais acho que se eu for escrever algo, a primeira coisa seria sobre opensuse build service :)

void's picture

Senhores,

Vocês não me parecem ser crianças inocentes. Aqui é um blog focado em Windows e Mac, quando se publica algo sobre Linux, em geral é para fazer piada e ridicularizar.

Adeus

PS: Caro Dr. House, tenha a bondade de me banir.

"___Oh escolhido pelo destino...estamos aqui para realizar seu desejo...quem você oferece como sacrifício ?
B...B...o Bill!
___ Hummm...não serve!
___ Porque ?
___ Esse é odiado por milhões...precisa ser alguém que você ame muito."

Wallacy's picture

Pois é, toda mudança começa com o primeiro passo não é?
Como comentei, a principio não tenho pretensões de escrever artigo algum, prefiro ficar nos comentários por enquanto, até que eu possa ter tempo para me dedicar a escrever algo de boa qualidade, etc. etc...
O “terreno do inimigo” é sempre um bom local para se iniciar uma guerra, seja lá qual for o contexto. (No bom sentido é claro. Se não vira palhaçada.).

O lançamento do KDE4 vai coincidir com uma folga minha, acho que já é um bom começo...

E se ridicularizarem? Pois é, se eu ligasse para a opinião alheia, não seria metade do que sou, seria somente mais uma dessas copia barata espalhadas pelo mundo a fora.

Ah... sobre: "Vocês não me parecem ser crianças inocentes.", não foi inocência não (pelo menos de minha parte), como eu disse, toda grande mudança começa com um primeiro passo não é? Repare nos comentários de alguns meses atrás para os atuais, mesmo para os mais ferozes defensores dos softwares proprietários hoje vejo um pouco menos de preconceito em seus comentários, prova que as insistentes “replicas” que alguns defensores do Software Livre postaram surtiram efeito, quando se elimina o preconceito e a especulação, sobra a verdade.

Dennes's picture

Oi, Wallacy !

Quanto a evolução, acredito que ela aconteceu de ambos os lados. Não sei se chega a ser algo tão grave como preconceito e especulação, mas apenas a identificação da boa vontade em um debate técnico sendo correspondida com a mesma boa vontade.

Pessoas que nos meus primeiros artigos respondiam como absolutos Trolls, hoje debatem seriamente os tópicos publicados.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

hamacker's picture

snif, snif,... estou muito sensibilizado com a fofura dos dois. :)

davidkwast's picture

Pode contar comigo Wallacy,

Agora tenho até base para comentar as diferenças entre o Aqua(OSX), KDE e Windows.

Vamos ver o quanto o QT4 vai fazer de diferença no KDE. O QT4 é de 20-30% mais rápido que o QT3.
http://news.zdnet.co.uk/software/0,1000000121,39184118,00.htm

davidkwast.blogspot.com

Dennes's picture

Oi, NewUser !

Sim, conheço essa técnica, mas por isso que meu instinto de desenvolvedor me fez chamar isso de POG.

Se você observar esta comparação, creio que na atualidade as bibliotecas não usam mais este recurso não, que em minha opinião é programador é um recurso, no mínimo, "feio".

[]'s

---------------------
CidadaoCarioca
BufaloInfo

davidkwast's picture

Não concordo, é um insulto pensar em POG só porque um código usa algumas diretivas de pré-compilação para separar código de diferentes plataformas.

Sem querer desmerecer a Wikipedia, mas é a sua única fonte para defender o Direct3D sobre utlilizar mais o hardware que o OpenGl?

davidkwast.blogspot.com

Dennes's picture

Oi, David !

Quanto a POG, basta comparar esse "método" com o uso do design pattern de providers, por exemplo, e a diferença fica mais clara. De qualquer forma, neste ponto é uma questão de opinião, concordamos então em discordar.

A Wikipedia é apenas a referência mais a mão, pode-se buscar outras, óbvio. Mas já não basta a coincidência dela explicar bem mais tecnicamente exatamente o que falei por alto aqui, sendo aqui aqui não localizei a informação no tempo e lá se encontra bem colocada como histórico ?

[]'s

---------------------
CidadaoCarioca
BufaloInfo

Dennes's picture

Oi, NewUser !

Muito interessante o link sobre Direct3D 9 com SDL.

Fica claro que o SDL abstrai o Direct3D 9, assim como o XNA, portanto em sua definição inicial, XNA e SDL teriam objetivos equivalentes.

Mas o artigo mostra um exemplo de codificação com SDL. Me pareceu um nível de preocupação realmente muito maior com detalhes gráficos e de hardware do que o caso do XNA. Poderiamos classificar então, talvez, em níveis diferentes de abstração.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

Em primeiro lugar gostei do artigo, apesar de algumas ressalvas...

OpenGl possui tantos ou mais recursos gráficos que o Directx, a principal diferença entre eles e o porque do ultimo ser mais utilizado nos jogos é que ele contempla funcionalidades como controlar som e joystick, e o opengl é um padrão gráfico apenas.

OpenGl pode fazer qualquer coisa que Directx faz, isso é um fato. Porém o segundo é muito mais utilizado por vir com o kit completo, graficos, som, controles. Como windows é a plataforma dominante, as produtoras tendem a utilizar o directx por "conversar melhor" com o windows, e diminuir o numero de bibliotecas a serem utilizadas. Se o outro sistema fosse dominante o directx teria morrido.

Quanto ao Xna eu fiz algumas coisas com ele, muito interessante, muito simples, mas não é perfeito, longe disso. Porém o fato de estar integrado ao Visual Studio é um ponto positivo, pois queiramos ou não é um senhor editor. Eu abandonei o xna porque ele até a versão 1.0 exigia muitos malabarismos para utilizar os bones e realizar animações em 3d manualmente, para o que eu planejava fazer foi um banho de agua fria, pois estava muito empolgado e cogitava até comprar a licença do creators club. O Xna é um framework, inclui bibliotecas, o editor, e uma série de facilidades. Porém existem outras bibliotecas muito competentes, e na minha opinião tão simples quanto o xna. Como Irrlicht, Ogre3d e para 2D o allegro(já viram o Mugen? aquilo foi feito no allegro). Tanto ogre e irrlicht são multiplataforma, e permitem se escolher ou opengl ou directx como biblioteca gráfica. Aliás na minha opinião, a que mais me diverti foi com irrlicht, mas isso é gosto pessoal.

Portabilidade é algo que é conseguido mais por mérito de projeto do que pelas bibliotecas, ou framework utilizado. A principal maneira e acredito que mais usada é criar uma série de funções(ou classes) para as principais rotinas dependentes de sistema como desenhar algo na tela, e então dentro dessa função diferenciar os sistemas na qual o programa está sendo compilado. Dentro do seu programa vc usaria as suas rotinas apenas. Caso se deseje compilar o codigo para um novo sistema, basta acrescentar esse tratamento a uma pequena parcela do código.

O que as engines fazem é tratar esses rotinas de baixo nivel e acrescentar recursos necessários para um jogo, como simulação física, recursos de som mais avançados, algoritmos mais eficientes etc. Se engana quem acha que só é preciso vontade para fazer um jogo, é muito mais que isso. Pois por mais que uma biblioteca ou framework facilite, vc vai precisar entrar a fundo para conseguir algo que realmente seja diferenciado.

Quanto a programação à comparação de C++, java e C#. Muitos reclamam de c++ principalmente depois de conhecer java ou c#, que c++ não tem esse recurso, ou aquele, e o taxam de linguagem de baixo nivel. C++ não inclui baterias,mas isso é facilmente contornado com bibliotecas externas. Não é a toa que o padrão da indústria, princiapalmente para aplicações de alto desempenho é C++, e as que necessitam ter mais desempenho usam C.

Como bem disseram aqui olhem o Qt, a biblioteca é tão bacana que tem gente querendo porta-la para java, não que isso seja um atestado de qualidade (pessoalmente não gosto de java, mas reconheço ter vantagens). C++ não é uma linguagem de baixo nivel, mas ela pode ser tão baixo nível quanto vc deseje, ou tão acima também, já que permite múltiplos paradigmas.

Uma última coisa é que tem muita gente que esquece que ter uma licença hiper cara ou a melhor biblioteca, ou o melhor compilador, não faz um bom jogo. É quase como querer que ter um bom lápis te faça um bom desenhista. Eu conheço muita gente que faz coisas incríveis com pedaço de carvão e papel de pão.

Referencias Opengl
http://dirceu.googlepages.com/opengl21directx10cx7.jpg
http://www.cprogramming.com/tutorial/openglvs.html
http://www.opengl.org/

Bibliotecas:
http://irrlicht.sourceforge.net/
www.ogred3d.org
http://www.talula.demon.co.uk/allegro/
http://www.trolltech.com/

Linguagens de alto e baixo nivel
http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_de_baixo_n%C3%ADvel
http://pt.wikipedia.org/wiki/Linguagem_de_programa%C3%A7%C3%A3o_de_alto_n%C3%ADvel

Dennes's picture

Oi, Seth !

Chegamos a um ponto chave do assunto (apesar de que praticamente todos os comentários se concentraram nos primeiros parágrafos do texto).

"Como Irrlicht, Ogre3d e para 2D o allegro(já viram o Mugen? aquilo foi feito no allegro)"

Irrlicht e Ogre3d alegam ser engines. XNA em momento alguma se afirma como engine, muito pelo contrário, ele é a base para a criação de outras engines, tal como aconteceu com o TorqueX. Isso, de certa forma, justifica que você considere Irrlicht e Ogre3d muito mais fáceis que XNA. É o mesmo que considerar o TorqueX muito mais fácil que XNA : Claro que é, foi feito para ser.

Já o Allegro se declara como biblioteca gráfica, este sim, em termos de definição, seria comparado ao XNA. Mas, como você colocou, ele é apenas 2D.

Sendo uma biblioteca gráfica e não uma engine, o XNA permite que engines como Irrlicht e Ogre3d portem-se para utilizarem o XNA como base e desta forma possam utilizar todas as suas facilidades para desenvolver jogos para XBOX, exatamente como o TorqueX fez.

Porém acho que esse tema nos abre um outro leque de discussão : Até que ponto algo pode ser classificado no mundo dos jogos como engine ou até que ponto pode ser classificado como biblioteca gráfica ?

Torque claramente é uma engine e se portou para usar XNA, Allegro se auto-classifica como biblioteca gráfica 2D, mas o Irrlich e o Ogre3d, apesar de se classificarem como engines, parecem ter um funcionamento muito mais próximo ao de uma biblioteca gráfica do que ao de uma engine...

[]'s

---------------------
CidadaoCarioca
BufaloInfo

http://dirceu.googlepages.com/opengl21directx10cx7.jpg

Vendo essa foto, pensei: API o ca*****, para esse nível de renderização em tempo real o que conta é a proficiência da equipe de programadores e dos artistas. D3D ou OGL influenciam pouco no resultado final.

Ah... Dennes, prefiro as plataformas livres, mas adoro seus artigos sobre a plataforma Microsoft (viu, sem $), és como um correspondente de uma guerra lá no oriente médio que não me importa, mas assisto a reportagem :)

TheDarkMaster's picture

Psiu, o fato de uma linguagem ser considerada "alto ou baixo nível" não é um indicativo da "qualidade" dela. Indica na verdade o quão perto a sintaxe da mesma está perto da linguagem de máquina (o nível mais baixo) ou da linguagem humana (o nível mais alto)

NewUser's picture

O carlosshp e o seth7777 fizeram esse artigo valer muito para min.

Dennes, a única coisa que não agradou a muitos aqui foi essa coisa de era pré-XNA como se XNA fosse mudar o mundo dos games(o termo era é muito forte). Que fique claro que para fazer uma nova engine o programador tem que codificar em cima do D3D ou OpenGL(a engine vai carregar modelos, sons...) e sem dúvida o XNA já traz isso pronto, mas não é a primeira vez na história do universo que isso começou a existir.

"Interessante a comparação do SDL com DirectX, porque outras pessoas aqui nos comentários compararam o SDL mais com o XNA..."

No seu artigo você descreveu maneiras de programar jogos, então valeu tudo nos comentários.

Dennes's picture

Oi, NewUser !

"Que fique claro que para fazer uma nova engine o programador tem que codificar em cima do D3D ou OpenGL"

Sim, como tratam-se de API's incluidas nos SO's, a programação fica sendo de bem baixo nível, como XNA a programação de engines passa a ser possível em bem mais alto nível. Vide TorqueX.

"mas não é a primeira vez na história do universo que isso começou a existir."

Expecificamente sobre jogos ? Citaram o SDL, mas se SDL tem equivalencia com DirectX então não conta. Existem outros exemplos ? Essa é a questão...

"aqui foi essa coisa de era pré-XNA como se XNA fosse mudar o mundo dos games"

É, percebi que isso não agradou. Mas o XNA criou a possibilidade da programação de engines ser feita em muito mais alto nível do que acessando diretamente as API's.

Existem outras alternativas equivalentes, que abstraiam o uso das API's e não sejam Engines ? É possível que sim e comentários aqui sobre tais alternativas seriam muito úteis...

[]'s

---------------------
CidadaoCarioca
BufaloInfo

kakaroto_BR's picture

Quem dera num futuro promissor todos nós pudéssemos usar só ferramentas de alto nível e de capacidade de abstração cada vez maiores. O fato é que muitos profissionais de verdade usam e muito C e até assembly.

kakaroto_BR's picture

E qual é? A MS tem o filme tão queimado assim a ponto de todo mundo achar que nada que vem dela presta?

kakaroto, acho que é quase isso. provavelmente o filme da MS é queimado porque nada dela presta, ou prestava. Quem tem fama, deita na cama *.* [nunca pensei que usaria essa frase]

por mais que em algumas questões a microsoft venha 'acertado a mão', em outras ela está defendendo e reforçando a propria bandeira. nada exatamente de 'errado' nisso, é uma questão de negócios, nada 'ilegal'.

o XNA pode ser sim muito bom, mas não é multiplataforma, o que, pra mim, é 'piracema' - subir o rio contra a correnteza. cada vez mais títulos aparecem pra Mac e pra Linux. cada vez mais engines, frameworks e outras ferramentas aparecem ai com tal caracteristica. - isto vale para os PC's

Já para o XBOX, quanto mais fácil for para as desenvolvedoras de games criarem e portarem novos títulos, melhor para o console, que, nesse caso, nao precisa ser multiplataforma ou compativel com nada mais, senão com ele mesmo. Ridículo é ter que pagar assinatura disso.

Milk-it Brasil Software House

http://www.milk-it.net

Dennes's picture

Oi, Lucas !

Quanto ao XNA, observe os dois últimos parágrafos e o link. O XNA foi feito focado no XBOX e apostaria que antes de se preocupar com jogos para PC em multiplataforma a MS está muito mais preocupada com aqueles dois últimos parágrafos que coloquei ali.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

irado's picture

Eu ainda não utilizei a XNA, mas pretendo usar ela para não falar dela sem antes conhece-la. Concordo plenamente com o que o seth777 falou, principalmente com a parte de que não basta ter a melhor engine ou compilador por exemplo, se a pessoa nao tiver empenho e vontade nao vai fazer jogo algum. Já basta nos foruns de jogos posts do tipo "Eu tenho uma ideia para um mmorpg, como eu faço para criar um em 10 dias?", normalmente se pensa que para criar um jogo desses arrasta-se um castelo para uma janela, e clica-se em alguns botões e pronto. Pode parecer exagero meu, mas isso acontece, ainda bem que a frequencia ja caiu muito.

Gosto de utilizar a Ogre como engine para estudar desenvolvimento de jogos.

t+

Dennes's picture

Oi a Todos !

Acrescentei duas atualizações no artigo, uma a pedido de André Furtado e outra a pedido de Galileu Vieira.

[]'s

---------------------
CidadaoCarioca
BufaloInfo

JulianaPrado's picture

Oi Pessoal

Gostei do artigo pois mostra o XNA game studio de uma forma abrangente e ilustrou informações revelantes a pessoas que desejam iniciar o estudo em uma tecnologia.

Antes de tudo devemos pensar que não se importa se trata de uma tecnologia Microsoft,Mac ou Linux . O importante que se tenha pessoas qualificadas para fornecer informações revelantes para assim dessa forma favorecer o ambiente saudável

Os exemplos de empenho e dedicação em relação ao objeto de estudo desejado incentiva a ampliação dos conhecimentos e de networking .

Por estas razões acima eu penso que o artigo contém informações uteis para quem pensa em começar a trilhar uma história de sucesso

Até

Juliana Prado Uchôa

Entrar



Design Wenetus