Estou começando a aprender XNA e está indo bem. No entanto, gostaria de saber se estou me dando um tiro no pé aprendendo 3.1 e não 4.0?
Também sei que a Microsoft obviamente tem um conflito de interesses: quanto mais vezes atualizamos, mais cópias do Visual Studio elas vendem (eu sei que o Express é gratuito, mas alguns serão profissionais). Portanto, é preciso ler nas entrelinhas dos blogs do tipo "MASSIVE NEW FEATURES UPGRADE NOW" dos funcionários da MS.
Estou ciente do que há de novo: http://msdn.microsoft.com/en-us/library/bb417503.aspx , e que parece ser principalmente telefone, interfaces e recursos de vídeo - dos quais não estou tão interessado - estou mais fazendo o material 3D principal.
O ponto de discórdia é: Eu já tenho o Visual Studio 2008 Professional e não quero obter o VS 2010 se houver pouca diferença na programação do jogo na versão 4.0.
O mundo mudou? O que estou aprendendo no 3.1 será redundante?
Também existem diferenças de código nas bibliotecas, mas elas não são importantes, muitas delas podem ser vistas aqui: http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/ , por exemplo, este que eu tive que descobrir em comparação com Riemers Tut:
XNA 4.0
protected override void Draw(GameTime gameTime)
{
device.Clear(Color.DarkSlateBlue);
RasterizerState rs = new RasterizerState();
rs.CullMode = CullMode.None;
device.RasterizerState = rs;
effect.CurrentTechnique = effect.Techniques["ColoredNoShading"];
effect.Parameters["xView"].SetValue(viewMatrix);
effect.Parameters["xProjection"].SetValue(projectionMatrix);
effect.Parameters["xWorld"].SetValue(Matrix.Identity);
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Apply();
device.DrawUserPrimitives(PrimitiveType.TriangleList, vertices, 0, 1, VertexPositionColor.VertexDeclaration);
}
base.Draw(gameTime);
}
XNA 3.1
protected override void Draw(GameTime gameTime)
{
device.Clear(Color.DarkSlateBlue);
device.VertexDeclaration = new VertexDeclaration(device, VertexPositionColor.VertexElements);
device.RenderState.CullMode = CullMode.None; // TODO only for testing!
device.RenderState.FillMode = FillMode.Solid;
effect.CurrentTechnique = effect.Techniques["ColoredNoShading"];
effect.Parameters["xView"].SetValue(viewMatrix);
effect.Parameters["xProjection"].SetValue(projectionMatrix);
effect.Parameters["xWorld"].SetValue(Matrix.Identity);
effect.Begin();
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Begin();
device.DrawUserIndexedPrimitives<VertexPositionColor>(PrimitiveType.TriangleList, vertices, 0, 5, indices, 0, indices.Length / 3);
pass.End();
}
effect.End();
base.Draw(gameTime);
}
Respostas:
Eu recomendo usar o XNA 4.0.
Claro que você provavelmente pode fazer tudo com o 3.1 o que pode fazer com o 4.0, mas ele avançou bastante. Além de suas referências, você também pode dar uma olhada no blog de Shawn Hargreaves, por exemplo, neste post: Quebrando Alterações no XNA Game Studio 4.0 . Ou, basicamente, você pode apenas conferir os meses de março, abril e maio de 2010 em seu blog, eles estão cheios de alterações no XNA 4.0.
Lembre-se também de que, com a versão 3.1, você ficará preso à tecnologia antiga. Eventualmente, você desejará atualizar para o XNA 5/6 para suporte ao DX11 ou qualquer outra coisa. Dependendo do tamanho / complexidade do seu programa até então, pode levar algum tempo para atualizá-lo para 4.0, pois você precisará fazer várias alterações.
fonte
Para o programador 3.1 e 4 são quase os mesmos. As principais mudanças estão na criação de um dispositivo e spritebatch. E onde está o Content Manager, ele é movido para seu próprio projeto dentro da solução. Tudo o resto é praticamente o mesmo. Essas alterações são apenas algumas linhas de código diferentes. Nos bastidores, embora esteja usando diferentes chamadas de API directx.
Então, para responder à sua pergunta, você não está atirando no próprio pé. O uso do XNA não mudou muito do ponto de vista dos programadores, mesmo nas versões 1.0.
Existem muitas dicas na net para procurar respostas rápidas sobre a conversão de 3.1 - 4.0 como esta http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet / .
fonte