Você está na página 1de 8

Como eu comeo a programar games???

por Tommy Refenes( How do I get started


programming games??? )
Publicado em 07/01/2013 s 07:52:00 pm Texto Original: Tommy Refenes Originalmente publicado em: http://www.gamasutra.com/blogs/TommyRefenes/20130107/184432/How_do_I_get_start ed_programming_games.php Transcrio, Traduo e Edio: Caio Marchi < caiomga@gmail.com > @CaioMGA Transcrio: O post a seguir, salvo dito o contrrio, foi escrito por um membro da comunidade do Gamasutra. Os pensamentos e opinies expressas pertencem ao autor e no ao Gamasutra ou companhias afiliadas.

Eu me lembro, h uns 5 anos, de ter enviado um e-mail a uma professora do M.I.T. aps assisti-la falando sobre I.A. [ Inteligncia Artificial ] num especial da PBS. Eu verti meu crebro e mandei um e-mail para ela contando minhas teorias sobre desenvolvimento de I.A., como mquinas podem ser programadas para reconhecer ambientes, como emoes podem ser aprendidas atravs de experincia, etc. Eu gastei umas 4 horas escrevendo o e-mail porque eu senti uma conexo com o trabalho desta professora. Era um e-mail que me animei muito ao escrev-lo pois o assunto me interessava muito e eu queria encontrar algum com quem eu pudesse conversar sobre isso. Enquanto eu escrevia havia muita esperana de que ao faz-lo eu receberia algum tipo de resposta sobre o assunto, talvez caminhar rumo criao de mquinas de I.A. avanadas. Infelizmente, eu nunca mais ouvi falar dela... Eu nem sei se ela leu meu e-mail. Recentemente, devido ao Indie Game: The Movie e ao Super Meat Boy, eu recebo diariamente inmeros e-mails/menes no twitter/ perguntas no formspring de pessoas querendo conselhos. A maioria dos e-mails so de fs jovens pedindo conselhos que vo desde Que linguagem eu uso at Como eu coloco meu jogo no Xbox. Eu leio cada e-mail, mas eu nem sempre respondo porque isso tomaria uma boa parte do meu dia, sem mencionar que h pouca diferena entre os e-mails.

Eu me sinto mal de verdade quando no respondo porque eu sei que essas pessoas vem at mim querendo alguma luz sobre desenvolvimento de games. Eles esto fazendo o que eu fiz com a professora do M.I.T. alguns anos atrs. Eles esto interessados no que eu fao e querem saber como eu o fao, eles querem de alguma forma fazer parte do desenvolvimento de games. Bem, eu quero ajudar mas eu no tenho o tempo, o conhecimento ou o desejo de ser um professor ...ento c estamos. Este um FAQ para qualquer um que queira algum tipo de conselho sobre fazer games.

Por onde eu comeo a trabalhar na ideia do meu game dos sonhos?


Eu comeo pelo tipo mais comum de perguntas que eu recebo. Me parece que comear o maior obstculo pra muita gente porque eles no percebem que tudo, at mesmo os grandes games AAA por a, comea como nada e vai sendo construdo sobre si mesmo at se tornar o que est destinado a ser. Quando seu game dos sonhos est na sua cabea e voc toma o primeiro passo para cri-lo, isso pode ser desencorajador, ir de um estado de imaginao para um de implementao. Para algum que nunca fez um game, algo to simples como fazer um personagem se mover na tela pode parecer um obstculo enorme e pode rapidamente se consolidar como uma derrota desencorajadora. No tem de ser assim, o segredo comear pequeno. Super Meat Boy comeou como um quadrado com a imagem do Meat Boy nele. Mew-Genics comeou como um quadrado preto que se mexia na tela pra frente e pra trs. Goo! Comeou como crculos com uma carinha sorridente neles. Game 2 comeou como uma imagem vetorizada de um personagem. Tudo comea no nvel mais bsico e vai se construindo dali. de extrema importncia fazer as coisas passo a passo, um passo de cada vez. Se voc tentar criar seu game dos sonhos todo de uma vez s, muito provavelmente voc vai se sentir frustrado e derrotado. Se voc tenta criar o mesmo game em etapas menores, suas chances de realizar sua viso so exponencialmente maiores. Quebrar seu game em pedaos menores te fora a analisar e avaliar suas ideias em um nvel mais profundo. Isso essencial porque voc deve ser sempre receptivo mudanas, voc no quer se colocar num caminho onde no h retorno. Mudanas de planos podem produzir as partes mais interessantes do seu game. uma forma mais orgnica de desenvolvimento porque voc est pensando dentro do sistema do game e est aplicando novas ideias sobre ideias que j esto formadas.

