Pure Pwnage

30 Abril, 2008

Pure Pwnage é uma série muito legal cujo assunto principal são games. Jeremy é um pro gamer fanático que conta com a ajuda de seus colegas Kyle, Doug, Dave e Tagi. Ao longo dos episódios são discutidos vários aspectos filosóficos dos games como a rivilidade entre as modalidades de jogos e entre pros e noobs.

Cada personagem da série segue um esteriótipo de gamer: Jeremy é obcecado por RTS (Real Time Strategy), Doug por FPS (First Person Shooter) e Tagi, namorada de Jeremy, joga o gênero MMO (Massive Multiplayer Online). O tipo de jogo que cada um joga reflete de alguma maneira a sua personalidade: Jeremy é totalmente estrategista e competitivo, Doug tem um comportamento agressivo e irracional, Tagi é humilde e joga por diversão.

Os primeiros episódios seguem uma linha baseada em pensamentos aleatórios sobre games e, após a série ter feito sucesso no youtube e no site oficial, os personagens passaram a ter poderes sobrenaturais e surgiram vilões para combater. Além disso, o enredo inclui várias piadas bastante específicas, muito engraçadas ao meu ver, que só quem tem uma certa noção de jogos consegue entender.

A seguir, vou citar alguns episódios que englobam bem os elementos de Pure Pwnage.

Episódio 2:

Jeremy decide entrar em terras desconhecidas ao sair de casa para investir em mulheres. É bastante interessante como ele usa conceitos do RTS como build order, rushing, micro, watching replays, etc para fazer várias piadas.

Episódio 6:

Jeremy volta a ver uma menina que ele tinha gostado no episódio 2. O pequeno detalhe é que ela joga MMO, o que choca ironicamente com o fundamentalismo dele por RTS. Depois, ela acaba marcando um encontro em um local desconhecido que Jeremy descobre posteriormente que se trata de um lugar em World of Warcraft. ;)

Para o restante dos episódios e maiores informações: Pure Pwnage


100 jogos em 10 minutos

26 Abril, 2008

Na minha opinião, e na de muita gente, Super Nintendo foi o melhor videogame já lançado. Talvez por ter sido o que mais joguei, ou porque todos os meus colegas tinham. Ou simplesmente pela quantidade de jogos incríveis. Muitos desses são clássicos e começaram e sua saga nesse console, ou pelo menos passaram por ele. Alguns exemplos são Super Mario World, Super Metroid, Final Fantasy, The Legend of Zelda, Donkey Kong e inúmeros outros.
Abaixo você pode ver uma compilação de cem jogos de Super Nintendo em dez minutos.

Dos cem jogos só consegui reconhecer quarenta e sete. Sei que não dava pra colocar todos os jogos só em 10 minutos (ou dava?), mais alguns muito bons ficaram de fora como Terranigma, Goof Troop e Illusion of Time.
Outros vídeo no mesmo estilo podem ser encontrados buscando por 100 games 10 minutes no Youtube.


Intermediate Game Tutorial 1

23 Abril, 2008

Resolvi começar essa série porque tem certas informações que eu realmente gostaria de ter recebido quando estava aprendendo a programar games. Digo isso pois a maioria dos tutoriais te ensinam a fazer um jogo de pong, fazer um boneco se mexer, desenhar coisas na tela, mas quando chega na parte boa, que é estruturar algo levemente mais complexo, todos eles acabam.

Parte I

A primeira coisa que me intrigava era como fazer as coisas acontecerem na tela, simultaneamente (e.g. como dar uma tacada em um jogo de sinuca e fazer todas as bolas se mexerem, colidirem e possivelmente serem mortas). Bom, a grande verdade é que as coisas não acontecem ao mesmo tempo.

O que acontece geralmente é que existe uma classe chamada Engine que reune todas as entidades do jogo e tem um método Run() que faz a mágica em questão. No exemplo do jogo de sinuca, as classes dentro da engine seriam: jogador, bolas, mesa, física, interface. Na tal função “faz tudo”, cada classe teria a oportunidade de executar seus métodos pertinentes.

Como exemplo dessa interação de classes, uma função que executa uma tacada:

