Ponto V!

Home Mercado Carreira Ganhando Experiência
Bruno Crivelari Sanches
Ganhando ExperiênciaImprimir
Escrito por Bruno Crivelari Sanches

Vejo muitos desenvolvedores iniciantes com o dilema que atinge grande parte dos profissionais inexperientes do nosso país: conseguir um primeiro emprego. Nesse artigo pretendo abordar algumas idéias e dicas para o aspirante a desenvolvedor profissional de jogos e quem sabe ajudar alguns a conseguir o primeiro emprego.

Um fato é verdadeiro: as empresas querem apenas profissionais experientes e quando não exigem experiência, certamente vão dar preferência a aqueles que já têm experiência, em especial, nas tecnologias que ela utiliza no seu dia a dia.

Mas como um desenvolvedor recém formado ou que nem se formou ainda pode adquirir essa experiência? O desenvolvedor acaba caindo num paradoxo: “só consegue experiência trabalhando, mas só trabalha se tiver experiência”. Para resolver esse problema o futuro desenvolvedor de jogos tem algumas vantagens que outros mercados não possuem: Open Source e Mods.

Projetos Open Source

Projetos de código aberto acredito que não sejam novidades para a grande maioria: são projetos de Software criados e desenvolvidos por pessoas onde o código e toda tecnologia esta disponível na Web para quem quiser acessar. Geralmente qualquer pessoa pode baixar o código, fazer modificações e usar uma versão modificada, claro que enviar modificações para o projeto “oficial” geralmente possui certa burocracia, mas sendo uma alteração relevante ou desejada, feita com um mínimo de qualidade, certamente vai ser aceita pelos desenvolvedores.

Existem também projetos coordenados por empresas, como o Chromium, que é o projeto por trás do navegador Google Chrome, como qualquer outro projeto código aberto, qualquer pessoa pode participar, mas é preciso um bocado de dedicação para conseguir certo reconhecimento, confiança e permissão para submeter alterações de código diretamente.

Existem diversos projetos de jogos Open Source, basta escolher um e começar a ajudar!

O desenvolvedor que se envolver com um projeto desses vai ter uma grande oportunidade para ganhar experiência em um projeto grande, aprender a lidar com grandes volumes de código e em especial com código alheio, um dos muitos talentos que um bom desenvolvedor deve ter.

Ajudando num Projeto Open Source

Muitos projetos estão sempre a caça de desenvolvedores, mas assim como empresas, também preferem desenvolvedores com uma certa experiência. As vezes alguns projetos já estão com um time de desenvolvimento grande o bastante e rejeitam novos desenvolvedores pelos simples fato que eles não têm como gerenciar um grupo muito grande ou o projeto ainda não esta maduro o bastante para isso.

De qualquer forma, um desenvolvedor novato não pode esperar chegar num projeto de código aberto e achar que ele vai sair mudando ou fazendo o que bem entende, todo projeto possui certa burocracia e regras de trabalho (assim como uma empresa) e o ideal é que recém chegado procure se envolver com tarefas mais simples (e geralmente chatas, dependendo do caso) para ir se familiarizando com o projeto e a forma de trabalho. Eu particularmente recomendo procurar solucionar bugs simples no começo, bugs exigem que o desenvolvedor tenha que explorar um bocado de código para achar a solução.

É essencial no começo ver e aprender com os mais experientes, sem falar na necessidade de deixar o orgulho de lado e as vezes guardar as idéias para um momento oportuno. Com o tempo você vai ganhando experiência, entendendo os problemas do projeto e encontrando as melhores formas de propor suas idéias e sugestões. Mas o essencial é não querer chegar num projeto e tentar mudar tudo e as regras do jogo, isso certamente será visto com maus olhos pela comunidade que não vai aceitar boa parte das propostas, a não ser é claro no caso onde o desenvolvedor tem uma vasta experiência em determinada área do projeto e sabe mesmo como melhorar ele, mas, nesse caso, este artigo não tem sentido para você certo?

