Pular para o conteúdo
Início » Artigos » C++, C#, Java ou Flash? O dilema de um futuro programador de jogos

C++, C#, Java ou Flash? O dilema de um futuro programador de jogos

Existem n linguagens de programação no mundo. Todas elas tem potencial para criar um jogo, mas a qualidade do mesmo vai depender do foco da linguagem. Num dá pra criar um game complexo num Clipper, mas eu poderia simular um jogo da velha. E hoje existem linguagens que são ideais para quem pensa em desenvolver games.

Sou formado em Sistemas de Informação e já trabalho com programação há cerca de 4 anos, sendo que já mexi com Delphi, Java e agora mexo com Visual Basic. Ultimamente ando tentando estudar Game Design e Desenho Artístico, mas to chegando a conclusão de que eu tenho de me focar em algo que eu já tenho mais facilidade e algo que é mais rápido. Então a palavra programação volta a rondar a minha cabeça e vi que pode ser mais fácil entrar na indústria se eu souber uma das linguagens “populares”.

Só que dentre essas linguagens, há 4 alternativas interessantes que estão em ascensão atualmente: C++, C#, Java e Flash (esta última uma plataforma. A linguagem é a Action Script). A escolha delas também depende do foco do profissional: é mais difícil criar um game num Applet Java e publicar na Web. O Flash pode ser ideal nestes casos. Em empresas médias e grandes, a demanda está sendo no C++. Pra celulares, o Java. Tem também o C# correndo por fora, já que pode ser que no futuro existam oportunidades pra criar games para a Xbox Live Arcade. Aí complica. 4 linguagens com potencial. E não dá pra estudar todas ao mesmo tempo.

Vou listar algumas vantagens de cada uma:

C++ – é a mais usada no mundo dos games, a maioria das melhore engines free e vagas são em cima desta linguagem. Isso para games 3D. Como este ano podem surgir novos estúdios de desenvolvimento vindo de fora, saber bem esta linguagem pode ser bem interessante e pode dar chances ao programador de entrar nesta área. Óbvio que o nível pra entrar numa empresa como a Ubi é muito alto e o cara tem de saber muito bem, além de ter alguns tech-demos no portfólio. Das 4 linguagens, é uma das mais difíceis de aprender.

Java – linguagem boa para servidores e mobile. Para games de celular, é a melhor alternativa, além de que muitas empresas de mobile tem no Brasil e já tem algumas empresas nacionais que criam conteúdo mobile para fora. Das 4 linguagens, para mim seria o ideal, por já ter conhecimento prévio e por já ir direto para celulares. Além de que existem, muitas oportunidades boas para sistemas comerciais em cidade grande e até conseguir um emprego em gamedev, já ter experiência na linguagem e viver numa cidade grande pode contar pontos para a vida profissional.

Flash – pra quem tem site de internet, criar conteúdo online e já ganhar dinheiro com publicidade é uma boa alternativa. Ainda tem serviços como o Kongregate, onde dá pra enviar games e ganhar alguma grana com isso. Além disso, saber bem Flash pode ser interessante também pra arrumar emprego em empresas criadoras de conteúdo multimídia, como sites interativos para clientes, além de games de treinamento para clientes.

C# – A Live está aí e saber em C# (com o XNA) pode ser interessante. Mesmo que o profissional não saibam bem o XNA, saber C# pode ser interessante pra arrumar emprego. Pra mim seria ideal também, já que a semelhança da sintaxe com o Java é evidente.

Se vocês perceberam, estou num problema grave. Se eu escolho C++, vou demorar pra caramba pra ficar decente. Se eu escolho Java, em pouco tempo posso voltar a estar bom na linguagem e passar pra mobile pode ser interessante. De Flash como tenho blogs posso ganhar dinheiro com publicidade. E ainda tem o C#, onde posso começar a estudar a qualquer momento caso a empresa queira começar um sistema novo. Se eles quiserem que eu aprenda o C#, facilita já que posso estudar em ambiente de trabalho e com isso estudo o XNA por fora, no meu tempo livre. É claro que quanto mais ferramentas você conhecer, melhor. Mas estudar muitas linguagens pode não ser muito interessante: você sabe “mais ou menos” de muitas e não sabe “muito bem” de nenhuma. Uma empresa quer alguém que “saiba muito bem” e pode ter oportunidades para todas as linguagens. Basta ter sorte e o cara saber a linguagem que a empresa precisa.

Independente da linguagem, a palavra de ordem é: tenha demos no portfólio. Assim dá pra atestar o conhecimento do profissional naquela linguagem e já ter experiência em desenvolver games.

