Dicas para aprender a programar jogos - parte 2

Segue mais algumas dicas e conselhos interessantes para aprender a programar jogos eletrônicos:

  • Estude códigos fonte: esta dica é essencial, códigos fonte escondem verdadeiros tesouros, técnicas sendo utilizadas, estruturação de projeto, documentação, construções da linguagem, etc. Essas são algumas das coisas que você encontrará lendo um código fonte, mas o importante é que você verá a coisa na prática, verá o que é possível fazer (muitas coisas você nem terá idéia de que era possível). Gaste um pouco do seu tempo e estude códigos fonte. Futuramente farei um guia para auxiliar o estudo de códigos fonte;
  • Com o tempo de utilização e programação, você irá desenvolvendo sua própria biblioteca utilitária de funções (super importante) para melhorar a produtividade pessoal, pode ser um projeto teste ou apenas um arquivo que não compila mas é importante ir guardando esses pequenos pedaços úteis de código pois no futuro serão muito úteis (provavelmente se você tem o costume de ler códigos fonte já possui vários desses “nacos”);
  • No C e C++ o domínio de ponteiros é fundamental (mais do que parece, principalmente pelo C ser meio que uma linguagem de baixo nivel muito utilizado em programação de microcontroladores e dispositivos embarcados), para o inicante começar a entender e dominar ponteiros, o interessante é ele trabalhar com strings no C (vetores de caracteres) e principalmente: ESTRUTURAS DE DADOS (o pulo do gato para entender ponteiros);
  • C é uma linguagem pequena e concisa, C++ é uma linguagem mais complicada e possui um poder de expressão maior, mas ambas dão conta do recado no que se refere à programação de jogos eletrônicos. Estude as duas se possível (ou parta direto para o C++, não é necessário aprender C para aprender o C++ embora eu recomende), saiba os prós e contras de cada uma;
  • Estude estruturas de dados, veja o conceito, desenhe no papel o seu funcionamento, estruturas de dados são fundamentais para a organização de dados e o entendimento de diversos conceitos na ciência da computação, além disso, a implementação de listas linkadas em linguagem C e manipulação de vetores de chars serve como uma excelente prática de ponteiros;
  • Entenda como funciona o hardware de um IBM PC, se você pegar um livro de assembly e der uma “passada por cima” poderá ter um pouco dessa visão;
  • Estude sobre teoria geral de sistemas operacionais: saiba os conceitos envolvido no mundo dos sistemas operacionais em geral: threads, processos, escalonamento, saiba como seu sistema operacional organiza e permite o acesso à memória e dispositivos;
  • Não existe só C e C++ para programação de jogos, se você sabe os conceitos pode aplicá-los em outros ambientes e linguagens (celulares com J2ME), Flash para a Web, não se prenda a um ambiente, principalmente se você pretende programar consoles.

As dicas abaixo foram selecionadas e traduzidas de um artigo do site Gamasutra (http://www.gamasutra.com/features/20010117/abrash_01.htm). Eu separei as que achei mais relevante:

  • Os três segredos para o sucesso são:

1) Trabalho duro,
2) Trabalho duro, e
3) Trabalho duro.

  • Aprenda fazendo. Pensar é bom, mas a única maneira de você realmente aprender algo é fazendo você mesmo e finalizando, o que é mais difícil do que parece porque entregar software não é um ato natural (obrigado ao David Stafford por esta frase). Aceite a realidade: nenhum software será perfeito, e a perfeição é um alvo móvel de qualquer maneira. Faça as concessões necessárias e finalize o projeto;
  • Siga a sombra dos gigantes. Existem poucas idéias novas no mundo; leia o que os outros fizeram ao invés de ficar tentando inventar tudo você mesmo;
  • A maior parte do sucesso da programação se baseia na engenharia e integração e finalização e ser flexível, ao invés de pura invenção. Claro, é divertido reinventar as coisas, mas existe uma quantidade enorme de coisas que você precisa saber, então é difícil fazer tudo você mesmo. Além do mais, existe um monte de coisas legais para descobrir depois que você aprender o que já foi resolvido;
  • Aprenda o máximo de matemática que você conseguir. Então aprenda um pouco mais. A indústria está movendo dos generalistas, programadores fazem-tudo para programadores com grandes conhecimentos em áreas como física. Programar em si é fácil; é o expertise em áreas intensivas de conhecimento que irão diferenciar os programadores no futuro;
  • Seja paciente. Demora um ano para ficar competente em algo novo, três anos para se tornar um especialista;
  • Abrace as mudanças, ou assista elas chegarem e as deixe para trás. Aceite que os objetivos, técnicas, e regras irão mudar constantemente;
  • Faça um glossário dos termos que você desconhece, procure na Internet, livros, viu uma sigla e não sabe o que é Google ou Wikipedia nela :), aprenda a estudar.
  • Utilize toda informação a sua disposição.

