Ludum Dare: 48 horas para desenvolver um jogo usando PyGame

Fazer um jogo sobre um determinado tema em 48 horas. E quando eu digo “fazer”, não estou falando apenas sobre escrever código. É fazer mesmo! Game design, arte, som e código. Desde o início e sozinho (pois é, nada de pedir ajuda a aquele seu amigo designer). Isto é o Ludum Dare, uma competição online que acontece de tempos em tempos. Teve uma este mês e eu participei.

As regras do Ludum Dare são simples. É dado um tema e uma regra especial. Os competidores têm de Sexta-feira à meia noite até Domingo à meia noite para desenvolver o seu jogo utilizando qualquer tecnologia (só existem algumas poucas que não são permitidas). O tema foi Greed (ganância, cobiça) e a regra especial foi “only one of each”, ou seja, não era permitido repetir objetos no jogo. Então nada de desenhar apenas um sprite e sair repetindo ele pela tela. Pretende usar moedas para representar a ganância? Então você vai ter que desenhar uma por uma e elas terão que ser diferentes umas das outras. Isso aumentou muito a dificuldade e jogou fora um monte de possíveis ideias interessantes. Por exemplo, com essa restrição, você não pode fazer nenhum jogo de plataforma side scrolling, a não ser que você não repetisse o plano de fundo da fase, ou seja, teria que desenhar um background que cobrisse toda a fase. Outro exemplo são aqueles jogos casuais “infinitos”, nos quais você vai jogando enquanto conseguir sobreviver e a sua pontuação é baseada no tempo que conseguiu se manter vivo. É simplesmente impossível fazer um jogo nesse estilo quando você não pode repetir objetos.

Além do tema e da regra especial, também foi dado um segundo tema, que os competidores podiam usar ou não. Nesta edição o segundo tema foi pescaria.

Baseado nos dois temas e na regra especial, tive a seguinte ideia:
- Dois barcos pesqueiros. Um controlado pelo jogador e o outro pelo computador.
- Os “peixes” são na verdade tesouros: moedas, barras de ouro, Copa do mundo e etc.
- Cada “peixe” tem um valor e um peso atribuído a ele. O peso é diretamente proporcional ao valor (quanto mais valioso, mais pesado).
- Os barcos têm um limite máximo de peso que podem suportar. Se ultrapassar, o barco afunda.
- Ganha o barco que pescar mais sem afundar.
- Os barcos são feitos de papel (não faz diferença nenhuma na implementação nem no Game Design, mas na hora pareceu ser uma boa ideia).

(Não sei se perceberam, mas essa ideia é apenas um Blackjack 21 com uma roupagem diferente. Nada original.)

Chegou a hora de fazer o jogo. Como eu disse, os competidores devem fazer TUDO no jogo. Eu não queria me preocupar logo com a arte, então comecei a implementar sem mostrar nenhuma alteração na tela. Todos os resultados eram exibidos apenas no terminal (nesse ponto já era possível jogar =P). Depois fui incluindo algumas imagens aleatórias que eu consegui na internet. Usei PyGame no desenvolvimento, um framework para jogos em Python. A implementação foi bem tranquila, a PyGame é bem fácil de usar e é sempre gratificante programar em Python. O fato da minha ideia ser extremamente simples também contribuiu bastante com a facilidade na implementação (nem gravidade tem no jogo).

O problema foi fazer o resto do jogo. Eu já trabalho com isso há algum tempo, mas nunca precisei desenhar cada quadro de uma animação, por exemplo. Foi TENSO. Sou uma negação desenhando com lápis ou qualquer outro dispositivo físico, então usando o Gimp e o Pinta foi mais complicado ainda! Sem dúvida alguma, a maior parte do prazo eu gastei tentando dar um jeito na arte. Para fazer a música não tive problemas. Fui apresentado ao JamStudio (valeu Renata!) onde você só coloca os acordes e ele faz uma música pra você. Não sei se isso é contra as regras, mas agora já era.

Eu não consegui terminar tudo o que eu tinha em mente no prazo de 48 horas (acho que eu acabei dormindo demais =/), então entreguei do jeito que tava.

Mesmo tendo sérios problemas com a arte, a experiência foi muito satisfatória. A ideia do Ludum Dare é justamente proporcionar a experiência de uma pessoa participar de todas as etapas da criação de um jogo. Acredito que sirva como uma capacitação. Te torna apto a desenvolver rapidamente um protótipo a partir de uma ideia. O que é simplesmente sensacional. Ao invés de você chegar para uma equipe de artistas, programadores e game designers e tentar explicar a sua ideia a partir de rabiscos toscos, você implementa uma versão simples da sua ideia e mostra para eles. Muito melhor, não é mesmo?

O próximo Ludum Dare já está marcado para 20-22 de Agosto. Recomendo muito para quem pensa em fazer jogos, já faz ou simplesmente gosta de programar.

Caso alguém se interesse, o código do jogo está no meu github. Essa é a versão que eu submeti ao Ludum Dare e que está incompleta. Porém, assim que acabou a competição, eu criei outro repositório e continuei o desenvolvimento. Ainda tem coisa que eu gostaria de implementar, mas agora já está bem mais completo do que antes. Se quiser, é só baixar.

Ainda vou falar muito de PyGame aqui. Então se quiser saber mais, siga-me. =)

Até a próxima.

3 Responses to “Ludum Dare: 48 horas para desenvolver um jogo usando PyGame”

  1. Belo post Dukão! Muito manero!

    Como já sabe sempre fui muito fã do desenvolvimento de games, inclusive de jogar, claro! Não sei se tenho capacidade pra desenvolver um jogo, até porque não tenho experiência nenhuma no desenvolvimento de games, mas gostaria muito de poder participar de algum projeto de game, especialmente se for open source! A esperiência que tenho além de designer é 3D que cheguei a fazer uns freelas e level design! Fiz vários mapas pra CS! hehe

  2. guilherme says:

    gosto de pygame e tenho profissionalidade com ele, valeu pela matéria muito boa!
    e nunca desistam dos jogos!
    e rafael se quiser tenho vagas para vc!
    entre em contato comigo pelo site:
    http://programador.forumeiro.com/

  3. Paulo says:

    também há o PyWeek, que tem um prazo de desenvolvimento de uma semana ao invés de 2 dias – apesar da maioria dos jogos encontrados lá não serem grande coisa, consegue-se encontrar verdadeiras pérolas por lá às vezes

Leave a Response