feliz aniversário carol – the game

Mês passado eu li esta notícia do G1 Games sobre um casal alemão que decidiu fazer um jogo como convite de casamento, onde o objetivo é fazer a noiva salvar o noivo de um gorila (bem estilo Super Mario Bros.). Semana passada foi aniversário da minha namorada Carol e, pensando no que o casal alemão fez, eu decidi fazer um cartão de Feliz Aniversário para ela em forma de um jogo para computador.

Feliz Aniversário Carol - The Game -

Tela de abertura

O jogo foi feito em 2 semanas, programei apenas de noite quando não tinha aulas na pós-graduação, e terminei na madrugada do aniversário dela. Decidi desenvolver utilizando XNA, que eu tenho mais facilidade para desenvolver jogos e também é muito fácil fazer jogos de plataforma em 2D, como o que eu fiz. Os sprites dos personagens (eu e ela) e as animações foram copiadas dos avatares Buddy Poke dos nossos perfis no Orkut, e o resto do cenário são imagens que encontrei na internet. Assim, foquei na programação e na mensagem que eu queria transmitir.

Feliz Aniversário Carol - The Game - Gameplay

Gameplay

O objetivo do jogo Feliz Aniversário Carol – The Game é atravessar o cenário, pulando pelas plataformas, coletar as letras que formam a palavra PARABENS, e me encontrar no final da fase. É um jogo bem curto e simples, pois não tive muito tempo para desenvolver (comecei uma semana antes do aniversário dela) e também não queria fazer algo longo, já que o objetivo principal era desejar um Feliz Aniversário para ela de uma maneira diferente.

Feliz Aniversário Carol - The Game - Tela do final

Tela do final

Apesar do jogo ser simples, eu utilizei uma técnica para criar o Level Design que li em um livro de programação de jogos em java que eu tenho. A técnica é simples: a construção do cenário 2D está armazenada em um arquivo .TXT, que é lido pelo jogo e transformado no cenário que jogador vê, através da tradução de caracteres presentes no arquivo em sprites. Por exemplo, o meu arquivo .TXT possui os seguintes parâmetros reconhecidos pelo jogo:

  • Número “0″: Lugares no cenário onde não possuem sprites e não existe colisão;
  • Número “1″: Traduzido no jogo como sprites com imagem de gramado com colisão;
  • Número “2″: Traduzido no jogo como sprites com imagem de tijolo com colisão;
  • Número “3″: Traduzido no jogo como um sprite com o meu avatar, onde a colisão reinicia o jogo se o jogador não formou a palavra PARABENS. Se colidir com este sprite e a palavra PARABES estiver formada, é exibido o final do jogo;
  • Letras “P”, “A”, “R”, “B”, “E”, “N” e “S”: Traduzido no jogo como sprites que representam esta letra, e o jogador deve coletar todas na ordem para ver o final do jogo.
Feliz Aniversário Carol - The Game - Arquivo com Level Design

Arquivo com Level Design

A vantagem de se utilizar esta técnica: qualquer um pode alterar o Level Design do jogo a qualquer momento, sem precisar compilar novamente o projeto, é bem simples e fácil de usar para testar a jogabilidade e complexidade de um jogo, mudando rapidamente o cenário para corrigir erros de game design ou melhorar a experiência do jogador.

A desvantagem de se utilizar esta técnica: dependendo do tamanho do level criado em um arquivo .TXT, o jogo pode ficar muito lento. O carregamento dos dados do arquivo e a transformação em um array de sprites não é a parte mais demorada, o problema real é verificar colisão e movimentar TODOS os sprites a cada loop. Neste jogo, por exemplo, o level design que eu montei contém 1841 sprites que são movimentados e tem a sua colisão verificada a cada loop do jogo. Assim, esta técnica fica inviável em jogos com level muito grande.