Sempre tenha em mente, em especial nos projetos que já existem há anos, que ali existem pessoas com anos de experiência naquilo e muitas vezes certas coisas que você encontra no código é devido a bugs ou funcionalidades que você nem consegue imaginar que existam, então é sempre bom ir aprendendo antes também de criticar algo.

Lembre-se: é muito diferente a reação de alguém com os comentários abaixo:

  • “Esse código esta horrível então mudei e fiz assim”
  • “Estou vendo esse trecho de código e não entendo porque foi feito daquela forma, porque não fazemos assim?”

Ambas as frases dizem a mesma coisa, mas de modos diferentes, mas apenas a segunda versão costuma ter uma recepção positiva.

Parte Social de um Projeto

Junte duas pessoas num mesmo ambiente e com os mesmos interesses que conflitos vão surgir, é inevitável, sempre em algum ponto as pessoas discordam de algo. Num projeto de código aberto isso ocorre e com certa frequência em projetos que estão iniciando.

Não se assuste em ver pessoas discutindo no fórum ou na lista de emails do projeto sobre como fazer ou o que fazer no projeto. Muitas vezes essas discussões são realmente “bravas”, mas em todos projetos que me envolvi raramente alguém faltava com respeito a algum colega, e quando isso ocorria rapidamente ocorria a intervenção de outras pessoas do projeto ou de um moderador.

Essas discussões são muito interessantes para que o iniciante possa também desenvolver sua capacidade de argumentação, essencial para discutir projetos no dia a dia de uma empresa.

Tendo Iniciativa

As vezes um projeto pode não ter uma determinada funcionalidade devido a ninguém até o momento ter tido paciência ou vontade de implementar ela, se você acha que é capaz de realizar a tarefa, proponha ela ao grupo ou faça um protótipo e mostre ao grupo, pode ser uma ótima forma de ser aceito ou ter um bom reconhecimento no projeto. Mas muito cuidado para não fazer algo que uma determinada pessoa já esta trabalhando, se informe antes com algum líder do projeto se aquilo é mesmo relevante ou se já não esta sendo feito por alguém.

Cuidado também para não sair criando funcionalidades enquanto o grupo esta focado em outras prioridades, como, por exemplo, corrigir bugs para uma versão que esta em fase final de desenvolvimento.

Entrando para o Time

Existem projetos, como já comentei, que a principio não aceitam desenvolvedores novos no time, apenas com recomendação ou pela pessoa ser conhecida de alguém, mas geralmente permitem que pessoas de fora enviem correções e pequenas alterações. Isso pode ser feito via e-mail para desenvolvedores ou através de alguma ferramenta.

O Ogre3D, por exemplo, aceita que pessoas de fora enviem correções e mudanças para o projeto, as mudanças enviadas ficam armazenados no sistema de controle de versão e algum desenvolvedor cedo ou tarde revisa ela e insere no código oficial. Apesar de ser mais trabalhoso do que ter acesso direto ao sistema de controle de versões, isso permite ao projeto ter um controle de qualidade dos desenvolvedores que eles ainda não conhecem ou não possuem experiência e ao mesmo tempo deixa um canal aberto para todas as pessoas participarem.

Se você passar a enviar alterações e correções com frequência isso vai demonstrar a equipe que você tem mesmo intenção de se dedicar ao projeto e cedo ou tarde vão lhe convidar a fazer parte do time oficial, sendo assim, procure participar sempre!

Ganhos de um Projeto de Código Aberto

