Carreira de desenvolvimento de jogos

Olá pessoal, eu tenho 16 anos e pretendo estudar programação para games futuramente, principalmente porque me interesso bastante por programação, gosto muito de jogos eletrônicos, como: Skyrim, Minecraft, BO2, Diablo III e assim vai, dos mais diferente gêneros, e também tenho bastante curiosidade e vontade de saber como os games são feitos, e muito futuramente, se der tudo certo, trabalhar numa empresa como a Treyarch, Bethesda, Blizzard, Mojang e ETC. :stuck_out_tongue:

Como muitos iniciantes, comecei com Game Maker, aprendi bastante com ele, fiz vários mini-jogos de RPG, shooters e uns joguinhos de corrida, mais precisamente eu passei 1 ano mexendo, e descobrindo o Game Maker, e quando fiz 16 anos mês passado, comecei a me dedicar a linguagem de programação.

Escolhi a linguagem java para começar, já assisti várias vídeo-aulas e já sei muita coisa considerada básica e fundamental na linguagem java, eu a escolhi por ser mais fácil do que c++ e por desenvolver jogos, digamos mais “leves”, ou seja, mais para iniciantes nesse ramo. Eu já sei os comandos principais do public class “nome do seu programa” { o public static void, como fazer uma janela vazia definindo seu tamanho, se é visível ou não, descobri e aprendi a mexer no MS DOS, compilar meus programinhas e ETC. Já sei fazer barra de entrada de dados, transmitir alguma mensagem, estou no momento aprendendo os tipos de variáveis String e int, e ai vai a minha grande dúvida:

Até agora não chegou em nenhuma parte de desenvolvimento de programas para jogos, melhor explicando: não tem muita coisa a ver com o que eu estava pensando que haveria, não sei se pretendo continuar aprendendo java. E minhas dúvidas são essas: Como um jogo como Runescape ou Minecraft, por exemplo, de grandes sucessos foram feitos no bloco de notas e compilados no DOS? Foram feitos assim mesmo, ou isso é só uma etapa na programação?

Pesquisando muito na internet e vendo muitos posts do fórum, descobri coisas chamadas IDE’s, e sei que as melhores são o NetBeans e o Eclipse, eu queria saber o que são elas, para que servem, se os verdadeiros jogos feitos em java são feitos por essas IDE’s, e se no nível que eu estou eu já posso baixar uma dessas e começar a aprender.

Obrigado pela atenção, e seria de enorme ajuda se alguém desse uma boa e decente resposta, pra que ver se sigo nesse ramo, nessa carreira e me tornar um excelente profissional no futuro.

IDE’s são softwares para facilitar o desenvolvimento, jogos como o Minecraft e o Runescape não foram feitos no bloco de notas, provavelmente usaram alguma IDE. Você pode baixar uma IDE sim e começar a desenvolver utilizando uma, mas o negocio é que nenhum programa é feito em Netbeans ou feito em Eclipse, eles são feitos em alguma(s) linguagem(ns) de programação, usando determinada IDE pra escrever o código. a IDE só serve para aumentar a produtividade. Você deve estar fazendo no bloco de notas e compilando no DOS pq nas video aulas que assistiu alguem falou pra fazer isso, e na hora de começar esse é o melhor caminho mesmo. IDE’s automatizam mta coisa e mais pra frente você pode ter problemas se não souber como funciona na marra.

Quanto a programação de jogos: você tem um LONGO caminho pela frente, e quando digo longo é realmente grande e árduo, você está vendo coisas bem básicas ainda e programação de jogos envolve conceitos bem avançados e muita coisa diferente do que você utilizaria em outros sistemas, mas se você realmente gostar de programar não desanime, uma hora você chega lá, é só n colocar os bois na frente da carroça, vá com calma.

A linguagem que você escolheu não é a melhor para jogos, a n ser que você faça jogos para Android, eu recomendaria você estudar C/C++ mesmo. Eu nunca programei nenhum jogo, mas acredito que games hardcore, como Skyrim e Diablo III usem C pelo menos já vi vagas para programador C++ no site da blizzard. Se for jogos para Android, Java é uma boa escolha.

se decidir ir para jogos mais avançados, aqui tem um site que acredito que vá te ajudar:
http://www.pontov.com.br/site/

Se decidir fazer jogos mobile para android, estude Java para android primeiro e depois eu usaria os livros da casa do código:
http://www.casadocodigo.com.br/products/livro-android
http://www.casadocodigo.com.br/products/livro-jogos-android

Como eu disse, eu não faço jogos, programo ha algum tempo, mas nunca fiz jogos então se quiser esperar alguem para confirmar o que disse, fique a vontade.

Assim como o colega falou acima, reitero!

Se você quer desenvolver games, o melhor é aprender C e C++. Java não dá liberdade alguma para o desenvolvedor gerenciar memória. Acesso a dispositivos como Placa de Vídeo, Placa de Som e afins é muito limitado, e muito difícil de ser feito.

Geralmente tem que ser feito um “xunxo” com outra linguagem que lide melhor com isso(como C ou C++), o que acaba te consumindo muita performance…

Enfim, gerenciamento de memória e acesso rápido aos dispositivos de I/O é a regra principal da programação pra games, e Java definitivamente não serve para esse fim.

Pra fazer games 2D, até alguns 3D pequenos, Java serve. Tem vários joguinhos interessantes desenvolvidos em Java, mas fica por aí…

Lembrando também que a área de desenvolvimento de games passa por várias subdivisões, onde geralmente existem pessoas muito especializadas em cada aspecto do game (Designers, modeladores 3D, animadores, programadores, etc.)…

É um longo caminho, é necessário entender muitos conceitos antes de realmente colocar a mão na massa. Mas te recomendo muito continuar estudando, principalmente C e C++, estudar arquitetura de computadores, sistemas operacionais, como tudo isso conversa e se entende…

E assim que terminar o ensino médio já começar uma faculdade na área, isso te abre muito a cabeça, principalmente se seu curso tiver disciplinas como Computação Gráfica, Teoria dos Grafos e afins…

:wink:

Tenha em mente que programar jogos é uma das carreiras mais difíceis no mundo do desenvolvimento. Tu vai ter que manjar muitas técnicas complexas e ser muito bom em física e matemática dependendo da área que vai seguir!

O mercado é bem restrito e no geral um desenvolvedor “business” vai ganhar melhor.(isso considerando o mercado internacional)

Acho importante salientar esses pontos pra tu estar ciente para não se arrepender no futuro. Eu mesmo sou viciado em jogar jogos, mas jamais seguiria uma carreira profissional em torno de jogos hehehe. Eu prefiro não misturar hobby com trabalho, já que o estresse, prazos a cumprir e etc pode fazer com que eu acabe deixando de gostar do meu hobby ehehe(inclusive na época em que eu estava pesquisando, um relato foi exatamente esse).

Cara, eu já programa ah quase dois anos, e comecei a aprender programação utilizando Java, na faculdade. E agora estou trabalhando com C#, que é muito utilizado para desenvolvimento de jogos pois existem algumas engines que fazem isso, como o Unity que suporta a linguagem C#.

Eu tinha, e ainda tenho, essa sua mentalidade de querer desenvolver jogos e tals, hoje eu até consigo desenvolver com Java, mas são jogos simples, acho que o jogo de maior sucesso em Java que conheço é o Minecraft.

Entenda uma coisa que eu entendi e isso me levou a estar no caminho certo: Programação é programação em qualquer área, tanto desde um sistema desktop para controle de estoque, até um jogo dos mais complexos que envolva muita inteligência artificial, o que muda são as suas maneiras de aplicação. Entenda que um jogo é desenvolvido por uma grande equipe, que vai envolver designers gráficos, roteiristas, desenhistas, físicos, gerentes e tudo mais. Uma pessoa dificilmente desenvolve um jogo plausível sozinho, é claro que existem muitos jogos legais feitos por uma pessoa só, mas é uma mosca branca de olhos azuis, digo isso pois um programador hard code dificilmente é bom em designer, nem deve ser (rsrs).

Bom, não desanime com o Java, mas antes disso você tem que aprender lógica, e como Java é uma linguagem orientada a objetos, você tem que estudar muito isso (Programação Orientada a Objetos), mas te indico dar uma olhada em Portugol, pois assim você vai treinar a sua lógica, é uma linguagem que você nunca mais vai usar, mas nunca vai esquecer a lógica, é em português e fica mais facil entender o que está acontecendo.

Os jogos “tops” (Skyrim, Diablo III) são em sua maioria feitos em C++. Além da indústria já ter muita coisa pronta para essa linguagem, é a única suportada por praticamente todos os consoles e portáteis.

Agora, a área de jogos se divide em dois grandes ramos:
a) Existe a produção de conteúdo de jogos, que não é uma carreira técnica, nem uma carreira de programação. Quem cria o conteúdo do jogo é o game designer, junto com um time de roteiristas, artistas, músicos, etc…

