Ponto V!

Home Mercado Post Mortem Torquere – Post Mortem
Paulo V. W. Radtke
Torquere – Post MortemImprimir
Escrito por Paulo Vinicius Wolski Radtke

Escrever um jogo não é lá uma tarefa trivial. Escrever um em 48 horas pode parecer fora da realidade, mas é exatamente isso o que se faz na Global Game Jam. Dadas as devidas restrições, além de plausível, os resultados também podem ser surpreendentes. Vou comentar o processo que levou ao desenvolvimento do Torquere (tocha em latim), jogo desenvolvido pelo Team Grayscale para a Global Game Jam 11, que está disponível em http://www.globalgamejam.org/2011/torquere.

Quem quiser ter uma ideia um pouco mais clara do que é participar na Global Game Jam, fiz dois vídeos de time lapse, um do meu desktop de trabalho em http://youtu.be/3IV30P99c70 e um da câmera que filmava a equipe toda em http://youtu.be/tGB3miUcKDA.

A Equipe

Uma boa equipe é fundamental para se fazer um jogo. Em especial uma equipe em que se pode confiar nos membros. Ajudou muito todos terem um bom relacionamento, em especial nos momentos em que os ânimos se exaltam depois de mais de 35 horas correndo contra o relógio. Assim, nada de fazer jogo com desafetos só porque o sujeito é bom no que faz. Tem que ter uma química de amizade e companheirismo na equipe, senão a coisa fica difícil.

Da esquerda para direita: Bruno Ferreira, Matheus, Christian, Bruno Sanches, PauloA equipe este ano foi a seguinte:

Paulo V. W. Radtke (@pvwradtke) – programação do jogo e áudio

Bruno C. Sanches (@bcsanches) – programação do jogo

Christian Isenberg (@argusroot) – programação de menus, intro, encerramentos e músicas

Bruno Ferreira da Silva (@ferreirabs) – arte

Matheus Gobato Nunes (@MatheusNunes) – mapa, arte adicional

Como curiosidade, sou professor e todos eles foram meus alunos em algum momento no período em que dei aulas na PUCPR. Hoje me sinto mais amigo deles do que de muitas pessoas que tenho contato mais constante, apesar do Matheus ainda não ter perdido o hábito de me chamar de professor :).

Preparação

Como todo software, dominar a tecnologia para o desenvolvimento é essencial. Escolhemos trabalhar com a Chien 2D, uma lib C que eu desenvolvi para fins acadêmicos, a partir de um protótipo de jogo nave que eu fiz antes, o Sector 7. A lib, além de multiplataforma (desenvolvemos o Torquere *em* Linux e Windows), dá suporte a mapas em tiles do Mappy, modelagem de personagens e áudio estéreo posicional dos personagens.

Além do ferramental de programação, Visual Studio 2008 no Windows e Netbeans e g++ no Linux, levamos desta vez um scanner, que serviu para digitalizar a arte do Bruno Ferreira, que depois era finalizada no Photoshop. Para o instalador Windows, fomos preparados com o Install Creator, já sabendo quais DLLs arquivos de manifesto tem que ser enviados com o jogo para que ele funcione (faça isso antes, no dia você nunca acha uma máquina limpa para testar o instalador).

Uma semana antes da Global Game Jam, o Bruno Campagnolo (@bcp) fez um warmup com os participantes, oportunidade em que aproveitamos para fazer os últimos preparativos com a equipe e acertar os detalhes finais. No nosso caso, foi um dos poucos momentos em que todos (menos o Bruno Sanches, que mora no interior de São Paulo) puderam se encontrar sem preocupações com o jogo, em especial porque a equipe trabalha e fica difícil isso no dia-a-dia. Aproveite uma situação destas também para conhecer o terreno, ver se tem restaurantes para comer por perto, quem faz entrega de comida e assim por diante.