A desvantagem pode parecer maior do que a vantagem de se utilizar esta técnica em jogos de plataforma 2D, mas em outros tipos de jogos pode ser bem útil e não pesar tanto, como em puzzles ou jogos de estratégia onde os cenários são menores. Ainda sim, é uma técnica interessante para brincar e estudar, por ser simples de programar e mostrar resultados rapidamente.

Neste link está o executável e o instalador deste jogo. Na raiz do jogo está o arquivo LevelDesign.TXT, que pode ser editado para mudar o cenário de qualquer maneira, lembrando que quanto maior o cenário, mais lento poderá ficar o jogo. Todo o meu trabalhou valeu muito a pena, pois ela adorou este presente diferente. Ah, a trilha sonora é a música Envelheço na Cidade, da banda IRA!, que ficou perfeita no jogo!

inteligência artificial nos jogos digitais

Em muitos jogos, a Inteligência Artificial é a principal responsável pela diversão que um game proporciona. Por exemplo, você consegue imaginar jogos como CALL OF DUTY ou GTA sem a inteligência que os NPCs possuem? Segundo este artigo do David Wong, a aprimoração da I.A. nos jogos é uma das coisas que os jogadores hardcore desejam. Quanto mais real, melhor para a experiência do usuário.

A I.A. é muito importante, mas alguns jogos ficam perfeitos com uma I.A. simples e limitada, ao contrário de jogos como SPORE que deve ter uma implementação absurda de Redes Neurais. O desenvolvedor de jogos deve conhecer os principais algoritmos de I.A., mas não é necessário sempre usá-los em todos os projetos. Na pós-graduação, tivemos uma matéria dedicada a I.A. nos jogos digitais, onde o professor Murilo Garcia apresentou as principais técnicas e quais problemas elas ajudam a resolver.

Como trabalho para avaliação, tivemos que implementar técnicas de I.A. que serão úteis em nossos TCCs. Abaixo está uma descrição do techdemo que fiz:

Techdemo de Inteligência Artificial

Imagem do Techdemo de Inteligência Artificial

Neste techdemo o quadrado verde fica patrulhando o canto superior esquerdo da tela, enquanto o usuário/jogador controla o quadrado azul com as teclas direcionais do teclado.

O quadrado verde fica no estado de patrulha enquanto o quadrado azul estiver a certa distância dele. Quando o quadrado azul se aproximar, o quadrado verde ficará vermelho e mudará o seu comportamento para perseguição do quadrado azul.

No estado de perseguição, o quadrado azul deverá fugir, até ficar um pouco distante do quadrado vermelho. Quando estive longe do quadrado azul, o quadrado vermelho volta para o estado de patrulho no canto superior esquerdo e ficará novamente verde.

Para a troca do comportamento do quadrado verde/vermelho foi feita uma máquina de estado, que varia entre Patrulha e Perseguição. Quando o quadrado está verde, a patrulha é fixa no canto superior esquerdo, sendo que esquete quadrado sempre voltará para patrulhar o seu canto quando o estado de Perseguição se tornar Patrulha.

No estado de perseguição, com o quadrado tornando-se vermelho, o quadrado azul é perseguido em uma velocidade constante, pouco inferior à velocidade do jogador, e só muda de estado quando a distância entre os dois quadrados se tornar grande o bastante para o quadrado verde voltar a patrulhar seu canto.

Este techdemo foi desenvolvido com C++ e SDL, utilizando o Visual Studio 2008.

A implementação das técnicas citadas pode não ser a mais perfeita do mundo, mas se você quiser ver como foi feita, o código fonte está neste link. Qualquer dúvida é só comentar aqui!

Vou aproveitar este post sobre I.A. e indicar mais um livro, este é um dos que foi utilizado pelo professor como bibliografia desta matéria, o Programming Game AI by Example de MatBuckland, que ensina vários conceitos e algoritmos de I.A. com exemplos de implementação. Este livro trata I.A. no geral, não exclusivamente para games, mas praticamente tudo que está nele é aplicável em um jogo digital:

Programming Game AI by Example

Programming Game AI by Example

empreendedorismo na indústria de games

Um dos objetivos da pós-graduação que estou fazendo é preparar o aluno para abrir uma empresa de games e procurar um publisher para publicar nossos jogos. No final do ano os TCCs, que são demos de jogos, serão apresentados a um publisher, e se tudo der certo, pode ser o que jogo seja desenvolvido e publicado. Esta é uma iniciativa muito legal do SENAC, pois faz nossos trabalhos terem mais sentido ao final do curso.

Para isto, temos uma matéria muito importante no sentido de negócios, que é Empreendedorismo. Um fato curioso é que os dois professores que nos deram a matéria (metade da matéria cada um) não tem conhecimento da indústria de games, mas se mostraram bons ouvintes para entender as características únicas desta indústria. Estas aulas foram legais, principalmente pela grande experiência deles em empreendedorismo, já que são do FGVcenn (Centro de Empreendedorismo e Novos Negócios da FGV). Em alguns momentos era engraçado a falta de conhecimento deles em coisas que para nós eram claras.

Nesta matéria, o projeto foi desenvolver um Plano de Negócios para o nosso TCC, utilizando este roteiro. Inicialmente a idéia era criar uma empresa com um produto, que é o nosso jogo, porém todos preferiram criar um Modelo de Negócios com foco em um produto, já que este Plano de Negócios será apresentado a um publisher que está interessado no produto.

Fazer um Plano de Negócios não é fácil. É necessário juntar muita informação para embasar o produto que queremos desenvolver, e responder perguntas como “Qual o diferencial deste jogo que o tornará um sucesso e por quê?”. Uma boa fonte de informações sobre a indústria brasileira de games é o site da Abragames, porém as pesquisas estão um pouco desatualizadas, mas serve como uma base.

Informações sobre a indústria de games no mundo inteiro são mais fáceis de encontrar na internet ou em sites como GamaSutra e GamesIndustry. Outra ferramenta legal é o Google Trends, onde você pode pesquisar a quantidade de pesquisas que um ou mais termos tiveram nos últimos anos e alguns fatos que marcaram este termo, como, por exemplo, este comparativo entre Wii, Xbox 360 e PS3.

Vou finalizar este post com duas dicas sobre empreendedorismo que o Augusto Camargo deu em um aula, que foi convidado por um dos professores para conversar conosco:

  • O foco do negócio não é desenvolver um produto, e sim a emoção que ele irá proporcinar ao usuário final (no caso de games, não basta ter gráficos perfeitos e controles de movimentos, tem que divertir e fazer o jogador se sentir bem e feliz);
  • Quando fizer o planejamento do fluxo de caixa, teste a projeção da empresa nos próximos meses em cenários ruins, como metade do volume vendido ou metade do faturamento, e veja se a empresa sobrevive (é algo muito simples de fazer com um Plano de Negócios, e quase todas as empresas novas quebram nesta simulação).

Eu pretendo escrever mais posts sobre a indústria de games e também sobre como começar uma empresa de games no Brasil (startup), qual tipo de jogo é mais lucrativo aqui, onde e como exportar um game produzido aqui, entre outros assuntos que eu acho interessantes e não é algo muito claro para quem quer começar uma empresa de games. Eu não sei muitas dessas coisas, mas irei pesquisar e postar aqui os resultados, já que uma das possibilidades que estudo é abrir minha própria empresa de games.

O Plano de Negócios, como praticamente qualquer tipo de documento, é bem chato de fazer, mas é muito útil também. Principalmente por que quando se escreve as idéias, fica mais fácil de ver as falhas e mudar coisas. Eu mudei boa parte do GDD (Game Design Document) do meu TCC após escrever o Plano de Negócios, pois na descrição de produto e estratégia de marketing encontrei problemas para a produção do jogo.

Panorama theme by Themocracy