Os maiores ganhos de um projeto de código aberto eu já mencionei, mas acho que vale frisar e mostrar outros ganhos:

  • Experiência de programação: esse é o principal e o maior foco da maioria, num projeto de código aberto o programador vai ter a chance de trabalhar numa base de código grande e madura, algumas vezes bagunçada ou com “cicatrizes de guerra”, o que se encontra em qualquer empresa de software.
  • Convívio Social com desenvolvedores: aqui o iniciante aprende a argumentar e discutir sobre como e o que fazer no projeto. Discussões como essas são comuns numa empresa e em especial numa comunidade de código aberto é essencial ter uma boa argumentação, pois não existe um chefe para decidir impasses.
  • Inglês: esse é apenas para nós Brasileiros, se você optou por um projeto internacional, vai ter também uma boa oportunidade para treinar o idioma, fundamental para ser um bom profissional da área.
  • Regras: projetos de código aberto sempre possuem regras, desde como deve ser o código a como você deve trabalhar, por exemplo, seguindo um processo para propor uma mudança, implementação e testes. Isso ensina o desenvolvedor a seguir outros estilos e não querer impor o seu próprio, além de preparar ele para se adaptar a diferentes rotinas de trabalho.
  • Controle de Versão: por menor que seja o projeto, ele vai usar algum tipo de controle de versão e vai ser uma ótima oportunidade para o desenvolvedor aprender a lidar com essa ferramenta fundamental para o dia a dia de um programador e completamente ignorada por todos os cursos que conheço.
  • Amigos e contatos: sim, num projeto desses é possível fazer novas amizades que podem vir a ser não apenas virtuais, além de fazer bons contatos e quem sabe receber uma oferta de emprego?

Mods

Os Mods são aquelas modificações a um jogo existente, desde apenas criar uma nova fase a um jogo a criar praticamente um jogo novo, envolvendo trabalho de artistas e programadores. Atualmente grande parte dos jogos possui ferramentas e incentiva esse tipo de trabalho e é comum encontrar grandes projetos de mods pela internet recrutando desenvolvedores.

Existem casos também onde Mods viraram jogos, um bom exemplo é o Counter Strike, que começou como um mod de Half-Life e hoje é um jogo individual distribuído e desenvolvido pela Valve Software.

Nos Mods também é possível a artistas, autores, game designers, etc, atuarem e não costumam ficar restritos a apenas programadores. Em geral, nos projetos de mod ou de jogos de código aberto existe uma forte demanda por artistas, então se você é artista e quer modelar e aprender técnicas dos grandes jogos, procure mesmo um projeto desses.

Outro fato muito relevante dos mods é dar oportunidade aos programadores de usar um motor 3d profissional, essencial para se conhecer os problemas que um motor precisa resolver e dar idéias para quem quer fazer o seu próprio.

Considerações Finais

No mundo afora existem uma infinidade de projetos, basta procurar aquele com o qual você se identifica e entrar em contato, pessoas interessadas e dedicadas são sempre bem vindas e ambos só tem a ganhar.

Com um projeto desses no seu currículo você certamente conseguirá se destacar em relação a pessoas sem experiência e ainda tem a vantagem de mostrar a um futuro empregador trechos de código de um aplicativo real e dizer que foi você quem fez!

Alguns Projetos

Aqui vou listar alguns projetos que acho interessantes e parecem que estão em busca de desenvolvedores:

  • Doomsday Engine: uma modificação ao motor original do Doom, deixaram o motor genérico a ponto de executar vários jogos sem mudanças e ainda utilizam diversos recursos gráficos modernos.
  • XL Engine: um projeto de motor 3d para execução de jogos clássicos como Dark Forces, Dagger, Blood
  • OpenTTD: uma implementação código aberto do clássico Transport Tycoon
  • Autonomous Vehicle Simulator: Um simulador de veículos autônomos, este projeto é do Kleber Andrade, autor do PontoV, esse projeto é interessante por estar bem no inicio assim é possível ir acompanhando a evolução do mesmo e quem sabe influenciar diretamente nisso!
  • Chien2d: Projeto de um motor 2d desenvolvido em C com SDL e OpenGL e possui diversos projetos de jogos desenvolvidos e em andamento, de autoria do Paulo V. W. Radtke, autor do PontoV.
  • Ogre3D: Projeto de um motor 3d, possui vários jogos desenvolvidos que o utilizam, incluindo jogos comerciais, livres, para consoles, etc. Para conhecer um pouco mais você pode dar uma olhada nos nossos artigos sobre Ogre3D clicando aqui.
  • OpenRails: Implementação em código aberto do Train Simulator e projeto que atualmente tenho colaborado quando sobra um tempinho.
  • Kangaroo Game Engine: este é outro projeto do Kleber Andrade, um motor 2d feito em XNA.
  • Ploobs Engine: A Ploobs é um motor 3d desenvolvido em XNA e é o projeto do Thiago Dias Pastor, também autor do PontoV. O Motor utiliza técnicas de renderização modernas e também esta em busca de colaboradores.