b) Existe a área de DESENVOLVIMENTO de jogos. Que é onde a programação está. Nessa área, você pode produzir o motor do jogo (como a UDK ou a própria Unity, que já citaram) e nessa área, a linguagem predominante é o C++. A própria Unity, que usa C# como linguagem de Script, foi escrita em C++. Na programação do jogo, também tem a parte de programação de ferramentas, tais como: editores de fases, partículas, otimizadores de meshes, entre outras coisas. É importante entender que num estúdio grande, muitas vezes um programador só programa o editor, sem nem saber exatamente para que jogos (ou que jogos) aquele editor será usado. É muito comum que o mesmo editor seja usado em vários jogos.

Se você REALMENTE quiser seguir pela área DESENVOLVIMENTO de jogos triplo A, eu recomendo FORTEMENTE que você não queime etapas. Ter interesse é ótimo, e começar a fazer seus joguinhos também, mas é FUNDAMENTAL que você faça uma FACULDADE em ciência da computação. Prefencialmente, após isso, faça uma especialização em jogos digitais (como a que dou aula, na PUCPR). Também será imprescindível saber falar inglês com boa fluência, uma vez que a maior parte das oportunidades para esse tipo de game está fora do país.

Como o pessoal falou, é uma das poucas áreas onde será fundamental ter um profundo conhecimento de como a computação funciona e de outras disciplinas como matemática, física e inteligência artificial. NÃO PEGUE cursos com enfoque muito grande em análise. Você terá que ser do time dos programadores hardcore.