// Executa uma tacada
Engine::ExecuteShot ()

   // Seta a velocidada da bola branca
   cueBall.SetSpeed(Player.Shot())   

   // Enquanto as bolas tiverem velocidade
   while (!Physics.Done(BallArray))

      // Para cada bola do jogo
      foreach (ball in BallArray)

         // Move a bola
         ball.Move()
         // Considera o atrito
         Physics.Attrict(ball)

         // Trata colisao com o buraco
         Physics.HoleCollision(Table, ball)
         // Toca o som da colisao
         Interface.PlayHoleSound(Physics.LastCollision())
         // Atualiza a pontuacao
         Player.RefreshScore(Physics.LastCollision())

         // Trata colisao com outras bolas
         Physics.BallCollision(BallArray, ball)
         // Toca o som da colisao
         Interface.PlayBallSound(Physics.CollisionArray())

         // Trata colisao com a mesa
         Physics.TableCollision(Table, ball)
         // Toca o som da colisao
         Interface.PlayTableSound(Physics.LastCollision())

      // Desenha mesa, bolas, pontuacao, etc
      Interface.Draw(BallArray, Player)

   return

Na prática, isso desloca as bolas em pequenas distâncias, verificando colisões com outras bolas, cantos da mesa e buracos. Em cada verificação, as velocidades das bolas são tratadas pelo módulo da física. Além disso, a classe interface é responsavél por tocar os sons e desenhar coisas na tela. Portanto, apesar do resultado final ser algo aparentemente simultâneo, a engine do jogo executa pequenos passos.

Vale lembrar que cada ciclo da engine, como o while do exemplo acima, é executado várias vezes por segundo. Pense, no caso da sinuca, que seriam feitos cerca de 40 frames por segundo (daí o motivo de se mover em curtas distâncias).

O objetivo dessa primeira parte é apenas mostrar como interagir as classes em alto nível. A maneira como cada uma das classes é composta e implementa os métodos não entra nessa discussão inicial.

Até a próxima…


A volta do N-Gage

22 Abril, 2008

Num passado muito distante, a Nokia tentou entrar na área dos videogames portáteis com o seu N-Gage. O aparelho era até interessante. Juntava celular, rádio, mp3, com um hardware decente para jogos. Porém o projeto não deu muito certo. Muita gente reclamava da falta de uma câmera, botões iguais ao de celular, o que dificultava muito a jogabilidade, alem da desleal concorrência com o Game Boy Advanced. E aquele Side Talking não convencia ninguém, parecia ser extremamente desconfortável conversar com a aparelho de lado e isso deve ter assustado muita gente.

O fato é que agora a Nokia resolveu relançar o N-Gage, porém não na forma de um aparelho, mas como um serviço. No site oficial da N-Gage, é possível baixar um aplicativo para o seu celular executar os jogos. Alguns já estão disponíveis para trial, como FIFA 08, e tem algumas boas promessas como The Sims 2 Pets e Brothers in Arms.

Aqui podes ser vista a propaganda do novo serviço, que é bem estilosa. Enquanto o jogo está carregando você pode jogar Arkanoid com a barra de loading. Depois, você vê um vídeo de um Snake com humanos em stop-motion, que ficou bem interessante. Pra finalizar você joga Arkanoid novamente com os personagens do vídeo.

Parece que dessa vez eles acertaram no serviço, e não é uma má idéia tem uma opção mais acessível que um PSP ou Nintendo DS.


The Incredible Machine

22 Abril, 2008

Alguém lembra de uma série da Tv Cultura chamada Rá-Tim-Bum, não o Castelo Rá-Tim-Bum nem a Ilha Rá-Tim-Bum, aquela que na abertura saia um ratinho da parede pra pegar um queijo o que ativava uma máquina que lançava um bolo na tela?

Eu sempre quis fazer algo parecido. Mas nunca tive engenhosidade suficiente e como eu nasci umas duas décadas atrasado, sempre perco os últimos lançamentos.

Leia o resto deste post »


Pygame Tutorial – Parte 1

21 Abril, 2008

Aqui começa a primeira parte do tutorial sobre Python e Pygame. Já falei brevemente sobre esse conjunto num post anterior, então vamos direto ao assunto.

Python pode ser baixado aqui, a última versão no momento é a 2.5.2. Já Pygame pode ser baixado aqui, tive problemas de desempenho com a última versão (provavelmente envolvendo a placa de vídeo), o que diminuiu muito a taxa de frames por segundos, então estou usando a versão 1.7.1, o que não prejudicará a portabilidade do código.

Pra quem já programou em outras linguagens, Python pode ser facilmente aprendida através do manual que vem na instalação (em inglês). Quem nunca programou também pode se dar bem com a própria documentação da linguagem, ou algum dos tutoriais do Python Brasil.

A primeira parte do tutorial e muito simples e aborda somente a inicialização do pygame e estrutura básica de um jogo. No próximo tutorial explicarei mais sobre janelas e mostrarei as primeiras imagens.

O código pode ser baixado aqui, devido a restrições de upload do wordpress, não é possível hospedar arquivos .py ou .zip e afins, logo basta remover a extensão .doc e usar normalmente.


Speed Runs

18 Abril, 2008

