O C ++ "ainda" é preferido no desenvolvimento de jogos? [fechadas]

17

Eu sou um programador de jogos 2D. Algumas linguagens de programação nas quais eu sou bom são C, Java, C #. Eu também sei Actionscript 2.0,3.0 e alguns javascript. Estou interessado em aprender a programação de jogos em 3D. Longe das pesquisas que acumulei pesquisando e lendo diferentes fóruns e artigos sobre desenvolvimento de jogos. Notei que a maioria dos programadores costuma preferir C ++. Também em um curso de ensino de programação de jogos online, notei que eles preferem ensinar C ++ e Visual C ++ como o curso inicial. A razão pela qual estou fazendo essa pergunta, já que gostaria de saber a diferença de "força" de C ++, C # e Java para programação de jogos em 3D.

Inclua também links para bons artigos de programação de jogos em 3D para o já programador de jogos em 2D.

PS: IMHO, também acho o C ++ enigmático.

Vishnu
fonte
Eu também entendo muito isso. Então, fiz uma pergunta na comunidade sobre quais habilidades um programador profissional de jogos deveria ter. Tenho algumas respostas legais focadas em C ++ como melhor linguagem para o desenvolvimento de jogos. verificar .. gamedev.stackexchange.com/questions/5552/…
GamDroid
@ GamDroid: Não estou interessado em saber o que faz um programador de jogos em 2D profissional. Estou interessado em saber sobre o Visual C ++ e por que isso é tão comentado.
Vishnu
2
Btw: Visual C ++? Não é apenas C ++ simples?
speeder
O editor do Visual C ++ é legal, mas a linguagem Visual C ++ (ou seja: C ++ com API da Win32 GUI e coisas assim, tanto com o MS Visual C ++ quanto com o Borland C ++ Builder) é bastante confusa e não deve ser usada para jogos (é muito inchado, e usar GDI é mais lento do que usar, digamos, SDL, para controlar a janela)
speeder
1
@Vish, desculpe-se, então, sinta-se à vontade para editá-lo para ser mais preciso, tendo em mente os comentários até agora. Se você quer dizer que a programação do Win32 é confusa, diga isso.
Tétrada

Respostas:

30

Sim, C ++ é a linguagem usada com mais frequência (embora algumas pessoas ainda usem C).

Existem inúmeras razões para isso. O grande impulso é um - é simplesmente a linguagem que é usada há anos, já existe muita tecnologia e as pessoas se sentem confortáveis ​​com ela, de modo que as mudanças não acontecerão da noite para o dia.

Depois, há a questão do controle. Os desenvolvedores de jogos são loucos por controle, e gostamos de saber tudo o que está acontecendo em nosso código. O C ++ nos fornece que o controle, C # e Java (para escolher as duas alternativas mencionadas), retira o controle. De muitas maneiras, isso pode ser uma coisa boa, mas os codificadores de jogos não gostam :)

Finalmente, há a questão prática simples de que os SDKs para várias plataformas são muito centrados em C ++. Usar outro idioma inevitavelmente envolve escrever wrappers, compilação cruzada para VMs e possivelmente (no caso de algum desenvolvimento de console) não é permitido pelo suporte da plataforma (eles realmente não gostam de pessoas fazendo a compilação JIT, para começar).

JasonD
fonte
2
Na indústria de desenvolvimento convencional, sim.
JasonD
2
Em termos de idiomas, C ++, principalmente - ele não chegará a lugar algum tão cedo. Eu sugiro que também não faria mal estar familiarizado com linguagens de script - Lua, Python etc.
JasonD 17/11
8
O Visual C ++ não é uma linguagem, é um IDE.
Página
2
Sim, embora seja provavelmente o IDE mais usado, vale a pena conhecer isso ao mesmo tempo que aprender C ++.
JasonDa
1
@SurvivalMachine Bem tecnicamente é um dialeto (há uma abundância de extensões MSVC ++ que não existem no padrão)
bobobobo
4

O C ++ ainda é o preferido, como você pode ver em praticamente qualquer publicação sobre o tópico desenvolvimento de jogos. Pessoalmente, atualmente estou usando C para mergulhar no desenvolvimento de jogos pela simples razão de que o código C ++ que eu escrevo abusa dos recursos de modelagem, usa RAII extensivamente, alocação dinâmica de memória e outras coisas que você não deve fazer no código do jogo pelo que vi tão longe.

Aderir a C me força a ser minimalista e pensar no que estou fazendo. Pode ser mais difícil às vezes em que você precisa reimplementar algo que o STL oferece gratuitamente, mas, de cabeça para baixo, sinto que escrevo um código mais limpo e tenho mais facilidade em depurar essa coisa.

Armin Ronacher
fonte
3
RAII é perfeitamente aceitável (e deve ser incentivado) no código do jogo.
stonemetal
1
@stonemetal: RAII incentiva atrasos e, portanto, imprevisibilidade na alocação de recursos. Se isso deve ser encorajado ou não, depende do tamanho do seu jogo e das plataformas alvo (e do recurso em questão); em média, eu não o incentivaria. Além disso, o RAII no C ++ é mais comumente usado com alocação de heap, porque o OO do C ++ dificulta muito a alocação de pilha.
3
De que maneira a RAII incentiva a alocação atrasada de recursos? Quando uso o GLFW, crio uma classe chamada GLFWRAII que chama a função init do GLFW no construtor e chama a rotina de limpeza do GLFW no destruidor. Eu o aloco na pilha no início do main, não atrasa nada nem imprevisível. Outros usos podem ser alocar no início de um nível e limpar no final de um nível. Usar mal uma técnica não a torna uma técnica ruim. Nada sobre o RAII sugere alocação imprevisível de recursos além de uso inadequado.
stonemetal
Você apenas precisa evitar o uso desses recursos. Uso C ++ e nunca uso modelos no meu código nem objetos que geram exceções em seus construtores. Em C, você ainda pode usar alocação dinâmica (e é necessário para um jogo em 3D). Além disso, você deve codificar de uma maneira que também alguém ache fácil de entender - um grande projeto em código C puro pode ser um inferno, mesmo que você o entenda. Se você aprender a pensar no que está fazendo, mesmo que o idioma não o force, será capaz de escrever código limpo em muitos outros idiomas também.
Pablo Ariel
1

Pessoalmente, não sou fã de C ++ e prefiro Java. No entanto, a maioria das pessoas do setor o usa e é o idioma mais fácil de converter para outras plataformas sem invólucros e máquinas virtuais.

No entanto, às vezes outras línguas funcionam muito bem no desenvolvimento de jogos. Eu uso Java com LWJGL e é incrível. Portanto, se você deseja começar com a programação 3D e o OpenGL sem precisar aprender C ++, experimente o LWJGL com Java, porque é muito leve e acho que na verdade é um código C ++ rodando no JNI.

Talvez a longo prazo você queira mudar para C ++, mas você pode começar e praticar com C # ou Java. Como a maioria dos códigos de jogos vem da experiência com o idioma, você deve tentar praticar o OpenGL com um idioma com o qual se sinta confortável. Além disso, enquanto você pratica gráficos, também deve experimentar o GLSL com o OpenGL, que possui uma sintaxe muito parecida com o C

Romejanic
fonte