Possui alguma dica interessante? Não deixe de enviar. Contribua para espalhar o aprendizado sobre desenvolvimento de jogos no Brasil.

Referências

Gamasutra

Share/Save/Bookmark

2 comentários July 15th, 2008

Dicas para aprender a programar jogos

OK, essa semana foi cheia e não deu para escrever nada, mas hoje cheguei na “seca” para postar alguma coisa. Então segue abaixo algumas dicas que eu tenho pra quem está aprendendo a programar. As dicas são independente de plataforma, sistema operacional, linguagem de programação, etc. Vamos lá:

  1. o primeiro passo para quem é totalmente iniciante é aprender lógica de programação, visite sites como www.apostilando.com e entre na seção de “Lógica de Programação” para baixar as apostilas;
  2. depois de baixar as apostilas , IMPRIMA-AS , leia com calma, atenção e FAÇA OS EXERCÍCIOS;
  3. nesta primeira fase não se preocupe em fazer saídas elaboradas ou coisas complicadas, o importante é aprender os fundamentos básicos de entrada-processamento-saída e como expressar suas idéias utilizando a sintaxe da linguagem escolhida (mas não precisa utilizar os recursos mais exotéricos da linguagem, concentre-se na lógica de resolução de problemas);
  4. ótimo, agora que você dominou o básico (sabe criar variáveis, arrays, funções, entrada e saída básica) podemos fazer alguns exercícios voltados para jogos:
    1. faça um jogo de adivinhação simples
    2. faça um jogo de quiz
    3. faça um jogo da velha
    4. faça um jogo de batalha naval
  5. Fez alguns dos jogos listados, ótimo. Não fez? Volte agora, você não possui experiência necessária para passar para a próxima fase;
  6. Comece a ler sobre tutoriais referentes a game loop (postarei um artigo em breve) para aprender o básico de animação e como é a organização de um jogo (se bem que você já terá uma idéia por causa dos jogos que fez);
  7. A partir daqui há diversas áreas e coisas para fazer, agora é com você. Calma, vou dar mais uma mão.