Finalmente, procurem chegar cedo na Jam. Este ano foi possível se acomodar ANTES do keynote do evento. Assim, não tivemos que nos preocupar em arrumar mesa, instalar scanner, etc, depois de saber o tema. Assim que acabou o brainstorm, foi colocar a mão na massa. Se der, leve uma caixa térmica com refrigerantes, energéticos, água e bastante gelo. Se tiver amigo/parente/esposa disponível, peça para levar o reabastecimento, inclusive de gelo. Chocolate e bolacha sempre são bem vindos.

A Ideia

O nosso brainstorm foi até rápido e bastante objetivo, provavelmente por sermos programadores (inclusive o nosso artista). Como tínhamos que jantar e estava tarde por causa do keynote atrasado, fomos a um restaurante na frente da PUCPR e, enquanto esperávamos a comida, fomos trocando ideias.

Este ano o tema foi extinção. Antes do keynote inútil do Keita Takahashi, alguns participantes/organizadores de jams anteriores se dirigiram aos participantes com algumas dicas boas. Entre elas estava “descartar as três primeiras ideias, porque elas não seriam ainda boas”. Não vou dizer que a medida estava correta, mas descartamos cada um várias ideias. Passando por pandas zumbis, meteoros, dinossauros e virgens de 25 anos (era bem engraçado, ideia da minha esposa, não me chamem de machista), chegamos a dois conceitos de jogo envolvendo extinção.

Prevaleceu a ideia de um jogo plataforma com um sujeito andando na escuridão com uma tocha, a qual não poderia ter o fogo extinguido. A tocha teria uma função dupla, seja iluminar o caminho ou espantar os perigos da floresta, animais selvagens de todo tipo. O objetivo seria simplesmente voltar para casa. Desse tema surgiu a ideia, inspirada no ciclo de noite-dia, em que os portões da cidade somente seriam abertos ao amanhecer, quando os animais se escondem e não tentariam entrar na vila.

Desenvolvimento

Essa parte foi mais trabalhosa do que difícil, já que o volume de trabalho era grande. Além do personagem, haviam dois tipos de inimigos (voador e terrestre), cada um com dois subtipos (rato, lobo, coruja e morcego), mais a lógica envolvendo a tocha. Ajudou muito usar a Chien2D como base, já que um dos exemplos dela é um jogo de plataforma que foi adaptado para o Torquere. Para simplificar a nossa vida em 48 horas, os personagens tem comportamentos bem simples, como andar para um lado e para outro, atacando o jogador quando eles o vissem (menos o morcego, por motivos óbvios). Para sofisticar um pouco a lógica, o inimigo deveria estar andando em direção ao jogador para enxergá-lo.

