Livro sobre programação de jogos para celulares (J2ME)

Existe um livro muito bom chamado J2ME Game Programming (primeira edição).

J2ME Game Programming

Capa do livro

Escrito por Martin J. Wells, o livro é bem completo e explica em detalhes como programar celulares utilizando Java. Além disso, é uma excelente fonte de técnicas para programar jogos 2d (incluindo trigonometria, cenários, raycasting, isometria e uma infinidade de temas interessantes que podem ser aplicados para outros ambientes…).

O livro pode ser adquirido através da Amazon (apenas em inglês).

Apesar de ser um bom livro, possui algumas desvantagens tais como revisão mal finalizada e humor excessivo em alguns pontos, mas que não alteram o valor do conteúdo do livro.

Atualmente ele possui duas edições: a segunda edição é a mais atual (voltada para o MIDP 2.0 e a primeira para o 1.0.

Bons estudos.

Share/Save/Bookmark

3 comentários November 30th, 2008

A importância de ter foco para estudar programação de jogos

Hoje venho falar de um assunto muito importante: foco.

Foco é de extrema importância na vida (seja na execução de um trabalho difícil, nos estudos ou paciência para persistir) e principalmente para quem está estudando programação de jogos.

Um exemplo que aconteceu comigo: antigamente eu pesquisava diversos tutoriais sobre programação de jogos em geral (sobre diversas linguagens e tecnologias), dava uma lida por cima e guardava comigo.

Isto acabou me ajudando ??? Sim e não…

Sim pois acabei juntando uma boa biblioteca pra pesquisar e que me ajuda a resolver alguns problemas que eu possa ter no futuro.

Não pois sinceramente não “aprendi direito” deste jeito. O simples fato de ficar “apenas na pesquisa” não me deu o tempo necessário pra praticar. Resultado: não dá pra abraçar o mundo, é melhor focar em algo (quando estamos aprendendo) do que querer ver e fazer tudo o que tem de novo, interessante, etc.

Então baseado no que eu passei, segue abaixo algumas dicas para você ter foco e não se perder nessa longa caminhada:

  1. faça um objetivo por vez (lembre-se que o conhecimento se constrói em cima de conhecimento, logo existem temas que você estuda que dependem do conhecimento e domínio prévio de outros temas, aprenda a detectar isto e corra atrás…);
  2. faça uma lista do que você precisa estudar (vou dar um exemplo mais abaixo de uma lista que estou utilizando) e foque um assunto por vez, dedique alguns dias & semanas para cada assunto e você verá seus conhecimentos evoluindo;
  3. Se quiser aprender a fazer jogos pra web, aprenda flash ou silverlight mas não os dois… Quer aprender a fazer jogos 3d com alguma API? Foque ou no OpenGL ou no Direct 3d (mas não nos dois (pegaram o espirito…). Quer aprender alguma linguagem? Escolha uma e foque sua energia nela;
  4. Mais uma vez: conhecimento se constrói em cima de conhecimento. Para se ter conhecimento deve se ter uma base sólida que você consegue estudando e focando (no início). Depois fica mais fácil passar este conhecimento para outros ambientes;
  5. Ouvir músicas que não distraem muito ajudam na hora de concentrar e focar no problema em mãos.
  6. Façam exercicios: ajuda a manter o corpo e o cérebro saudáveis facilitando a resolução de problemas difícieis e a capacidade de concentração (para focar é claro).

Mais um exemplo: no item dois comentei a respeito de fazer uma listagem de coisas a fazer e a estudar, atualmente possuo um rascunho do que eu estou fazendo (pode não ser a lista mais completa, mas me ajuda a saber o que eu quero, o que preciso focar, o que ja sei, etc…).

  • C++
  • templates
  • classes (incluindo construtores, de cópia e destrutores)
  • namespaces
  • ponteiros e referências
  • sobrecarga de operadores
  • herança
  • polimorfismo
  • STL
  • friends
  • game loop
  • controle de fps
  • sprites
  • tiles
  • background scrolling
  • menu básico
  • detecção de colisão
  • boudingbox (plane exclusion)
  • esfera
  • triângulo
  • intersecção entre dois segmentos de reta
  • matemática
  • seno & coseno
  • tabelas lookup
  • vetores
  • matrizes
  • matemática de ponto fixo
  • geometria
  • algebra linear
  • fisica
  • gravidade
  • velocidade linear (um pouco mais complicado do que parece)
  • friccao
  • balistica
  • leis de newton
  • network
  • ai
  • pathfinding

Quando digo por exemplo para focar em uma tecnologia & ambiente é porque com o passar do tempo de estudo você já terá uma certa familiaridade com ele e não perderá mais tempo fazendo inicializações, enfrentando problemas diversos de adaptação. Com isso conforme for estudando novos assuntos, poderá facilmente aplicá-los na sua base ja existente (acelerando o aprendizado e permitindo que você foque no novo material).

É claro, a maioria das técnicas aprendidas (incluindo as mais avançadas que você só aprendeu por persistir e ter foco) podem ser aplicadas em outras ocasiões e ambientes (então o fato de você focar em um ambiente trouxe vantagens ao invés de desvantagens, pois permite uma adaptação mais rápida para novos ambientes e conceitos).

Conclusão

O que eu quis mostrar aqui é que a falta de foco pode atrapalhar bastante nos estudos. No geral é melhor ter um pássaro na mão do que dois voando.

Sintam-se a vontade para ler e deixar suas dicas também.

Share/Save/Bookmark

4 comentários November 13th, 2008

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



Página 1 de 212»


Novidades e Atualizações

Categorias

Posts Recentes

Tags

Veja Também

Comentários Recentes

Parceiros

Links