O C # tem futuro no desenvolvimento de jogos?

18

Eu aprendi recentemente que o MMO Minecraft é alimentado por Java em uma entrevista recente no CVG.co.uk sobre uma possível colaboração entre dois ex-colegas e agora concorrentes. Na entrevista, ele disse sem rodeios que o fundador do Minecraft é um codificador Java e ele é um codificador C ou C ++, portanto eles são incompatíveis entre si. Portanto, a colaboração em projetos futuros será difícil.

Isso me fez pensar: se o Java poderia fazer isso? O que o futuro reserva para a popular linguagem MS # C e plataforma .Net da Microsoft no que diz respeito ao desenvolvimento de jogos ou jogos tradicionais?

caos
fonte
3
É tudo sobre as performances que você precisa, Minecraft é ok em uma linguagem gerenciada, mas para altas jogos end gráfico, C ou C ++ ou outros nativos línguas são preferidos
19
Minecraft não é realmente um MMO.
DeadMG
3
@ Guillaume86: Atualmente, o código com jitter pode superar o código nativo, e o Jits está melhorando o tempo todo. Além disso, linguagens gerenciadas produzem programas muito mais robustos. Portanto, no final, o C ++ perde sua vantagem de desempenho e é significativamente mais difícil escrever programas robustos (o que significa tempos de desenvolvimento mais longos e mais custos) #
Martin Martin
4
Um JIT pode bater código nativo mal escrito, não loops internos altamente otimizados e ajustados. Concedido mesmo com C #, você tem a opção de escrever esses segmentos sensíveis em C / C ++, se realmente quiser.
Coderanger

Respostas:

22

Você deve conferir o XNA . Uma plataforma para a criação de jogos para Windows, Xbox 360 e Windows Mobile 7. Tudo em C # e .NET.


fonte
11

Trabalho com desenvolvimento profissional de jogos há mais de 5 anos. Na maioria das vezes, usei C # quase exclusivamente.

A pilha C # e .NET em geral é realmente excelente para a tecnologia do servidor. Eu trabalhei em nada menos que 4 jogos MMO com servidor escrito em C #. Além disso, com o Unity3D ganhando popularidade, muitos navegadores e jogos para dispositivos móveis requerem C #. Não se esqueça do framework XNA: não é o mecanismo de escolha para os títulos de console AAA, mas existem muitos jogos excelentes feitos com ele e muitos outros atualmente em desenvolvimento.

No geral, o C # definitivamente tem um futuro no desenvolvimento de jogos.

deixa pra lá
fonte
é uma pergunta antiga, mas uma coisa me incomoda. "tecnologia do lado do servidor" - o que exatamente você quer dizer com isso? Um WindowsService em execução em algum Windows Server usando o .NET Framework? Eu sempre pensei que os servidores são feitos em c ++ e rodando em sistemas operacionais unix. Eu estava apenas curioso
Marshall
Sim, exatamente isso. Existem muitos servidores em execução no Windows por aí - incluindo os que executam este site, o AFAIK.
Nevermind
obrigado por voltar para mim. Só para esclarecer - "rodando no Windows" como Windows Services sem cabeça ou programas como o WinForms (com configuração embutida ou algo assim)?
Marshall
Serviço sem cabeça geralmente é uma idéia melhor, mas nada impede você de executar um aplicativo de console. Ou mesmo uma GUI, exceto que não há ninguém no servidor para usar a referida GUI.
Nevermind
10

Como foi mencionado, o Mono leva o C # a várias plataformas. Nessa mesma área, você encontrará o Tao , uma biblioteca multiplataforma para Mono e .NET que permite acesso a Cg, DevIL, FreeGLUT, GLFW, GLU, ODE, OpenAl, OpenGL, PhysicsFS, SDL e WGL. Obviamente, não é tão robusto quando se trata de recursos como o XNA (que fornece componentes fundamentais do mecanismo diretamente ao desenvolvedor); mas, é bastante poderoso.

Portanto, é definitivamente possível atravessar plataformas além dos sistemas operacionais e hardware controlados pela Microsoft. Apenas alguns jogos indie populares ainda não utilizaram essa habilidade.

Como também foi mencionado, o XNA, juntamente com o C #, permite que desenvolvedores independentes publiquem no 360, PC e Windows Phone 7.

No geral, o C # está vivo e bem no desenvolvimento de jogos como uma linguagem de mecanismo / jogo.

Como uma linguagem de ferramentas, ela é usada em qualquer lugar. Criei ferramentas para EA, THQ e agora Arkadium usando C #.

AA Grapsas
fonte
5