Ento, d o seu melhor para quebrar suas ideias em pedaos pequenos que possam ser realizados facilmente dadas as suas habilidades. fcil ver progresso dessa forma, voc no se frustra to facilmente, e voc pode voltar a trabalhar de onde voc parou da ltima vez. Lembre-se que no h limite de tempo para lanar seu game ( se voc est comeando assim [ com um limite para o lanamento do game ], voc est em maus lenis). Aprenda no seu ritmo e trabalhe nos seus projetos como quem brinca com Legos...uma pea de cada vez. Para um exemplo mais detalhado, deixe-me falar como SMB [ Super Meat Boy ] comeou. Uma vez que eu tinha o quadrado com a imagem do Meat Boy, eu adicionei controles para que eu pudesse mov-lo para frente e para trs. Depois eu joguei com aquilo por um momento e fiz com que ele pulasse, ento eu trabalhei em como par-lo quando ele pisasse numa plataforma, depois eu trabalhei em como par-lo quando ele atingisse uma parede, depois fiz ele grudar nas paredes, depois fiz ele pular quando estivesse grudado na parede e eu pressionasse um boto, ento se ele atingisse um quadrado verde ele morria, e assim por diante at a ltima linha de cdigo de gameplay estivesse escrita e Super Meat Boy completo. Nenhuma tarefa muito pequena, nenhum progresso muito pouco. O importante no ficar frustrado e continuar trabalhando no seu game.

Que linguagem de programao voc recomenda?


Essa a segunda pergunta que eu mais recebo e, sendo honesto, eu no gosto dessa pergunta pois uma pergunta que eu no posso responder. Eu tento respond-la com um qualquer linguagem que voc esteja familiarizado. Eu no acho que isso responde pergunta das pessoas de maneira efetiva porque eu sinto que as pessoas querem uma resposta definitiva ou esto comeando agora e no se sentem confortveis com nenhuma linguagem. Eu vou elaborar melhor minha resposta para talvez ajudar as pessoas a entender como escolher uma linguagem que lhes sirva ou ajud-los a entender que usar uma linguagem que se domine a melhor forma de comear. Se voc est procurando um conselho sobre que linguagem de programao comear, no se preocupe com Flash roda no iOS? ou Xbox roda Java? ou XNA roda em Mac?. Seu objetivo nesse ponto inicial concluir um game, no lan-lo ou vend-lo. Estas questes so importantes quando voc tem de se preocupar com a entrega de um game, mas entregar um game muito mais fcil que terminar um. Voc pode se preocupar com a entrega do game depois. Encontre uma linguagem de que voc goste e comece a programar. No comeo

importante ter o mximo de recompensas possvel. Voc quer ter algo na tela o mais rpido possvel e construir partir disso. Voc quer ser capaz de editar o que voc criou e adicionar coisas facilmente. Recompensas instantneas so a chave para se manter motivado no incio. Provavelmente voc no vai querer aprender uma nova linguagem enquanto faz o seu game. Se voc tentar aprender uma nova linguagem enquanto cria um game, muito provavelmente voc gastar semanas lendo e no ter nada para mostrar a no ser conhecimento que voc ainda no capaz de aplicar a seu jogo. Isso pode ser muito desencorajador. Atenha-se ao que voc sabe, ou v pelo caminho mais fcil e confortvel possvel para adquirir habilidades que te permitam trabalhar no seu game. Logo, se voc sabe um pouco de flash, use Flash. Se voc usa C++, use C++. Se voc s sabe Java, use Java. No tem isso de a linguagem oficial do desenvolvimento de games. Lembre-se disso SEMPRE. Minecraft foi feito em Java, Super Meat Boy foi feito em C++, Farmville foi feito em Flash, outros games que as pessoas jogam foram feitos em HTML5, outros games foram feitos em cartes perfurados. Meu ponto : No importa. Encontre uma forma de fazer seu jogo, e faa-o. No leve isso como se eu estivesse tentando te desencorajar a aprender uma nova linguagem e trabalhar fora da sua zona de conforto. Uma vez que voc faz a coisa andar, voc vai querer sair da sua zona de conforto e aprender coisas novas se voc quiser crescer como desenvolvedor de games. Se preocupe com crescimento depois, neste meio-tempo estabelea uma base e comece a programar. Se voc no sabe nenhuma linguagem e est procurando um lugar por onde comear, eu recomendaria Flash, Game Maker, Unity ou algo similar. Todos esses programas tornam muito fcil colocar alguma coisa na tela rapidamente e tem uma curva de aprendizado bem pequena. Voc no precisa comear em algo como C++ se voc no tem experincia com outra linguagem de programao e est ansioso para comear a criar seu game.