O post de hoje é uma homenagem a você que se considera o melhor jogador do bairro, da rua ou prédio e acha que por isso ninguém no mundo consegue te vencer. A grande verdade é que tem sempre um koreano ou americano nerd que faz coisas que você nem sequer imagina. De alguma forma, ele humilha os chefes, usa alguns bugs secretos, se esquiva de todos os inimigos de maneira extraordinária e tem a timeline completa do jogo na cabeça.

Difícil imaginar alguém fazendo tudo isso? Basta conferir o speed guide do seu jogo predileto (geralmente, para encontrá-lo basta digitar o nome do game seguido de uma tag tipo “speed”). Existem vários entusiastas desse ramo em que o objetivo é simplório: zerar o jogo com o menor tempo possível.

Dois sites que eu recomendo:

Leia o resto deste post »


Série Grow

18 Abril, 2008

Essa série de jogos foi criada a partir de uma idéia muito simples, porém genial. Você deve escolher itens numa determinada seqüência de forma que eles aumentem de nível e sejam capazes de cumprir um objetivo final. A ordem aqui é muito importante, pois cada item tem um nível máximo diferente, e alguns ajudam os outros a ficarem mais poderosos rapidamente.

Todos os jogos da série são fantásticos, aqui vão alguns que eu mais gostei:

Grow RPG:

Como todo bom RPG o seu objetivo principal e salvar o mundo. Pra isso você deve derrotar um dragão que não hesita em chamar aliados pra atrapalhar o seu caminho. Todos os elementos clássicos de um RPG estão aqui, algumas cenas de combate, itens a serem comprados, cavernas e castelos.

Grow Island:

Esse é um pouco mais difícil. Nessa ilha não há nenhum sinal de civilização, mas isso e facilmente contornável construindo alguns centros de pesquisa, incluindo Ciência da Computação. Além do final normal há um extra onde você vira um extraterrestre.

Grow Cube:

Semelhante ao Grow Island, porém aqui você trabalha para desenvolver um cubo.

No site da Eyezmaze há outros bons jogos, alguns não são da série Grow, como Dwarf Complete, Galves Adventure e Chronon, esse último eu ainda não consegui terminar.


O que fazer?

18 Abril, 2008

Uma das motivações para criar esse blog foi (tentar) criar alguns tutoriais sobre programação de jogos, principalmente para aqueles que nunca fizeram um jogo ou sequer programaram. Lembro quando comecei a brincar com essa área, tudo o que eu mais queria era que alguém aparecesse e falasse o que eu deveria fazer, qual linguagem usar, onde encontrar os recursos, dentre muitas outras dúvidas.

Existem várias linguagens de programação, como também várias A.P.I’s gráficas, e é difícil para o usuário iniciante escolher uma de fácil aprendizado, e que atenda suas necessidades.

Farei uma análise breve de algumas linguagens e bibliotecas que conheço, mostrando os pontos positivos e negativos das que já usei e conheço bem. Quero deixar claro que falarei baseado na minha experiência, que é bem limitada, logo é de se esperar que haja alguns erros ou incoerências. Tentarei deixar claro quando não tiver certeza sobre determinado assunto.

Leia o resto deste post »


0 stars speed run

16 Abril, 2008

Super Mario 64 com certeza é conhecido por muita gente aqui, e marcou (pelo menos pra mim) a entrada dos videogames na era 3D. Perdi muitas horas para coletar as 70 estrelas necessárias pra passar da escada sem fim, que era um tanto assustadora por sinal. Nunca imaginei que esse jogo seria mutilado dessa forma e, até algum tempo atrás, sequer sabia que era possível zerá-lo pegando nenhuma estrela.

Na verdade só e possível tecnicamente. Nenhum humano com apm abaixo de 200 consegue fazer isso. Mas usando uma técnica muito conhecida entre os gamers, chamada tas (tool-assisted speedruns), onde o jogo é jogado frame a frame, constantemente salvo e o personagem é controlado pela máquina através de emuladores, dá pra fazer muitas coisas impossíveis, como essas do vídeo.

O cara também abusa de muitos bugs no jogo, mas isso não torna o speedrun menos interessante. Na verdade é até legal ver clássicos do vídeo game dessa perspectiva, principalmente pra aspirantes a desenvolvedores de jogos.

Essa versão já está com o tempo tão apertado, que são contados frames ao invés de segundos. Na página do tas ele explica detalhadamente quantos frames economizou da versão anterior e como fez isso. Provavelmente a versão sem chaves deve sair em algum tempo e, finalmente, não haverá mais como encurtar esse jogo.

Outros tases podem ser visto aqui, com destaque para os de Super Mario World e Super Mario World “small only”, onde o jogo e zerado todo com o Mário pequeno e sem a ajuda do Yoshi.