Além dos projetos acima que eu particularmente acho bem interessantes, tenho alguns projetos pessoais que andam devagar quase parando, mas qualquer ajuda é sempre bem vinda:

  • Phobos3d: um motor 3d baseado em Ogre com a intenção de experimentar técnica de implementação de gameplay, em especial design data driven e por componentes.
  • Wadlib: uma biblioteca para converter dados do Doom para formatos modernos, em especial as fases. Para maiores detalhes clique aqui.

Comentários (14)
  • Marcos Vasconcelos  - Otimas dicas
    avatar

    Realmente colaborar em projetos OpenSource é uma otima experiencia.

    E só mais uma pequena dica, podem colocar as contribuições feitas no curriculo também.

  • Kleber Andrade
    avatar

    Bem lembrado Marcos, isso é realmente importânte tanto na hora de procurar empregos relacionados como para a área acadêmica.

  • Thiago Dias Pastor
    avatar

    Gostaria de salientar os ganhos: Convívio Social com desenvolvedores e Amigos e contatos. Os outros voce ate pode conseguir sozinho, porem estes dois só se consegue participando de um projeto =P.
    Parabens pelas dicas.

    Aproveitando o ensejo, A PloobsEngine (Engine para XNA 3D Opensource) está em busca de colaboradores. http://www.bitabit.eng.br/2011/03/23/apresentando-ploobs-engine/.

  • Bruno Crivelari Sanches
    avatar

    Legal Thiago, adicionei o projeto na lista do artigo!

  • gokernel  - Curti.
    avatar

    Gostei, muito bom o artigo, são ótimas dicas que ajudam a crescer em conhecimento na área.

    gokernel
    gokernel@hotmail.com

  • Bruno Crivelari Sanches
    avatar

    Valeu gokernel!

  • Neto  - Outros...
    avatar

    O tmw tbm tá nesse barco, principalmente no lado do linux. Só que hj em dia ele se dividiu em 2 projetos o client e o sercidor (mana source) e o MMO em si. Pra quem quer criar o MMO do ano seria bem legal dar uma ohlada dos códigos o mana source é feito em SDL+opengl. Até pessoal

  • Bruno Crivelari Sanches
    avatar

    Valeu Neto!

  • Mauricio
    avatar

    Gostaria de estudar games para android!! porque acho que é o futuro
    tablets,smartphone etc.. enfim qual ferramenta vcs recomendam de facil aprendizagem!! estou estudando app. android e é no eclipse mas acho que pra games acho complicado..


    abs;;

  • Vinícius Godoy de Mendonça
    avatar

    Que tal começar lendo o tutorial de jogos do Android aqui do site mesmo?
    http://www.pontov.com.br/site/index.php/java/69-android

    Já damos recomendação de ferramentas ali. :)

  • Gabriel Reis
    avatar

    O link do Alegria2d está quebrado.

    Mas teria algum projeto open source, de preferência mas não necessariamente, em português em Android?

    É possível conseguir algum retorno com jogos indies em android? Tendo em vista a brasileira, mesmo achando mais fácill como a estado-unidense.

  • Vinícius Godoy de Mendonça
    avatar

    Sim, dê uma olhada na Slick2D.

    O mercado Android é mundial. Mas ouvi falar que o do iPhone é mais rentável.

  • Bruno
    avatar

    Então seguindo a lógica, para eu conseguir um emprego devo ter realizado algum feito notável? Seja colaborando em um projeto Open Source e sendo reconhecido, ou mesmo criando um Mod.

    Abs.

Escrever um comentário
Your Contact Details:
Gravatar enabled
Comentário:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):S:!::?::idea::arrow:
Security
Por favor coloque o código anti-spam que você lê na imagem.
LAST_UPDATED2  

Busca

Linguagens

Twitter