Quais livros ou tutoriais voc recomenda?


H dois livros que eu recomendo, mas eles s so teis para desenvolvimento em C++ e no so para iniciantes. So eles Effective C++ e More Effective C++. Estes so livros mais avanados sobre C++ ento se voc no sabe C++, no pense que Oh eu preciso deles para fazer games. No, voc no precisa. Alm destes, no li outros livros. A forma como eu aprendo lendo a documentao de SDKs. No muito comum, mas como eu aprendo.

Eu recomendo ir online e procurar por tutoriais. A internet est cheia de programas-exemplo, sites de tutoriais como NeHe, etc. No h tutoriais que eu recomende, principalmente por eu no ter seguido nenhum. Mas eu sei que os recursos online so abundantes e variados. Tenho certeza que com uma ajudinha do Google voc pode encontrar exatamente o que precisa. Eu NO recomendo copiar e colar [ o cdigo ] dos tutoriais para fazer seu game. Voc no est aprendendo nada assim, voc est s copiando. Isso tambm vale para programas open-source. Eles so timos para se olhar, para estudar, e ter como referncia, mas no so meios de se fazer seu game para voc. Voc no ser um bom programador copiando e colando cdigo-fonte no seu game a menos que voc o compreenda completamente. No se trapaceie dessa forma, tome tempo e compreenda algo antes de us-lo.

Qual software voc usou para criar o game?


Eu sinto que esta pergunta feita por pessoas que acreditam haver uma ferramenta mgica que faa games para voc. Justia seja feita, h ferramentas que fazem muitas coisas da engine para voc. Se voc no est interessado em aprender uma linguagem de programao para construir uma game engine tente algo como Unity ou UDK. Eles tiram o trabalho pesado do caminho e te permitem ir l e criar seu game. H um custo, voc fica limitado ao sistema apresentado a voc por estas ferramentas. Estas ferramentas tm muitos componentes que foram bem construdos, estveis, e so incrveis, mas s vezes no faro exatamente o que voc quer. Pessoalmente eu no gosto de limitaes e eu gosto mesmo de colocar minhas mos na massa no desenvolvimento assim eu evito estas ferramentas e crio meus games a partir de cdigo que eu tenho escrito no decorrer dos anos. Isso no quer dizer que Super Meat Boy no poderia ser feito em algo como Unity. Ele poderia, de certa forma. Mas devido s limitaes, creio, no seria o mesmo game, no teria os mesmos controles, no teria o mesmo visual. A essncia estaria ali, mas o game como conhecemos no. Mas isso com voc. Novamente, isso sobre o que te deixa confortvel. Games incrveis foram feitos em UDK, Unity e outros...e games incrveis foram feitos sem eles. Eu uso Visual Studio para desenvolvimento, mas eu poderia facilmente usar Eclipse, ou Code Warrior, Xcode, ou Bloco de Notas e um compilador. Assim como selecionar uma linguagem de programao, no importa o que voc usa. Visual Studio o que eu estou acostumado. Eu no uso nenhuma das funes malucas que

ele tem, eu uso mais como uma forma de organizar meu cdigo-fonte, compilar e debugar. Muitos editores fazem isso. Para arte e animao, Ed [ Edmund McMillen ] usa Flash. Eu escrevi um exportador para as animaes em Flash porque era mais fcil do que criar ferramentas para o Edmund, e... novamente... Edmund est mais confortvel no Flash... ento por que brigar? Escrever aquela ferramenta significou aprender JSFL e trabalhar no Flash, mas era o que funcionaria melhor para o Ed e eu para o [ Desenvolvimento do ] Super Meat Boy. Voc no precisa do meu exportador de animaes para fazer seu jogo. Um dia eu oferecerei estas ferramentas a desenvolvedores, mas isso no vai acontecer por um longo tempo, ento no espere por elas.

Como me manter motivado para terminar o que eu comecei?