Agora, fique ciente de que o programador de jogos deve programar os jogos que o ESTUDIO PRECISA, não necessariamente os jogos que ELE GOSTA. Nos mais de 6 anos que trabalho com games, já tive que desenvolver jogos educacionais, games para mulheres, games para crianças. Mesmo quando envolvido em games maiores, já tive que programar partes muito específicas, como shaders de vídeo ou ferramentas para carga de meshes com grande números de polígonos, sem ter a preocupação de saber exatamente para que games seriam aplicados. Você deve gostar do DESAFIO DE FAZER O JOGO, o que está totalmente desassociado de você gostar ou não de JOGAR O JOGO QUE FAZ. Até porque, não tem nada mais sem graça do que tentar jogar um jogo que você mesmo programou.

Vale a pena assistir também o programa onde dei uma entrevista sobre o assunto:

Eles não foram feitos no bloco de notas, e sim em ambientes de desenvolvimento como o Eclipse, IntelliJ ou Netbeans e também não foram compilados no DOS, pois o DOS não existe mais (você deve estar se referindo ao prompt de comando). Nada impediria, entretanto, que tivessem sido feitos assim mas, analogamente, nada impede que você use uma colher para cortar um pedaço de bife, certo? O ideal é usar a ferramenta adequada para o trabalho adequado.

Também vale lembrar que o Minecraft, apesar de desenvolvido em Java, roda sua camada de áudio, vídeo e entrada de dados em C++, através de uma biblioteca chamada LWJGL. E ainda assim, tem desempenho bem inferior a outros games similares feitos em C++. O Java é uma das piores plataformas para desenvolvimento desse tipo de jogo, não é a toa que existam tão poucos games feitos nele.

Finalmente, se quiser ver ambiente completos para jogos, dê uma olhada na Unity, UDK ou na Ethanon (para games 2D).

[quote=ViniGodoy]Os jogos “tops” (Skyrim, Diablo III) são em sua maioria feitos em C++. Além da indústria já ter muita coisa pronta para essa linguagem, é a única suportada por praticamente todos os consoles e portáteis.

Agora, a área de jogos se divide em dois grandes ramos:
a) Existe a produção de conteúdo de jogos, que não é uma carreira técnica, nem uma carreira de programação. Quem cria o conteúdo do jogo é o game designer, junto com um time de roteiristas, artistas, músicos, etc…

b) Existe a área de DESENVOLVIMENTO de jogos. Que é onde a programação está. Nessa área, você pode produzir o motor do jogo (como a UDK ou a própria Unity, que já citaram) e nessa área, a linguagem predominante é o C++. A própria Unity, que usa C# como linguagem de Script, foi escrita em C++. Na programação do jogo, também tem a parte de programação de ferramentas, tais como: editores de fases, partículas, otimizadores de meshes, entre outras coisas. É importante entender que num estúdio grande, muitas vezes um programador só programa o editor, sem nem saber exatamente para que jogos (ou que jogos) aquele editor será usado. É muito comum que o mesmo editor seja usado em vários jogos.

Se você REALMENTE quiser seguir pela área DESENVOLVIMENTO de jogos triplo A, eu recomendo FORTEMENTE que você não queime etapas. Ter interesse é ótimo, e começar a fazer seus joguinhos também, mas é FUNDAMENTAL que você faça uma FACULDADE em ciência da computação. Prefencialmente, após isso, faça uma especialização em jogos digitais (como a que dou aula, na PUCPR). Também será imprescindível saber falar inglês com boa fluência, uma vez que a maior parte das oportunidades para esse tipo de game está fora do país.

Como o pessoal falou, é uma das poucas áreas onde será fundamental ter um profundo conhecimento de como a computação funciona e de outras disciplinas como matemática, física e inteligência artificial. NÃO PEGUE cursos com enfoque muito grande em análise. Você terá que ser do time dos programadores hardcore.

