Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

segunda-feira, 16 de junho de 2008

Linguagens de programação para jogos

Olá pessoal,

No post de hoje irei falar sobre linguagens de programação para jogos. É importante saber quais fatores ajudam na escolha da linguagem em um projeto, tais como:

* Plataforma Alvo - Aquela para o qual o projeto irá ser desenvolvido (Console, Mobile, Windows, etc... ).
* Familiaridade da equipe - É considerado um risco de projeto se a equipe não tiver familiaridade com a linguagem escolhida.
* Requisitos de desempenho e/ou portabilidade - Somente serão elegíveis as linguagens que atenderem esses requisitos.

Bom, diante desses fatores as linguagens de programação mais comuns em jogos são:

Linguagens de baixo nível - Responsáveis por características do núcleo do jogo

* C++ - Linguagem OO(Orientada a Objeto) muito poderosa devido a manipulação direta de memória (através de ponteiros). Esta é de longe a linguagem mais usada na industria de jogos (90% a 95% do mercado) devido ser OO e ao seu excelente desempenho (compilando em binario para a plataforma escolhida). Possui uma curva de aprendizado lenta e está propensa (se não for programado com cuidado) a ter vazamentos de memória (memory leaks) devido a manipulação direta de memória. Visual Studio, Visual C++, Code Blocks, Carbide C++ e Eclipse (com o plugin) são alguns exemplos de IDEs para se trabalhar com C++.

* Java - Linguagem OO de fácil aprendizado e de imensa popularidade. Ganhou grande destaque devido a sua portabilidade. Possui grande aceitação no mundo dos jogos para dispositivos móveis. Apesar de todas essas vantagens Java ainda não é considerada uma linguagem elegível para jogos em algumas plataformas devido ao alto uso de memoria e seu desempenho ser bem inferior ao C++ (porém com a evolução do hardware em alguns anos talvez seja possível). Eclipse e Netbeans são alguns exemplos de IDEs para se trabalhar com Java.

* C# - Linguagem OO de fácil aprendizado e grande popularidade. Com as investidas da microsoft de popularização da plataforma .NET juntamente com o projeto XNA, esta linguagem tem ganhado cada vez mais espaço, mesmo que seja ainda entre hobbistas, estudantes ou indies. Assim como Java, C# possui alto uso de memoria e desempenho inferior ao C++. Visual Studio e Visual C# Express são alguns exemplos de IDEs para se trabalhar com C#.

Linguagens de Script de Alto nível - Responsáveis em geral por implementações de game play. Algumas dessas são criadas especialmente para o projeto da engine, grande parte delas com sintaxe parecida com C.

* Torque Script - Exclusiva para a Torque Engine.
* Unreal Script - Exclusiva para a Unreal Engine.
* LUA - Linguagem de script 100% nacional. Robustez, simplicidade, boa performance, pequena, gratuita, são algumas das qualidades dessa linguagem. Possui sintaxe procedural e semantica extensivel.
* Python - Linguagem de multiplos paradigmas (OO, funcional e imperativo). Produtividade e legibilidade são algumas das qualidades dessa linguagem.
* RUBY - Tambem de multiplos paradigmas, esta linguagem foi criada para aumentar a produtividade dos programadores atravez da minimização de problemas encontrados.

Linguagens de Shaders - Utilizadas na criação de alguns efeitos que são processados na GPU. Todas a seguir possuem sintaxe parecida com C.

* Cg - Linguagem de shader da NVidia.

* GLSL - Linguagem de shader utilizada com OpenGl.

* HLSL - Linguagem de shader utilizada com DirectX.


Vale lembrar que é possivel fazer jogos em linguagens como Action Script (para programar em Adobe Flash) em caso de jogos casuais, ou mesmo fazer jogos simples em qualquer linguagem como VB, Delphi (com object pascal), C, Pascal, etc.


Bom pessoal, espero que tenham gostado. Até o proximo post.

7 comentários:

PA disse...

Olha aew. Mais um post. Quanto aos memory leeks, nada que um delete resolva ;)

Continue o blog. Estou acompanhando!

Anônimo disse...

Na verdade Java e C# não são baixo nível. Não a contato com a memória por exemplo.

P.S.: Seria bom falar sobre softwares que sejam multiplataforma e livres. Falar sobre software proprietário e pago é osso.

Átila Correia disse...

Na verdade quando falei baixo nível me referi ao fato de ser responsável por características do núcleo do jogo, em nível de desenvolvimento. As linguagens de script, por exemplo, fazem parte do alto nível (implementando características do game play). Quanto aos softwares proprietários, infelizmente eles dominam o mercado mundial. Vc tem que estar preparado para isso. Os grandes cases de jogos nao são feitos com Ogre + Gimp + Blender e sim com Unreal + Photoshop + 3DSMax, por exemplo. Por sinal, já postei alguns tutoriais de blender, e os de photoshop são perfeitamente convertidos para Gimp.

Obrigado pelo comentário.

Anônimo disse...

legal o post, bem informativo!
acho que faltou so comentar sobre os memory leaks em linguagens como java, por exemplo, onde o programador nao tem acesso direto a memoria.

Mauricio Nunes disse...

Olá Atila, beleza ?
Um detalhe que me chamou muito a atenção é quando você diz sobre o desempenho de java em relação ao C++. Em alguns testes de beachmarks feitos, mostrou que java é superior a C++. Infelizmente não me lembro o site que isso foi feito. Mas posso afirmar com certeza que foi a época em que C++ era superior a java em desempenho.

H_DANILO disse...

Sinto muito afirmar, mas um código bem feito em C++, é impossível JAVA supera-lo em desempenho, a começo JAVA é uma Virtual Machine, ou seja, não tem ligação direto com o OS, precisa passar por um outro validador(o Virtual Machine) para então ir ao OS. E não é Beachmark, é Benchmark.

Bruno Monteiro disse...

Muito bom!

continue com o blog[2]
tambem estou acompanhando. ;)