O C # não só tem um futuro no desenvolvimento de jogos, mas também um presente - Confira o Magicka , um jogo lançado recentemente (e vendendo bem) que foi desenvolvido usando o XNA. Veja também as entradas vencedoras do Dream.Build.Play . C # é uma maneira viável de criar jogos (embora, no momento, eu não acredite que seja a escolha certa para todos os jogos).

Com o passar do tempo, veremos isso se tornando mais popular na indústria de jogos de computador, no entanto, não espero uma mudança repentina para o C # em nenhum momento.

CiscoIPPhone
fonte
4

Java sempre foi uma linguagem muito versátil e sempre houve a capacidade de as pessoas codificarem jogos, desde jogos simples baseados na Web (applets Java / GWT com o plug-in de tela) até bestas completas em 3D (check-out JMonkey ). Então, eu não diria que o fato de o Java fazer esse tipo de coisa é um matador de C #, porque a maioria das pessoas sabe que o Java já pode fazer isso.

O C # ainda permanecerá popular, uma vez que inevitavelmente se vincula ao Windows, Windows Mobile e Xbox muito melhor que o Java (que, na verdade, são todos os desenvolvedores de jogos que realmente se preocupam com o direcionamento, portanto, a vantagem de plataforma cruzada que o Java tem é perdida.) também tem o XNA que realmente decolou em termos de desenvolvimento de jogos.

Então, sim, o Java é uma plataforma perfeitamente boa para o desenvolvimento de jogos, se alguém quiser seguir esse caminho, mas certamente não é um assassino de C # ou .NET.


fonte
4

Confira o Unity 3D; Script em C # (e JavaScript e Boo) em um mecanismo 3D de alto desempenho.

Adicione o XNA à mistura e você verá algumas ótimas plataformas para usar o C # no desenvolvimento de jogos.

chrish
fonte
O Unity também possui um web player para que você possa jogar no navegador. O plugin não tem uma grande penetração no mercado, como flash ou java, mas é possível.
Michael Coleman
yay pela unidade !!
Daniel Pendergast
1

Sim, o C # tem um futuro, com a estrutura XNA. A maioria prefere C ++ por causa da velocidade, mas C # não é mais tão lento ...

GoofyHTS
fonte
2
Não é nada lento. Raramente é pior que cerca de 70% da velocidade do C ++ e às vezes pode ser mais rápido!
Noldorin
4
As operações vinculadas à CPU em C # são bastante rápidas, realizam algumas verificações extras, o que melhora enormemente a segurança do código ao custo de algumas pequenas ocorrências de desempenho, mas onde é muito pior que o C ++ no consumo e gerenciamento de memória. É muito mais fácil e menos propenso a vazamentos em C #, mas os resultados de desempenho do GC podem ser um cão absoluto.
justin.m.chase
Cuidado ao direcionar o Xbox360 embora. O tempo de execução do XNA não possui a capacidade de algumas das principais otimizações e impede a troca de partes sensíveis ao desempenho para código não gerenciado.
8118 drxzcl
1

Além disso - o MonoDroid pode ser uma opção para C #.

Marc Gravell
fonte
1

O que ele fez com Java nesta instância foi criar um applet para que você pudesse acessar o site e jogar com um plug-in muito comum, completamente transparente para o sistema operacional que estava sendo usado. Eu imagino que ele pensasse que o Java era bastante transparente quando usado dessa maneira e facilitaria o desenvolvimento / teste iterativo rápido que ele estava fazendo com que os fãs fizessem. Não acredito que você possa fazer isso com o XNA, porque geralmente o testador precisa ter tudo instalado, além do jogo e alguns conhecimentos gerais sobre como compilar e executar isso.

Então, eu diria que não há mudança de paradigma disso, apenas se adequava ao que ele precisava na época e obviamente funcionou bem.

Douglas Rae
fonte
1

Claro, muitas linguagens de programação têm futuro no desenvolvimento de jogos. É um dilema falso frequentemente usado na imprensa de computação que pode haver apenas uma ferramenta do tipo X e que todos desejam que isso ocorra.

Nada poderia estar mais longe da verdade.

C # e Java são usados ​​em jogos há muito tempo. C e C ++ duram ainda mais e ainda são. Lua é usada como linguagem de script para alguns jogos incrivelmente populares, com o mecanismo escrito em C / C ++.

Tão claramente que nenhuma linguagem de programação está soprando outras linguagens de programação fora da água como The Game Programming Language. De fato, vemos uma tendência para os jogos líderes serem compostos por uma linguagem de programação compilada de alto desempenho para desenvolver o (s) mecanismo (s) em.

A chave no momento é o desempenho. Se qualquer uma das linguagens / bibliotecas de programação usadas causar pausas imprevisíveis / incontroláveis ​​no aplicativo, em um jogo de ação, isso cairá de cara no chão. Em um jogo de aventura baseado em texto, isso pode ser bom, no entanto.

JohnnySoftware
fonte