Quero começar a desenvolver para o meu Xbox 360 e ouvi falar da estrutura XNA que pode ter como alvo o PC e o Xbox. Isso soa como uma opção atraente, já que meus clientes também podem usar o jogo / aplicativo em computadores normais.
No entanto, sou muito novo na cena Xbox. O XNA é apenas para desenvolvimento hobby e não é recomendado para desenvolvimento de aplicativos corporativos ou semi-profissionais? O XNA não possui os recursos de uma solução desenvolvida em C ++ ou reduz bastante o desempenho de um jogo / aplicativo em execução no Xbox?
É possível segmentar o Xbox usando C # e sem XNA? Quais são as vantagens?
A programação de baixo nível seria em C ++, trabalhando diretamente com o DirectX. Quais são as vantagens?
A menos que você esteja disposto a pagar US $ 10.000 por um devkit XBOX ou Playstation, o único console para o qual você pode desenvolver é o XBOX 360, e a única maneira de fazê-lo é com o XNA.
Para o desenvolvimento profissional, a menos que você realmente precise obter 100% do poder de processamento do XBOX (que a maioria dos jogos, especialmente os jogos 2D não precisam), o XNA, na minha opinião, é realmente muito melhor para o desenvolvimento.
Alguns erros que outros respondentes fizeram:
O XBOX possui apenas 3 núcleos. Você obtém acesso a todos eles com o XNA.
Cada núcleo possui hyperthreading e suporte para 2 hyperthreads. Você só tem acesso a 4/6 threads. Um desses threads é para o XNA. O outro é um segmento ao qual nenhum desenvolvedor de jogos tem acesso, pois é usado pelo sistema operacional XBOX.
O C # no XBOX é muito mais lento que o C # no Windows. O XBOX usa o .NET compact CLR, que é muito leve e carece de muitas das otimizações do CLR de desktop. Os recursos de segurança do XBOX impedem que os programas modifiquem seu próprio código-fonte. Isso dificulta muito a execução do código .NET, e muito menos a execução rápida . Parte do que torna o código gerenciado competitivo no desempenho com o código nativo C ++, é que o CLR pode modificar seu próprio código para otimizar a coerência do cache. A equipe de desenvolvimento do XNA precisa percorrer alguns grandes bastidores para conseguir que o C # seja executado no XBOX, e há um custo de desempenho associado a esses bastidores.
Você não fica muito preguiçoso com a alocação de memória. O XNA no Windows simplifica bastante a alocação de memória, como seria de esperar de um ambiente gerenciado. No entanto, no XBOX, o .NET compact CLR usa uma abordagem de varredura e compacta para a coleta de lixo, e a abordagem típica para evitar a gagueira no jogo devido a coleções é evitar coleções por completo. Isso requer o uso de conjuntos de objetos para suas classes e o uso de estruturas para objetos menores, onde você normalmente usa classes no ambiente Windows. O pool de objetos geralmente requer um modelo de gerenciamento de objetos alocado / livre, o que não é pior (e talvez um pouco melhor) que o gerenciamento de memória C ++.
Dito isso, o desenvolvimento em C # / XNA ainda é muitas vezes mais rápido e fácil do que o desenvolvimento em C ++ sem uma API DirectX (que é XNA).
Aqui está o status de um jogo que estou criando no XNA, após 4 semanas de trabalho:
Isso deve lhe dar uma noção de quão incrivelmente rápido o desenvolvimento com a biblioteca / API XNA está em combinação com C #.
Essa captura de tela é renderizada pelo XBOX a cerca de 65FPS.
Se você é um desenvolvedor de jogos amadores e deseja criar jogos para um console, o XNA + XBOX não é apenas a sua única opção realista, mas também uma opção incrível, um ambiente de desenvolvimento divertido e muitos jogos do XBOX Live Arcade. feito com o XNA e fez centenas de milhares de dólares fazendo isso. ( Limbo por exemplo.)
fonte
XNA é uma lâmina de dois gumes; é relativamente fácil de usar, mas muito extensível e personalizável. O problema é que, com base em uma linguagem gerenciada e com uma implementação do Compact Framework, reduzir o desempenho de um jogo complexo pode ser muito doloroso e frustrante.
Você só pode implantar no seu Xbox via C # / XNA ou C ++ / DirectX, mas a segunda opção requer a qualificação para uma licença XBLA e o pagamento do devkit, que pode ser muito caro (~ 10000 $).
E lembre-se de que o Xbox é um sistema fechado. Esqueça qualquer interação direta de TCP / IP, você só pode se comunicar com outros consoles presentes no Xbox Live! rede e você não pode fazer conexões HTTP não processadas.
Portanto, se você estiver pensando em um jogo, experimente o XNA e mude para um devkit se precisar de mais poder bruto (e você tiver o dinheiro). Se você está pensando em um aplicativo ... basta direcionar para outra plataforma.
fonte