Archive for Abril 3rd, 2008
Jogos Educativos
Muito já foi dito e ainda será dito sobre jogos educativos. Eu já li discussões em Fóruns (muitas vezes bem calorosas), opiniões bizarras e já fui até em palestras sobre o assunto. O que eu quero aqui é expressar a minha opinião e você não precisa concordar comigo (e não deve!) mas como é interessante conhecer a opinião dos outros para as vezes complementar a sua ou até mudar, decidi fala tudo que eu já vivi nessa área tao controversa.
Primeiramente, devo dizer que tanto a Nintendo como a Sony e a Microsoft fizeram ótimos consoles e estão de parabéns, porém, o PlayStation e o Xbox são videogames baseados em “hardcore players“, ou seja, aqueles jogadores que preferem comprar 200 jogos e zerar todos ou ficar meses travado em jogos como Final Fantasy, já a Nintendo (principalmente com seus videogames Wii e Nintendo DS) se aproxima muito do que eu quero mostrar aqui. Portanto, não se sinta ofendido caso você não goste da Nintendo.
Antes de começar a falar de jogos educativos, quero diferencia-los de “jogos teletubbies“.
- Jogo educativo: É todo jogo capaz de acrescentar algo de diferente à vida da pessoa (que não seja tendinite, olheiras e notas baixas). Não se parece com nenhuma aula que você já teve mas pode ajudar no seu reflexo, raciocínio, memória ou até conhecimentos gerais.
- Jogo “teletubbie“: O que as pessoas costumam chamar de “jogo educativo”. Possui balõezinhos rosas que você deve estourar com bexigas d’água para acertar uma determinada soma. Quando você acerta um ser repugnante aparece e fala “uiiiiiii“
Agora que eu já diferenciei os dois, podemos começar. Um bom jogo educativo deve primeiramente agradar a você. Se você jogar e for capaz de dizer: “ahaa gostei, eu jogaria isso” então você está perto da fórmula. Outro ponto importante é que esses jogos não podem ter como enfoque a violência ou sexo. Depois de você jogar e gostar, deve analisar se aquilo treina alguma coisa em você e se o jogo vai aumentando a dificuldade de forma que você possa melhorar essa técnica. Agora vamos a alguns conceitos e curiosidades.
Algumas palavras sobre engenharia de software: Antes de começar a “adivinhar” o que você deve fazer, uma boa idéia é entrevistar seu público alvo. Escreva no papel algumas idéias que você teve sobre algum jogo que poderia ser interessante e veja se vai agradar esse público. Às vezes o que agrada você e seus amigos pode não agradar uma criança de 10 anos ou ainda agrada meninos de 10 anos mas as meninas odeiam. Pense bastante em jogos (eletrônicos ou não) que agradam ambos os sexos, exemplo: queimada, pega pega, damas, mario party, ragnarök, etc e analise quais as características de cada um. Queimada e pega pega possuem “competitividade” e “adrenalina”, já que você deve correr dos outros, desviar de bolas, etc. Damas inclui bastante raciocínio mas é um jogo simples e rápido. Você não precisa ficar horas e horas jogando. Mario party você joga com os amigos alguns mini jogos e vai andando por um “tabuleiro”. Ragnarök dá a possibilidade de casamento e uma boa personalização da aparência do personagem e para os meninos principalmente a possibilidade de builds diferentes dos demais. Então seu jogo deve englobar essas características importantes de cada jogo para ninguém ficar de fora!
Pensando sobre o que você quer treinar: O que você quer treinar? raciocínio? então esqueça o resto e se concentre apenas em raciocínio. Seu jogo não precisa ser de tabuleiro mas deve emprestar algumas idéias de jogos de tabuleiros para ser um bom jogo de raciocínio (exemplo, jogos de estratégia).
Definindo os personagens: Hoje em dia, as crianças estão muito “moderninhas” e portanto não vai funcionar um jogo com personagens “gays” ou “fofos” e caso seu público alvo inclua o sexo feminino não adianta colocar uma mulher bonita. Dependendo da idade de seu público, se preocupe caso seu monstro seja assustador demais.
Tipo de jogo: Tente não fazer jogos sobre algum esporte que pode ser praticado fora de casa. Seu jogo é educativo lembra? Não prenda as crianças dentro de suas casas sendo que elas poderiam estar fora praticando um esporte. Jogos colaborativos são sempre uma boa idéia.
Lembre-se, tem que ser LEGAL. Como eu já disse antes, um bom jogo educativo deve ser legal. Em uma mesa redonda que eu participei o ano passado (sobre jogos educativos), uma pesquisadora da USP estava contando das experiências com escolas públicas e o XO (“OLPC – one laptop per child”). Em uma das escolas, a idéia “brilhante” da professora era usar o laptop para passar redações a limpo… “meu, num rola!” esquece isso. Passar redações a limpo não é legal!
“Ah legal! Então por que não fazemos…”: Calma, antes de deixar a criatividade falar mais alto, tente implementar jogos já conhecidos como o Genius. Uma boa idéia seria poder colocar mais notas musicais e a pessoa poder escolher tanto a cor como a nota. Assim uma cor nunca poderá ser associada a uma nota especifíca.
Por enquanto é só. Breve o jogo Genius implementado =D
Add comment Abril 3, 2008
Reconhecimento de teclas no SDL
A primeira coisa que queremos fazer ao começar a programar um jogo é que nosso personagem ande! Para fazer isso é muito simples. Primeiro colocarei o código e depois vou explicar o que “ta pegando”.
void CPersonagem::teclas(SDL_Event evento)
{
switch(evento.type)
{
case SDL_KEYDOWN:
switch(evento.key.keysym.sym)
{
case SDLK_LEFT:
m_andar = true;
m_olhaesq = true;
m_olhadir = false;
break;
case SDLK_RIGHT:
m_andar = true;
m_olhaesq = false;
m_olhadir = true;
break;
}
break;
case SDL_KEYUP:
switch(evento.key.keysym.sym)
{
case SDLK_LEFT:
if(m_vx < 0)
m_vx = 0;
m_andar = false;
break;
case SDLK_RIGHT:
if(m_vx > 0)
m_vx = 0;
m_andar = false;
break;
}
break;
}
} Explicando bem superficialmente, quando você aperta uma tecla, seu computador recebe uma interrupção. O SDL interpreta essa interrupção em “evento.type”, ou seja, “o cara apertou alguma coisa?”. Caso tenha apertado, precisamos reconhecer essa tecla usando “evento.key.keysym.sym”. Depois de saber de que tecla se trata, basta setar algumas flags indicando para que lado o personagem está olhando e se ele deve começar a andar. Caso o usuário solte a tecla, o computador reconhece e você deve voltar as flags aos estados originais. Fácil ^^
Nota: Se você ficar atento, colocarei uma a uma todas as funções necessárias para você criar seu primeiro “jogo” << entre aspas heheheh
Add comment Abril 3, 2008
Bons livros
Se você, assim como eu, tem um pouco de autodidata no sangue vai querer informações de bons livros para comprar. Colocarei aqui os livros na ordem em que devem ser lidos e se você for bastante disciplinado e seguir a ordem de leitura corretamente será com certeza um bom programador. Faça sempre todos (ou a maioria) dos exercícios propostos.
http://www.livrariasaraiva.com.br/produto/produto.dll/detalhe?pro_id=369636&ID=C92DBC9D7D8031E172C220417
Bom livro, leia até sentir segurança com loops (ou laços) e estruturas de controle (se isso então aquilo senão aquele outro).
http://www.livrariasaraiva.com.br/produto/produto.dll/detalhe?pro_id=1388683&ID=C92DBC9D7D8031E172C220417
O autor fala demais então não se sinta traidor se quiser pular algumas páginas as vezes. Já existe a sexta edição (ensina Ogre 3D se não me engano) mas até o dia de hoje não encontrei em português. Caso compre, pule a introdução a orientação a objetos (se não me engano o capítulo 3) e pare quando começar o capítulo 6 (classes e abstração de dados). Passe para um livro de estrutura de dados que indicarei logo abaixo e então volte para o capítulo 3 e comece o capítulo 6. Daí leia até o final.
http://www.livrariasaraiva.com.br/produto/produto.dll/detalhe?pro_id=345881&ID=C92DBC9D7D8031E172C220417
Tenho quase certeza que foi com esse livro que eu aprendi estrutura de dados (não sei se mudou a capa ou faz muito tempo mesmo hehehe). Não se preocupe tanto com estruturas de dados muito complexas (como Arvores AVL, arvores B, etc) no começo. Aprenda as estruturas básicas e volte a estudar C++ começando classes.
http://www.livrariasaraiva.com.br/produto/produto.dll/detalhe?pro_id=466688&ID=C92DBC9D7D8031E172C220417
Livro bom e às vezes difícil de entender. Vai ser muito útil para você mesmo que você não use nenhum dos algoritmos diretamente (coisa que eu duvido muito). Tente aprender tudo.
http://www.livrariasaraiva.com.br/produto/produto.dll/detalhe?pro_id=164555&ID=C92DBC9D7D8031E172C220417
Livro de geometria analítica. Li e gostei, recomendo.
http://www.livrariasaraiva.com.br/produto/produto.dll/detalhe?pro_id=199389&ID=C92DBC9D7D8031E172C220417
Use este ou o seu livro do colegial. Já será de grande utilidade.
Não achei o livro de IA que eu queria
http://www.libsdl.org/
Nesse site você encontrará tudo, inclusive bons tutoriais (em inglês). Comece por este tutorial:
http://lazyfoo.net/SDL_tutorials/index.php
Muitos preferem Allegro
http://alleg.sourceforge.net/
Por enquanto é só ^.~
(pesquise os preços dos livros antes de comprar)
Nota: Caso você se sinta um pouco perdido na hora de criar classes, recomendo ler um livro sobre UML ou já baixar algum programa e aprender a fazer os diagramas sozinho mesmo hehe.
Add comment Abril 3, 2008
Dicas de um programador de jogos “hobbista”
Conversando com muitas pessoas (a maioria bixos aqui da facul) percebi que poucos sabem por onde começar para programar jogos. Como tudo que apresenta um bom resultado no final, programar jogos não se aprende do dia para a noite. Primeiramente quero diferenciar programar jogos de criar jogos de acordo com meus próprios conceitos. Quando eu digo “programar um jogo”, falo sobre programar de verdade, ou seja, criar função por função usando apenas uma linguagem de programação e uma biblioteca adequada. Criar um jogo (de acordo com o que eu penso) é como baixar o “The Games Factory”, “3D Game Studio”, “Dark Basic”, etc e se preocupar apenas com o resultado final. Nessa página eu pretendo discutir ambos mas principalmente a programação de fato. Pensando dessa forma, eu digo que para começar a programar jogos você precisa:
- Aprender uma linguagem de programação boa (normalmente C++ e às vezes Java)
- Estrutura de dados (aprenda o funcionamento básico e depois passe às bibliotecas padrões como STL no caso do C++)
- Conceitos básicos de física e matemática (mecânica clássica, algebra e geometria analítica serão de grande utilidade)
- Inteligência artificial fraca (como fazer um monstro seguir o personagem principal, por exemplo)
- Aprenda tudo (ou quase tudo) sobre uma biblioteca gráfica simples (eu uso SDL mas dizem que Allegro é melhor)
- Crie vários jogos usando essa biblioteca (ESQUEÇA 3D POR ENQUANTO). Você vai ver que mesmo sabendo tudo isso precisará de outras bibliotecas. Eu, por exemplo, quando fui programar um RPG precisei aprender como inserir XML.
- Escolha OpenGL ou DirectX e estude muito =D
Veja que esses passos são para um programador somente. Muitas pessoas (na verdade a maioria) querem aprender um pouco e já criar jogos complexos que normalmente levam meses ou anos para serem desenvolvidos com as melhores equipes do mundo. Esqueça isso, você provavelmente não conseguirá criar um Ragnarök e talvez não consiga criar nem um Tibia sozinho e caso consiga as pessoas irão perceber o quanto esse jogo é simples e provavelmente não jogarão. Concentre-se em aprender e criar joguinhos simples com gráficos ruins. Não faça projetos malucos de RPG’s complexos ou recriação do que já existe. Assim, um dia, você provavelmente estará em uma dessas equipes consideradas as melhores do mundo criando jogos clássicos imediatos ^^
Add comment Abril 3, 2008