16 comentários em “C++, C#, Java ou Flash? O dilema de um futuro programador de jogos”

  1. Se voce observar as ofertas de empregos no Gamasutra todas levam a C++. E se voce refletir sobre a Linguagem de grandes titulos, como Metal Gear, Final Fantasy, Metroid também chegará a C++. Sinceramente, voce tem talento. E trabalharia facil num game AAA. Mas com outras linguagens ficaria bem dificil abrir as portas para games desse tipo. Quem sabe C e depois C++ sabe qualquer coisa, pois tudo parte da Logica da Programacao. Eu pessoalmente tenho que trabalhar com uma e estudar outra. 😉

  2. Eu acho que o cara precisa de experiencia com programação de jogos, a linguagem é o de menos para um programador de verdade.

    O mercado de jogos para consoles e PC é dominado por C/C++ mas vale lembrar que esse mercado é tão segmentado que o cara acaba fazendo coisas muito especificas. Acaba trabalhando só com uma engine especifica, ou então fica apenas tool developer fazendo ferramentas de apoio a produção, só faz inteligencia artificial, só faz networking em jogos de rede, etc. A linguagem fica sendo menos importante do que esse conhecimento especifico em alguma área do grande universo de gamedev.

    Se você tiver no currículo um jogo completo, mesmo que simples, duvido muito que vão se importar se foi feito em Java ou Python, vão é ver a condição real e experiencia com alguma programação de jogo que você tem.

    Entre um programador C e um programador de jogos (seja qual for a linguagem) talvez seja mais interessante ser um programador de jogos.

  3. Olha, depois de trabalhar um pouco com jogos, não tenho dúvida de que a melhor opção é C++. Há várias razões, mas a principal é que você nunca vai conseguir fazer qualquer coisa com uma linguagem só, e sair do C++ para as outras linguagens de mais alto nível (Java, C# e ActionScript) é bem mais fácil que o caminho reverso.

    Mas eu também concordo com o Vinícius: a experiência de "como fazer um jogo" do início aop fim é mais importante que saber linguagem X ou Y. No fim, linguagens não passam de ferramentas, como um alicate ou uma chave inglesa.

  4. Cara, eu acompanho seu blog já faz um tempo e estamos situações bem parecidas: trabalhando com aplicações comerciais mas desejando estar fazendo jogos por aí. A linguagem onde tenho mais experiência é Delphi e junto com uma galera (mais experiente do que eu) estou começando a fazer um joguinho 2D. Conforme o projeto vai avançando estou comprovando o que o pessoal já citou acima: ao se desenvolver um jogo, a linguagem é uma pequena parte de todo o processo. Existem muitos outros conhecimentos necessários para se fazer um jogo, conceitos matemáticos que já estavam enterrados lá no sótão da memória etc. Como não tenho muito tempo disponível, optei por seguir este caminho mais suave: fazer o jogo em Delphi mesmo (e diga-se de passagem, Delphi é muuuito mais tranquilo do que C++). Assim vou pegando experiência sem perder o ritmo e com menos obstáculos. Mas já estamos escrevendo o código de forma a poder portá-lo mais facilmente para C++ num futuro.

  5. Aprenda qualquer linguagem. Aprenda-a BEM. Saiba otimizar nela, saiba os truques dela, e faça um jogo nela. Ninguém liga se é em BASIC ou em ASM, jogadores querem sim, um jogo legal.

    E sei do que estou falando: já fiz jogos e programas em C, C++, C# (XNA), Pascal, Assembly, Visual Basic, Delphi, Blitz3D, BlitzMax, Actionscript, Java, J2ME… dá tudo na mesma. Com exceção para jogos AAA, onde o desempenho (em tese) é no talo, e aí não tem como fugir de C++, ASM (sim, ASM!) e programação de shaders.

    E o melhor: depois de você aprender uma lingua, aprender a segunda, a terceira… é mole.

    Agora, fazer jogo não tem nada a ver com aprender uma linguagem. Você tem que saber uma linguagem, tem que saber a usar engine (2d ou 3d), saber usar APIs de som/música… e saber a fazer jogo. Coisa que só se aprende fazendo mesmo, não tem jeito.

    Quer coisa simples, mas que dá um trabalho danado? Faz um adventure-texto, que não requer sons, gráficos, nada.

    Tem que fazer um parser para reconhecer os comandos, analisar verbos, substantivos, implementar os comandos (pegar, largar, falar, andar, etc) – e tem que fazer toda a lógica da coisa: mudar de uma "sala" para outra, mostrar descrições de cada uma, implementar todos os objetos e seus usos em situações específicas… só pra começar!

    E pra deixar o gostinho… lembro de uma MicroSistemas, um texto do Renato Degiovanni, onde ele publicava um adventure texto… desenvolvido em linguagem BATCH! (Sim, apenas com um .BAT do MSDOS, ele fez um sistema de adventure-texto completo!)

  6. "Aí complica. 4 linguagens com potencial. E não dá pra estudar todas ao mesmo tempo." -> Dá sim… Agora só falta Flash. =p

    "Independente da linguagem, a palavra de ordem é: tenha demos no portfólio. Assim dá pra atestar o conhecimento do profissional naquela linguagem e já ter experiência em desenvolver games." -> Essa é a maior verdade q vc escreveu.

  7. Concordo com o que a maioria escreveu. Mais importante é ter um jogo, acima de tudo. A linguagem se torna um detalhe dependendo da plataforma mesmo, pois nos jogos AAA o importante mesmo é a otimização e aí os conceitos gerais aliados com conhecimento da linguagem valem a pena (como já citaram aí em cima).

    Eu estava nessa dúvida um tempo atrás e acabei saindo do JavaME, que eu já conhecia e trabalhava, para GameMaker, XNA e Flash. Por falta de tempo eu acabei parando tudo, mas nos últimos dias estão começando a aparecer oportunidades de trabalhos em Flash e ontem eu comecei um curso aqui na empresa de Flash Lite (para celulares). Posso dizer que agora a plataforma foi quem me escolheu e não o inverso. 🙂

    Ah, quanto a ganhar dinheiro com Flash pode aguardar ainda esta semana uma compilação de matérias sobre o assunto que vou publicar no blog do IGDA Recife, o pessoal da lista anda trocando informações muito valiosas sobre o assunto. 😉

  8. C++ já tem muitos recursos, mas sinceramente não considero uma linguagem difícil, já o problema não é a linguagem, mas sim a desalocação de objetos da memória, uma solução legal para isto é usar uma das centenas de gabarge collectors existente para C++, pois o resto é igual a qualquer linguagem OO.

    Além que C++ + Eclipse é o céu.

    Mas você faltou falar de JavaFX que também é uma ótima linguagem para desenvolvimento de jogos, muito simples e útil por sinal.

  9. Nenhuma delas. O negócio é programar usando ASM. Recomendo o MASM pra programar jogos em DirectX. O compilador nunca gera código direito, prefiro eu mesmo gerar o meu.
    Se você programa em flash, é uma ótima plataforma.. se você é uma pessoa em contato com o lado feminino (ou seja é mulher, ou já pensou em ser).
    Vou indo JMP EAX

  10. Todas as dicas são bem úteis acima, concordo com o hell aí, C++ não é difícil o problema é que as pessoas confundem C com C++. C++ tem controle de baixo e alto nível, pra migrar pra outras linguans de alto nível é bem tranquilo se for o caso, a portabilibiliadade e produtividade de C++ é indiscutível, não é à toa que é a mais utilizada na indústria dos games.
    Eu faço Ciência da Computação e garanto uma coisa, nunca espere aprender tudo da faculdade, corra atras e e aprenda o quanto mais vc puder.
    Saber um pouco de várias linguagens é fácil, afinal fazer "console" é moleza, agora saber uma única linguagem a fundo é o mais complicado, depois aprender a programar para OpenGL e DirectX é indiscartável, uma vez que as grandes empresas de games buscam profissionais neste ramo de abordagem. Ou seja, corra contra o tempo!

  11. Olá pessoal,

    Concordo com o que a maioria registrou, a escolha da linguagem não é tão importante. Importante sim é dominar a que for escolhida. Eu trabalho com games já há cinco anos, desenvolvendo simuladores focados em treinamento utilizando o Action Script e também Java. Posso afirmar para vocês, o tempo e conhecimento dedicado para o desenvolvimento de apenas um deles, já seria suficiente para aprender qualquer uma das linguagens descritas acima. A fórmula é ter um idéia e baixar a cabeça para realizá-la. O Rodrigo usou uma palavra importantíssima, ainda mais para quem tem outra atividade em paralelo, o segredo está no FOCO!

  12. Tenho conhecimentos em C eu até fiz um joguinho bem simples com uso da SDL, trabalhei com C e allegro e também com JAVA como sofri em java por falta de conhecimento e experiencia.

    Na faculdade que estou fazendo de jogos estou desenvolvendo um game em python (não curti a linguagem), mas meu objetivo é aprender action script 3 e JAVA e trabalhar com casual games e advergames, se não me engano é o melhor nicho para trabalhar em questões nacionais

  13. A mano é melhor vc ficar com a plataforma mais difícil pois ela pode render mais lucros e é um nível melhor de conhecimento, investir no futuro sempre é uma boa alternativa (y)

Não é possível comentar.