Uma das áreas que certamente conquistam a atenção de milhares de pessoas são os jogos de computadores. Algumas jogam casualmente: no intervalo do almoço, algumas horas durante a noite, ou num game-boy durante uma viagem. Outros podem ser considerados “profissionais”, adquirindo controles caros, e passando horas e horas em extenuante treino para manejar cada um dos 12 botões de seu controle.É natural que desenvolvedores de software, sejam eles jogadores casuais ou profissionais, queiram tentar desenvolver seus próprios jogos. Muitos o fazem por hobby, outros profissionalmente e, a grande maioria, por pura paixão.
Neste espaço, procurarei trazer semanalmente alguma coisa sobre desenvolvimento de jogos de computadores.
O que a programação de jogos de computadores difere da programação convencional?
Produzir um jogo de computador é muito diferente de produzir um software comercial. Primeiramente, o time precisa ter talento artístico – seja para produzir um bom enredo, música ou gráficos. Por conseqüência, os programadores desse time devem poder trabalhar facilmente com esses elementos, seja desenvolvendo gráficos mais avançados, filtros de áudio, ou dando vida a personagens com inteligência artificial para que obedeçam a uma trama não-linear.
Talentos como refatoração do código, padrões de projeto, trabalhar em equipe e bons conhecimentos técnicos ainda são necessários. Entretanto, dependendo da área que atue o profissional outros requisitos também podem ser necessários, tais como:
- Matemática e física: Como calcular o campo de visão do personagem? E saber se a bola colidiu com uma parede? Ou mesmo qual é a trajetória de um míssil? Matemática e física são essenciais em jogos.
- Inteligência artificial: Encontrar caminhos, tomar decisões, agir de acordo com a situação, aprender. A inteligência artificial tem grandes aplicações em jogos, ao tentar atribuir ao computador um comportamento humano.
- Computação gráfica: Além da matemática e física envolvendo gráficos, é necessário também conhecer as APIs gráficas, os conceitos envolvendo cores, aplicação de texturas, organização da tela, iluminação, entre outras.
- Redes e sistemas distribuídos: Mais e mais importantes com o aumento de jogos do tipo massive multiplayer online.
- Otimização: Reduzir o espaço consumido na memória e aumentar a velocidade do jogo enquanto mais e mais funcionalidades são adicionadas é um desafio comum a todas as equipes de grandes jogos de mercado.
Do contrário do que possa parecer, jogos têm pouquíssimas threads. Muitos fazem pouco ou nenhum uso de tecnologias de bancos de dados.
Fazer uma faculdade de informática é realmente necessário?
Absolutamente necessário? Não. Fortemente recomendável? Sim. Numa faculdade de ciência da computação todos os pontos acima serão abordados. Se você ainda não fez, preste especial atenção nos tópicos já citados. Também não fuja das disciplinas de algoritmos, C++, estruturas de dados, sistemas operacionais e projetos de sistemas (UML).
Uma faculdade de engenharia elétrica ou da computação também pode ajudar na parte da física e matemática, além de ensinar uma boa noção de lógica e da arquitetura de computadores. Se seu interesse principal é colocar corpos em movimento, fazer cálculos de respeito, ou mesmo otimizar software, pense com carinho nisso. E como bônus, você ainda aprende a fazer seu próprio joystick.
E as outras disciplinas? Embora muitas disciplinas não sejam ênfase no desenvolvimento de jogos, tais como compiladores, banco de dados ou mesmo administração de empresas, preste atenção nelas também. Muitas vezes a solução de diversos problemas está no bom entendimento nos conceitos de base. E quanto mais conhecimento você tiver, e mais variado ele for, mais fácil será encontrar um bom tema para um jogo.
Pós-graduações, mestrados e doutorados também são ótimas idéias. Várias faculdades possuem pós-graduações em computação gráfica, inteligência artificial e redes. O Unicenp, em Curitiba, também possui uma pós-graduação específica em desenvolvimento de jogos para computadores.
Fala Vinícius!
Muito legal sua iniciativa de postar suas experiências sobre o desenvolvimento de jogos. É uma área que me fascina e espero um dia poder fazer algo mais.
Parabéns pela iniciativa!
Abraço!
Me interessei pela pós de desenvolvimento de jogos, já tô quase fazendo as malas !
Quero mergulhar de cabeça na programação de jogos.
Olá! Muito legal o seu blog.
Tenho uma pergunta: O fato da minha formação ser em Engenharia de Controle & Automação (mecatrônica) pode dificultar minha entrada no mercado de desenvolvimento de jogos? Por ser uma engenharia, os conceitos de física que aprendemos são bem avançados, o que é uma vantagem para a área. Porém, coisas como algoritmos, C++, estruturas de dados, sistemas operacionais e projetos de sistemas (UML) ficam a desejar. Mas eu estudo todos esses conceitos como auto-didata e tem dado bons resultados.
Depende muito de que área você queira atuar, já que a indústria tem campos bem vastos. Você já está estudando os conceitos, o que é realmente ótimo, mas não se engane: o mercado exige profissionais da área.
Seria bom você tentar uma pós-graduação, como a das Faculdades Positivo, aqui em Curitiba. Aí você sente o quão bom está sendo o seu auto-didatismo, além de conhecer muita gente ligada ao setor.
Você está realmente a frente na física e matemática, e são áreas realmente espinhosas e um nicho que você certamente pode aproveitar. Muitos programadores fogem de áreas como essa. Você também deve ter visto hardware. Já pensou que pode trabalhar na indústria de hardware de jogos?
Eu não estava somente brincando quando falei que você poderia desenvolver seu próprio controle.
Agora, o duro é que no Brasil a indústria de jogos ainda não é muito desenvolvida. O que resulta em pouca oferta de emprego e, quando encontramos, salários são baixos, tanto pelo fato de terem muitos interessados, quanto pelo fato das empresas existentes serem na maioria pequenas e médias.