Bem uma grande duvida que tenho e acredito que não sou o único com essa dúvida. Pretendo seguir carreira como programador de games e uma grande duvido que nunca consegui tirar é que qual seria a melhor linguagem para tal situação java ou c++?
Qual vantagem de um sobre o outro?
Se por acaso haver um jogo feito em c++ consigo reproduzir ele igualmente com a linguagem java ?
Apesar de conhecer muito pouco de C++, posso garantir que, para games, ela possui muito mais bagagem do que Java. API’s como DirectX e OpenGL, são poderosíssimas em C++.
Até existe, se não me engano, uma implementação da OpenGL em Java, mas se quer programar games, vá em C++ sem dúvidas.
Outra coisa, rapaz: existe a engine Unity3D, que suporta scripts escritos em C# e Javascript. Se quiser começar a ver como as coisas funcionam no desenvolvimento de games, recomendo demais que você baixe-a e fique fuçando um pouco.
wldomiciano2 likes
Sim. Vc poderá reproduzí-lo. A única questão fica por conta da performance, mas isso varia muito e não é totalmente certo que C++ será superior a Java, pelo menos não em toda e qualquer situação.
Com qual vc tem mais afinidade? Se vc já conhece Java e não tem interesse em gastar tempo aprendendo outra linguagem, dá uma olhada no LibGDX, que é um framework para criação de games para várias plataformas; e na jMonkey que é uma engine completa.
Se aprender outra linguagem não for um problema, a dica do @matheus.cirillo é excelente, pois a Unity é bastante popular e tem muito material pra te ajudar a aprender. Lá vc usa o C# que tem sintaxe muito parecida do Java e não terá dificuldade em dominar as particularidades dela.
A respeito de C++ eu penso que se vc está apenas iniciando agora, talvez seja um pouco frustrante, por conta da complexidade da linguagem e que se vc escolher ferramentas como Unity, GameMaker, LibGDX e afins, poderá criar seus prototipos funcionais do seu jogo em menos tempo e com isso ficará mais motivado a continuar aprendendo. Ai, quando já tinhar manjando melhor sobre o que é desenvolver jogos e como eles funcionam será mais tranquilos ir pra C++ e experimentar ferramentas como o Cocos2d-x, que é um framework para jogos ou mesmo uma engine completa como a Unreal 4.
Diz aí qual linguagem vc já conhece e que tipos de jogos pretende desenvolver.
Bons estudos!
O
OtavioCapel
Olá wldimiciano, Eu já acredito que posso dizer que sei bem o básico de java e de c#, porém nunca estudei o c++ e sempre ouvi dizer que para games C++ dava uma expansão maior que o java. Bem pretendo criar jogos online do estilo RPG e Action para desktop e quem sabe muito em breve games para mobile. E sei que para mobile me falaram que é java puro programar games mobile. Mas minha dúvida é qual entre essas linguagens ( c++, c# , java) vale mais a pena investir para programar em games?
wldomiciano1 like
Minha visão e opinião é de alguém que também tem interesse, mas sem experiencia pratica no assunto.
Acho que o que acontece com C/C++ e a industria de games é que ela é a linguagem usada para construir ferramentas usadas para criar jogos. Por exemplo, A Unity que indicamos é programada em C++; o LibGDX e o jMonkey foram construidas usando bibliotecas escritas em C. As engines usadas para criar grandes titulos como Unreal, CryEngine, Source, etc… são em C++.
Então temos a seguinte questão: Vc quer programar jogos ou as ferramentas para fazer jogos? Tem interesse em saber como as grandes engines funcionam por baixo dos panos ou seu vc quer mais é atingir o usuario final com jogos divertidos e cativantes?
Se quer mesmo desenvolver jogos, incluindo para mobile, e já conhece o básico de C#, vale a pena baixar e experimentar a Unity. Porque vc não baixa, brinca por uma semana, tenta fazer algo simples como um clone de pong ou flappy bird e depois tenta outra ferramenta, ve com qual se dá melhor.
Jonathan_Medeiros2 likes
Bom dia!
Tenho exemplos de jogos desenvolvidos na linguagem Java utilizando os recursos da Biblioteca LibGDX, caso tenha interesse em dar uma olhada, são dois projetos de jogos, o Space Invaders e Flappy Birds, neles são aplicados vários conceitos, e o código está todo comentado para facilitar o entendimento.
Bem eu sou mais apaixonado por games mesmo, meu foco é mesmo em programar games mesmo. Já tenho a engine Unity baixada, mais com ela só e possível programar em c# né então tende a se pensar que c# é bom para se criar games também .É isso? E a Unreal ela aceita quais linguagens?
TerraSkilll3 likes
Você está focando demais na linguagem. Como os colegas falaram, faça jogos simples pra entender como as coisas funcionam e depois vá testando bibliotecas e engines, pra ver qual te agrada mais (nem sempre vai ser a mais completa).
Se você não tem experiência, não recomendaria nem começar pela Unity. Comece com uma ferramenta simples de 2D (Construct 2, libGDX, Love2D, SFML, Phaser, Cocos2D) e faça jogos pequenos, para pegar os conceitos básicos (que podem ser aproveitados nas demais engines).
A Unreal usa C++ e BluePrints (uma “programação visual”). Mas ela é extremamente complexa e pesada, e pode te desanimar pela curva de aprendizado. Não recomendo tentar começar por ela.
Abraço.
O
OtavioCapel
Vou começar por esse modo que você me sugeriu. e na criação de jogos 2D vou usar java mesmo. Obrigado
Eu estou no mercado de Games há vários anos. A dica que eu dou é: a menos que você esteja fazendo um jogo para Android, esqueça o Java para games. Ele é simplesmente uma das piores plataformas para se fazer esse desenvolvimento. Os motivos são vários:
a) Não possui nenhuma plataforma madura para desenvolvimento. A JMonkey está a anos luz da Unity ou da UDK
b) Não dá garantias de realtime. Será difícil livrar o game de glitches causados pelo garbage collector;
c) Não tem sobrecarga de operadores. Classes matemáticas são simplesmente traumáticas de se usar na linguagem, e elas são muito usadas em games.
d) Tem suporte a pouquíssimas plataformas. Nenhum console, nenhum portátil, nenhum dispositivo móvel. Cuidado, Android e JavaSE são duas plataformas diferentes.
e) Não tem suporte a praticamente nenhum dispositivo “gamer”: volantes, joysticks, óculos de VR, etc…
f) A comunidade de jogos em Java é pequena, formada por alguns loucos aficcionados que insistem na linguagem. Mas há pouco apoio da indústria, nenhum apoio da Oracle, e pouco interesse.
Se você quer começar com uma linguagem mais tranquila, não perca tempo. Siga a dica do colega e parta para o C# com a Unity. Há muitos cursos bons (como o da Udemy, ou vários tutoriais na UnitStore), muitos livros e a linguagem é similar ao Java. A Unity também conta com um enorme arsenal de ferramentas e uma comunidade gigante, com diversos plugins e add-ons para baixar.
A Unity também tem suporte a criação de jogos 2D.
Além disso, é a plataforma mais usada na área de jogos no Brasil, o que garante que você terá mais empregabilidade na área no futuro, se você realmente quiser investir na carreira.
O C++ também é uma opção interessante. Mas, a menos que você queira ser um programador de engines algum dia, ninguém usará C++ “na unha”. Se esse é seu caso, comece pela UDK e, em paralelo, vá estudar a fundo computação (padrões de projeto, alocação de memória, algoritmos, etc). Mas para fazer engines, pode esperar no mínimo uns 3 ou 4 anos de estudo, após a faculdade terminar.
javaflex1 like
Concordo plenamente Java ser uma das piores, totalmente fora de cogitação a plataforma de execução de aplicação Java para games.
ViniGodoy
Isso também explica porque praticamente não existem games grandes feitos em Java. Existe uma ou outra exceção.
Mesmo o Minecraft, foi portado pra outra plataforma quando precisou sair do PC. O que mostra que realmente escolher Java foi um enorme vacilo.
E detalhe que aqui estamos flexibilizando. Pois a plataforma J2SE sequer dá suporte ao OpenGL. Estamos considerando “Java+LWJGL”, que é uma lib nativa que roda fora da plataforma e que, não necessariamente estará em todos os dispositivos onde o Java roda.
Palmerio_Julio
Falou tudo, e me tirou uma grande duvida, programa um jogo em C++ na “tora” vai custar muito tempo e dedicação e não vai ser produtivo, a não ser que se tenha uma grande equipe, porém como já estava estudando C++ vou continuar e terminar de ver o material que tenho, até porque a maioria das linguagens vem de C e assim por diante.
Agradeço o esclarecimento.
pfk66
Seu jogo vai rodar aonde?
Não tem muito sentido discutir qual melhor linguagem para games pq a plataforma que pretende suportar é que decide qual linguagem vai ter que usar.
A JVM não é uma plataforma para games (jars são facilmente pirateados/descompilados) por isso não vejo muito sentido em usar Java pra isso.
juliomarcos
Sim, é fato, C++ é a linguagem alto nível mais rápida que existe se você tiver como investir todo o tempo que ela necessita. E realmente, se existe alguma parte da sua aplicação que não precisa de todas as garantias que uma linguagem como Java te dá, vá em frente, use o C++. E você nem precisa escolher exclusivamente uma ou outra. Por ex, a libgdx faz uso de algum C++ https://github.com/libgdx/libgdx/blob/master/gdx/jni/android/AndroidGL20.cpp por exemplo (tá certo que aqui é mais uma questão de integração).
Mas invocando aqui o famoso e importante princípio de Pareto, usar C++ nos pontos críticos e em todos os outro uma outra linguagem menos perigosa é o ideal. Um outro ponto é que C++ tem problemas com tempo de compilação que até hoje os membros de seu comitê tentam resolver, confira esta apresentação https://www.youtube.com/watch?v=IA14LXnBcJg (em inglês) para saber como eles estão pensando em resolver este problema através do sistema de módulos.
Respondendo a sua segunda pergunta: Dependendo do jogo sim. Para um AAA certamente não. Mas você pode chegar bem perto. Geralmente o problema vai se dar no gerênciamento de memória, frameworks java como Libgdx lidam com isso muito bem tirando da responsabilidade do Garbage Collector o gerencimento de coisas comumente grandes como texturas.