Agora, fique ciente de que o programador de jogos deve programar os jogos que o ESTUDIO PRECISA, não necessariamente os jogos que ELE GOSTA. Nos mais de 6 anos que trabalho com games, já tive que desenvolver jogos educacionais, games para mulheres, games para crianças. Mesmo quando envolvido em games maiores, já tive que programar partes muito específicas, como shaders de vídeo ou ferramentas para carga de meshes com grande números de polígonos, sem ter a preocupação de saber exatamente para que games seriam aplicados. Você deve gostar do DESAFIO DE FAZER O JOGO, o que está totalmente desassociado de você gostar ou não de JOGAR O JOGO QUE FAZ. Até porque, não tem nada mais sem graça do que tentar jogar um jogo que você mesmo programou.

Vale a pena assistir também o programa onde dei uma entrevista sobre o assunto:

Sou seu fã KKKKKK

[quote=ViniGodoy]
Também vale lembrar que o Minecraft, apesar de desenvolvido em Java, roda sua camada de áudio, vídeo e entrada de dados em C++, através de uma biblioteca chamada LWJGL. E ainda assim, tem desempenho bem inferior a outros games similares feitos em C++. O Java é uma das piores plataformas para desenvolvimento desse tipo de jogo, não é a toa que existam tão poucos games feitos nele.[/quote]

Mas e para Android, você recomendaria o Java? Se sim, qual você diria que é melhor: Java ou C++?

[quote=Sem_Nome][quote=ViniGodoy]
Também vale lembrar que o Minecraft, apesar de desenvolvido em Java, roda sua camada de áudio, vídeo e entrada de dados em C++, através de uma biblioteca chamada LWJGL. E ainda assim, tem desempenho bem inferior a outros games similares feitos em C++. O Java é uma das piores plataformas para desenvolvimento desse tipo de jogo, não é a toa que existam tão poucos games feitos nele.[/quote]

Mas e para Android, você recomendaria o Java? Se sim, qual você diria que é melhor: Java ou C++?[/quote]

Cara, não existe uma linguagem melhor do que a outra, existem linguagens para situações. Não tem como, por exemplo, eu comparar Cobol com Java para saber qual a melhor.

Para Android, o Java. Embora o melhor talvez seja apostar num framework multi-plataforma e portar também para o IOS e Windows Phone.
Como o Haxe: http://haxe.org/

Mas isso, depende muito do quando você queira explorar os recursos do aparelho.

[quote=Matheus terra][quote=Sem_Nome][quote=ViniGodoy]
Também vale lembrar que o Minecraft, apesar de desenvolvido em Java, roda sua camada de áudio, vídeo e entrada de dados em C++, através de uma biblioteca chamada LWJGL. E ainda assim, tem desempenho bem inferior a outros games similares feitos em C++. O Java é uma das piores plataformas para desenvolvimento desse tipo de jogo, não é a toa que existam tão poucos games feitos nele.[/quote]

Mas e para Android, você recomendaria o Java? Se sim, qual você diria que é melhor: Java ou C++?[/quote]

Cara, não existe uma linguagem melhor do que a outra, existem linguagens para situações. Não tem como, por exemplo, eu comparar Cobol com Java para saber qual a melhor.[/quote]

Eu estava especificando para jogos. Como o Vini disse, para Windows o C++ é a melhor (pelos motivos ditos acima e outros motivos ditos em outros tópicos).

A minha pergunta era saber qual era a mais recomendada para jogos em Android (bem especifico).

Estou dando uma olhada nesse link. Você já chegou a utiliza-lo? E ele também é fácil de ser descompilado como o Java?

Não usei, mas quem conheço que usou falou muito bem.

Outro cara que está ganhando muita força em mobile é a própria Unity.

Me corrijam se eu estiver errado, nunca programei para android, mas o que já andei pesquisando é que ele tem várias camadas, uma delas é a em Java e XML que é para os aplicativos, que já li e ouvi dizer que seus aplicativos são feitos em Java e a interface gráfica é XML, mas que já existe uma grande gama de jogos e apps em HTML 5 e javascript para android.

Vou dar uma olhada no Unity também.

Obrigado pela atenção.

Sim, existem engines HTML5 que compilam para Android também. Um exemplo é a própria libgdx.

O que acontece é que os gráficos em HTML5 usam webgl, que é muito próxima da OpenGL/ES - presente nos dispositivos móveis.
No caso, para games, o comum é usar Android + OpenGL/ES.

Agora, infelizmente não posso opinar muito sobre engines para dispositivos móveis, pois não é o meu foco. Quem conhece mais sobre o assunto é o Marcos Vasconcelos (Marky). Outra possibilidade é vcs entrarem na comunidade de desenvolvimento do Ponto V no facebook e perguntarem por lá: https://www.facebook.com/groups/pontovbr/