Um acerto que tivemos foi usar um sistema de versionamento Mercurial no Google Code (http://code.google.com/p/torquere/). Assim, trabalhávamos em partes distintas do projeto simultaneamente, como código e assets. Houveram alguns percalços por nem todos estarem habituados com a ferramenta, como a criação de quatro branches de desenvolvimento (o que foi um parto resolver), mas em geral foi bem mais prático e eficiente do que um pendrive voador.

A coisa complicou na questão de geração de assets. Com apenas um desenhista, o mapa inicial foi feito com uma arte placeholder pelo Matheus. Porém o Mappy encrencou com os tiles novos e depois de muita briga resolvemos o problema na marra. Nesse ponto, ano que vem iremos com pelo menos mais um artista gráfico, o que ajudaria muito, já que hoje o Bruno Ferreira é responsável por TODA arte do jogo (em 48 horas, é coisa de herói). Isso no domingo foi um complicador, já que a arte final do jogo só ficou pronta em torno do meio-dia, aí teve até uma cachoeira que eu desenhei na pressa para ajudar.

Outra deficiência da nossa equipe é não ter ninguém da área de áudio. Enquanto algumas equipes levaram miniestúdios com teclado Midi e outros acessórios (como a do Candy End), tivemos que nos contentar com músicas livres do newgrounds.com e efeitos sonoros idem. Como acabo me virando bem, fui o editor de áudio do jogo com um resultado razoavelmente bom. Para ilustrar como este ano o jogo foi desenvolvido mais facilmente que ano passado, o Torquere tem personagens com mais efeitos sonoros do que o Aliens and Zombies inteiro. Além de termos os efeitos sonoros prontos no sábado (ano passado isso ficou pronto Domingo depois do almoço).

Saldo Positivo

TorquereFizemos um jogo completo, com começo, meio e fim. Um jogo com dois finais (procure algo esquisito na floresta), trilha sonora completa e efeitos variados por personagens, além de uma mecânica promissora para um jogo maior. Para algo feito em 48 horas, ficou além do esperado.

A resposta geral da ambientação do jogo foi boa. Recebemos vários elogios pelo aspecto angustiante de não se enxergar além do que a tocha ilumina e o fato da tocha se apagar aos poucos. A ideia de assustar os animais com a tocha também foi comentada, o que indica que a escolha de design foi acertada.

Pessoalmente fiquei muito satisfeito com o resultado, já que fizemos mais neste ano do que ano passado e em menos tempo, já que um pouco depois das 15:00 estávamos mandando a nossa versão final para a máquina de apresentação. Ano passado neste horário estávamos correndo contra o tempo para fazer ajustes finais e só não passamos vexame porque apresentamos na nossa própria máquina. O Bruno Sanches até colocou um suporte a joystick na Chien2D durante o evento, só pra ilustrar como foi mais tranquilo esse ano.

O que Pode Melhorar

Não houve muito tempo para testar o jogo em si. O binário final deve ter sido gerado em torno das 14:00 de Domingo, com os gráficos recém adicionados. Assim, não tivemos como ver a tempo que os gráficos estavam escuros demais e que as telas dos notebooks (mais brilhantes que as normais) ajudavam a enganar. Além disso, o balanceamento de cores entre cenário e personagens ficou ruim, sendo difícil enxergar os inimigos em certas situações.

Finalmente, faltou equilibrar os inimigos, para deixá-los um pouco mais lentos no ataque. Do jeito que está hoje, é o verdadeiro jogo hardcore, tem que decorar aonde aparecem os bichos para saber como desviar ou atacar. Faltou também uma tela de instruções. Melhor dizendo, faltou preencher a tela, já que ela está lá, mas não mostra nada.

Caminhos Futuros

Em relação ao jogo, nosso objetivo é expandir a base que montamos, para ter algo completo visando o mercado independente. Pelo menos estamos na pré-produção para que isto ocorra.

Em relação a futuras jams, vamos procurar mais artistas, já que isso foi uma deficiência em duas jams seguidas. Até mesmo para aumentar a nossa base criativa, já que como programadores somos relativamente limitados.

Pessoalmente, vou participar (na medida do possível) das Ludum Dare (http://ludumdare.com) deste ano, competições individuais de desenvolvimento de jogos, visando ganhar um pouco mais de experiência em controle de escopo e tempo para que na próxima Global Game Jam a gente se saia ainda melhor. Uma coisa que percebo cada vez mais é que por mais que jogos tenham um lado arte, a sua realização depende muito de técnica e experiência, então, nada melhor do que fazer jogos constantemente para que isso se torne algo cada vez mais natural.


Comentários (19)
  • Adriano Del Vigna  - Otimos comentarios e descricao!
    avatar

    :D

  • Matheus Gobato Nunes
    avatar

    Muito bem narrada a nossa trajetória...


    e PV eu vou continuar te chamando de Professor enquanto vc escrever meu nome assim -> Matheus N. Gobato ...


    Hahha :cheer:

  • Bruno Crivelari Sanches
    avatar

    Esse PV! :D

  • Paulo Vinicius Wolski Radtke
    avatar

    Tá bom Matheus N. Gobato, pode continuar me chamando de professor ;). Sabe que só péssimo para nomes, veja como uma vantagem eu lembrar dos teus nomes, só esqueci a ordem. A maior parte dos alunos nem consigo lembrar o primeiro nome :pinch: .

  • droidevr  - Dúvidas técnicas.
    avatar

    Olá,

    Estou adorando o site de vocês. e esse é meu segundo comentário, e gostaria de saber sobre algumas dúvidas técnicas.

    1) O mapa é tile certo? (Pois pelo o que eu entendi, vocês usaram o MAPPY para desenvolver o mapa!).

    2) Vi que o mapa tem áreas com inclinação, sendo assim a colisão é feita via pixel ou através de retas, ou vocês adotaram outro método?

    3) Essa não é técnica, apenas gostaria de saber se alguém mora perto de Ribeirão Preto/SP?

    Abraços

  • Bruno Crivelari Sanches
    avatar

    1) sim é tile e foi com o mappy (infelizmente)

    2) Aqui deixou para o PV, mas acredito que tenha um calculo especifico para cada inclinação, existem 2 ou 3 disponíveis

    3) sou o mais próximo ou melhor, menos longe, Cruzeiro - SP

    T+

  • Paulo Vinicius Wolski Radtke
    avatar

    1) Sim, o mapa é Mappy, ainda bem. Por mais que o Mappy seja velho, ainda é um dos melhores editores de mapa, desde que você não se importe muito com algumas idiossincrasias nele da época do Amiga, como, por exemplo, ter que fazer todos os tiles antes de fazer o mapa.

    2) É feita através de retas, ou algo bem próximo a isso. Temos marcadores especiais (veja a camada 0 do mapa). Neles eu sei se são cheios, ou se são retas inclinadas. Sabendo onde o personagem está, a física calcula se ele fica no chão ou cai um pouco.

    3) O Bruno Sanches com certeza é o mais próximo :cheer: .

  • droidevr  - re:
    avatar
    Bruno Crivelari Sanches Escreveu:
    1) sim é tile e foi com o mappy (infelizmente)

    2) Aqui deixou para o PV, mas acredito que tenha um calculo especifico para cada inclinação, existem 2 ou 3 disponíveis

    3) sou o mais próximo ou melhor, menos longe, Cruzeiro - SP

    T+
    Paulo Vinicius Wolski Radtke Escreveu:
    1) Sim, o mapa é Mappy, ainda bem. Por mais que o Mappy seja velho, ainda é um dos melhores editores de mapa, desde que você não se importe muito com algumas idiossincrasias nele da época do Amiga, como, por exemplo, ter que fazer todos os tiles antes de fazer o mapa.

    2) É feita através de retas, ou algo bem próximo a isso. Temos marcadores especiais (veja a camada 0 do mapa). Neles eu sei se são cheios, ou se são retas inclinadas. Sabendo onde o personagem está, a física calcula se ele fica no chão ou cai um pouco.

    3) O Bruno Sanches com certeza é o mais próximo :cheer: .

    Agradeço ambos por respoderem.

    Foi uma curiosidade, pois estou fazendo algo parecido, e no meu caso estou usando retas para a colisão no cenário. Não sei se seria o melhor recurso, pois além disso no meu caso, seria interessante dividir as retas para não fazer o cálculo com retas fora de área.
    2 perguntas para finalizar, e espero que não se aborreçam:

    1) O mapa gerado é Binário, XML ou formato próprio do Mappy? É que estou em dúvida se uso o Mappy ou desenvolvo meu próprio editor.

    2) Seguindo a linha de racíocinio, a camada 0 é como colisão? Ai determinado valor informa o grau de inclinação?

    PS: No navegador IE 8.0 (Sim eu sei que é antigo, mas é do meu amigo), a lista de comentários do site de vocês não aparece.

    Agradeço as respostas anteriores, e gostaria de finalizar com 2 perguntas (Por favor não se aborreçam):

    1) Foi usado Binário, XML ou formato próprio do Mappy?

    2) Se entendi bem, a camada 0 representa a colisão, então em cada tile fica salvo o grau de inclinação?

    PS: A lista de comentários do site de vocês não funciona no navegador IE 8.0!

    Abraços.

  • droidevr
    avatar

    Pessoal,

    Houve um erro de cache do navegador na hora de enviar um novo comentário, e pensei que eu havia perdido, então eu reescrevi o comentário e agora está duplicado.

    PARTE DUPLICADA:
    Agradeço as respostas anteriores, e gostaria de finalizar com 2 perguntas (Por favor não se aborreçam):

    1) Foi usado Binário, XML ou formato próprio do Mappy?

    2) Se entendi bem, a camada 0 representa a colisão, então em cada tile fica salvo o grau de inclinação?

    PS: A lista de comentários do site de vocês não funciona no navegador IE 8.0!

    Abraços.

  • Bruno Crivelari Sanches
    avatar

    Uso o chrome 99,9999% do tempo, mas agora usando o IE8 com win7, funcionando normalmente os comentários.

    As respostas do mappy e torquere, deixo para o PV de novo :)

  • droidevr
    avatar

    Bruno,

    No caso deve ter sido uma versão muito antiga do IE 8.0, pois como estava na casa de um amigo, só tomei nota do IE 8.0 + WinXP!

    Aqui em casa eu uso FF e Chrome, mas com o o IE 8.0.6 também funcionou.

    Ou seja, meu amigo deve estar ultra desatualizado. E só consegui ver os comentários usando o FireFox Portable. :D

  • Paulo Vinicius Wolski Radtke
    avatar

    1 - A lib lê o próprio binário do Mappy. Sou averso a XML para esse tipo de coisa, ia aumentar estupidamente o tamanho do arquivo. Se você for fazer uma coisa simples, recomendo usar o Mappy como editor. Se você quiser algo mais avançado e/ou específico, pode ser que fazer o seu editor seja melhor.

    2 - Por aí. Eu uso uma sequencia conhecida de blocos no tileset para indicar o que é cada posição no mapa. Veja que os primeiros tiles não são exatamente desenhos, mas sim informações do mapa. Dava para ter feito usando a camada de informações do Mappy, mas eu acho essa solução visualmente mais eficaz.

  • Necrocyber  - Mappy
    avatar

    Realmente cada dia que passa me surpreendo cada vez mais com a qualidade dos posts desse site. Parabéns a todos e espero que muitos posts como esse venham nos agraciar aqui.

    Tenho uma dúvida em relação a qual programa utilizar para se criar mapas;
    Para criar o Torquere foi utillizado o Mappy alguém saberia me mandar o link dele para que eu dê uma fuçada!!!

    Sou programador e hehe desde já me acostumar com as ferramentas de criação de mapas, modelagem e tals.


    Desde já agradeço a todos. Valeu gente!!!

  • Vinícius Godoy de Mendonça  - Mappy
    avatar

    Eis o link: http://tilemap.co.uk/mappy.php

  • Necrocyber
    avatar

    Valeu Vinicius!! :)

  • Bruno Crivelari Sanches
    avatar

    Se você baixar o Torquere pode abrir o mapa dele no Mappy ;)

  • Paulo Vinicius Wolski Radtke
    avatar

    Tem outros dois editores que eu conheço que você pode dar uma olhada:

    http://www.mapeditor.org/
    http://kotisivu.dnainternet.net/ttilli/tilemapeditor/main.htm

    Tinha um outro, que suportava até espelhamento e rotação de tiles, mas não achei mais o site dele.

  • Necrocyber
    avatar

    Vou dar uma olhada com calma em todos.

    Muito obrigado galera!!! :)

  • droidevr
    avatar

    Valeu pessoal, obrigado pelas respostas.

    Bem, estou com projeto para um jogo de ação no Android, mas como estou meio que sozinho, eu simplifiquei muito as coisas. Entretanto após ver esse jogo de vocês, tive mais idéias sobre o tema, e uso da luz no gameplay.

    Acho que vou aproveitar minha engine atual modifica-lá um pouco e usar esse tema. Pois facilita bastante quando você não possuí artista dedicado etc.

    Abraços.

Escrever um comentário
Your Contact Details:
Gravatar enabled
Comentário:
[b] [i] [u] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch::(:shock:
:X:side::):P:unsure::woohoo::huh::whistle:;):S:!::?::idea::arrow:
Security
Por favor coloque o código anti-spam que você lê na imagem.
LAST_UPDATED2  

Busca

Linguagens

Twitter