No h segredo em se manter motivado e no h nenhum conselho que eu possa dar para te manter motivado durante o projeto. No h um truque que eu use, ou uma mentalidade, ou lista de tarefas organizacionais, ou nada do tipo. Para que eu me mantenha motivado, eu tenho que acreditar e gostar do projeto em que eu esteja trabalhando. Se eu no gosto de trabalhar em algo, provavelmente eu no vou conclu-lo. Houve um game que eu comecei h muito tempo chamado Goo!. Eu trabalhei nele por dois anos, e terminou em lugar nenhum. No era minha ideia, no era um game que eu queria fazer, e por causa disso eu nunca pude faz-lo da forma que eu queria fazer. Eu parei de trabalhar no game e comecei a trabalhar no Super Meat Boy. O tempo trabalhado no Goo! no foi desperdiado porque eu aprendi muito sobre desenvolvimento, mas o game nunca seria terminado pois no era algo que me empolgava. O nico aspecto do game que me empolgava era a engine de fsica multi-thread e eu gastei quase todo o meu tempo nela. Foi importante eu ter trabalhado neste jogo pois me fez perceber que amar o game no qual voc est trabalhando torna mais fcil ter de trabalhar nele. a motivao ltima. Quando voc acredita e ama aquilo em que est trabalhando, difcil parar de trabalhar naquilo. Voc fica obcecado por isto, quer adicionar isso, quer torn-lo melhor, e voc quer mesmo v-lo terminado. Acreditar no que se est trabalhando trs algum brilho ao jogo terminado. Voc est mais propenso a gastar tempo extra em polimento, adicionando features que voc acha que tornam o jogo melhor, voc fica em cima mesmo e tem o jogo como seu.

Como eu coloco meu jogo na Steam/Xbox/PS3/WiiU/Sej l o que for?


Esta uma pergunta que ningum deveria fazer quando se est comeando ou se j existe um game sendo feito. Seu objetivo deveria ser Eu farei um bom game ao invs de Eu preciso coloc-lo na XBLA. O caminho para ter seu game em qualquer uma dessas plataformas de conhecimento pblico. No h um e-mail secreto, no h mgica para seu envio, no preciso conhecer ningum da parte dos negcios, o sobrinho de ningum trabalha nessas empresas e pode te conseguir uma reunio secreta, isso no existe. bem simples ser aprovado por qualquer uma dessas plataformas: Tudo o que voc precisa de um bom game. isso. A uma dura verdade que muitos se recusam a acreditar. J vi pessoas tentando achar Bodes Expiatrios em tudo exceto em seus jogos quando so enviado para serem aprovados pela Steam/XBLA/outros. Um bom game ganha ateno e seriamente considerado pelos donos da plataforma baseado nos mritos do game e uma pequena ajuda sua. Fale sobre seu game, fique animado com ele e se o seu game for bom e outras pessoas gostarem, o seu entusiasmo vai se espalhar para os outros. Se o seu game no bom, voc ter srios problemas tentando coloc-lo em plataformas de distribuio. Dedique-se em fazer seu game o melhor que puder, no foque em que plataforma voc o disponibilizar. Um bom game se vende sozinho muito mais do que destaque numa plataforma jamais vender.

E se eu terminar meu game e ningum o quiser?


Se voc trabalhou duro, e acha que seu game a melhor coisa do mundo e ainda assim no consegue nenhuma plataforma de distribuio, no entenda como uma derrota e um sinal de que voc deveria parar de fazer videogames. Muitos poucos marcam um home run com seu primeiro jogo. SMB foi o primeiro game que eu terminei, mas houve alguns

antes dele que deram em lugar nenhum. Em algum ponto eu estava h alguns passos de conseguir um acordo com a Sony idntico ao do fl0w e Everyday Shooter para o game que eu mencionei antes, Goo!. Uma mudana de gerncia no ltimo minuto (literalmente dois dias antes da verso final do acordo ser assinada) causou o cancelamento do game e a Sony nunca mais me procurou. O game no era bom e apesar desse acordo com a Sony havia uma chance de nunca ser terminado e uma grande chance de ser um grande fracasso. Doeu, ardeu, mas isso no me parou. No deixe esse tipo de problemas matar seu sonho. As pessoas podem pensar que seu beb feio...tudo bem. Continue fazendo games. Inspire-se em problemas e um dia, se voc tiver a fora para atravess-los, provavelmente voc realizar seu sonho.

Concluso
Faa seu game com apenas o que voc pode, comece pequeno e se preocupe com outras coisas depois. Linguagens de Programao e softwares so irrelevantes para se criar um game, ento escolha aquilo com que voc j esteja familiarizado ou aquilo que voc quer aprender, mas no sobrecarregue-se quando estiver comeando. Certifique-se de fazer progresso suficiente para se manter motivado e mantenha a frustrao nveis mnimos. Ame seu game, fale dele, fique obcecado por ele e ser difcil no trabalhar nele.