Segue algumas outras observações e dicas adicionais:

  1. o começo É CHATO E DIFÍCIL, você fará coisas que não são visualmente agradáveis mas TEM QUE PERSISTIR nessa fase. Quando você ver que estará progredindo as coisas começaram a esquentar e você ficará muito mais empolgado;
  2. PELO AMOR DE DEUS não incinte guerras sobre linguagens de programação, cada linguagem tem seus prós e contras, logicamente algumas são mais recomendadas para determinados fins do que outras mas o que importante não é a conversa. Esta na dúvida sobre qual utilizar? Pesquise um pouco mas acima de tudo PRATIQUE. Não fique na conversa mole. Não se apegue demais à uma linguagem, estude os conceitos e ponha eles em PRÁTICA;
  3. Com a prática, você comecará a entender as coisas muito melhor do que na teoria e aprenderá o que funciona para você, o que você deve melhorar, pesquisar, etc;
  4. Demorará ANOS até que você consiga realmente fazer jogos que se destaquem, sejam legais e sejam do jeito que você quer;
  5. Compartilhe o conhecimento;
  6. NÃO COMECE FAZENDO MMORPGS (não vou nem discutir o porquê :( );
  7. Grupos de estudo são bacanas, mas é extremamente difícil manter o grupo se tudo mundo não tiver um senso de colaboração (EXTREMAMENTE DIFÍCIL), no geral eu aconselho se você estiver iniciando, concentre apenas em você (esqueça os grupos de estudo se você não tiver a atitude adequada), faça as coisas você mesmo, não fique dependo dos outros, vá atrás. Eu particularmente vejo que alguns participantes de grupos de estudos não fazem nada e ficam esperando os outros fazerem, consequentemente não aprendem nada;
  8. Quando estiver estudando alguma assunto de programação que envolva uma sintaxe que você desconheça, abra o seu editor de texto e no momento que você ler a sintaxe, exercite sua “memória motora” escrevendo uma porção do código com a nova sintaxe (SUPER IMPORTANTE), mesmo que você esteja apenas copiando, você prestará MUITO MAIS ATENÇÃO E FIXARÁ MELHOR A MATÉRIA. Gostaria de ressaltar mais uma vez ISTO É SUPER IMPORTANTE;
  9. Engines NÃO FARÃO O SERVIÇO POR VOCÊ. Se você não conhece os conceitos básicos, não conseguirá fazar NADA ÚTIL OU INTERESSANTE e ficará ETERNAMENTE COPIANDO TUTORIAIS SEM ENTENDER O PORQUE. Algo do tipo: “me da um tutorial para fazer o personagem andar, me da um tutorial para fazer ele atirar”. PARE COM ISTO AGORA;
  10. Sites de universidades e faculdades possuem áreas de FTP e professores que possuem material de ensino rico, não desperdice essa chance. Visite por exemplo o site da USP ou qualquer outra faculdade e veja a grade curricular de um curso de ciência da computação;
  11. No geral, livros são MUITO MELHORES para aprender do que um tutorial. Se você tiver dinheiro para gastar, não pense duas vezes, COMPRE UM BOM LIVRO, geralmente vale cada centavo;
  12. Puxe diversos códigos fontes sobre jogos que você encontrar (IMPORTANTE), não precisa nem ser da tecnologia&linguagem&ambiente que você está acostumado. Você pode não entender tudo agora mas depois fará uma grande diferença. Isto nos leva para a próxima dica:
  13. ESTUDE os códigos fontes disponíveis. COMO? Simples: Abra um arquivo, leia com calma, veja o que o código se propõe a fazer, veja como as informações são organizadas, o layout dos arquivos. VOCÊ NÃO IMAGINA O QUANTO VOCÊ PODE APRENDER ASSIM (visite o site www.sourceforge.net para exemplo de projetos opensource, não apenas jogos);
  14. Uma última dica: não fique preso em ambientes, linguagens. Claro, especialize-se, seja bom em algo mas não fique cego para as alternativas, o mundo é grande, tenha cabeça aberta para aprender e não fique fechado. Não julgue algo que você não utilizou, não dê opiniões sem fundamento.

Algumas dicas são meio pessoais porque funcionaram comigo (mas lembre-se que se funcionou comigo não significa que funcionará para você, descubra o que funciona para você e boa sorte) e algumas eu escrevi mais de uma vez (porque realmente são importantes). Algumas frases&palavras eu escrevo em caixa alta com o sentido de destacar e não de gritar (conforme diz a nettiqueta). Se alguem se sentir ofendido peço desculpas de antemão, não foi a intenção.

Mas se for pra resumir tudo dou uma dica apenas: LEITURA E PRÁTICA (apenas leitura NUNCA, apenas prática NUNCA, os dois se complementam)
Se tiver alguma dica legal para passar não perca tempo, também quero saber.

Boa sorte em seus projetos e lembre-se: “A prática leva à perfeição”.

Share/Save/Bookmark

5 comentários August 14th, 2007

Dica aos iniciantes

Olá, você é um iniciante? Bem vindo a bordo.

Assim como você, muitos estão nesta jornada louca, mas não se desespere. Se você é novo tem tempo de sobra para aprender tudo o que é necessário para começar, se você é velho, nunca se é tarde para aprender então vamos começar.

Programação de jogos é muito difícil hoje em dia (não que tenha sido fácil no passado) tendo em vista que a expectativa dos jogadores em relação aos jogos está cada vez maior em todas as áreas (não é mesmo?). Logo, para alguém que está começando, o importante não é se apegar demais à tecnologia, APIS, etc e sim nos CONCEITOS. Os conceitos são aplicáveis em qualquer linguagem de programação, ambiente, etc e depois que você DOMINÁ-LOS poderá desenvolver jogos para qualquer ambiente.

Nos próximos posts estou preparando uma série de tutoriais que ensinará na prática diversos conceitos importantes para o iniciante poder efetivamente fazer um jogo tais como:

  • o gameloop
  • controle de frames
  • utilização de timers (com opção para retardar uma ação)
  • manipulação avançada de sprites
  • tile engines
  • matemática básica

Se tiver alguma sugestão interessante, agora é a hora de eu saber :)

Segure-se…

Share/Save/Bookmark

2 comentários July 27th, 2007




Novidades e Atualizações

Categorias

Posts Recentes

Tags

Veja Também

Comentários Recentes

Parceiros

Links