terça-feira, 29 de janeiro de 2013

Global Game Jam 2013 - Like a Boss!

E ai pessoal, tudo bem?

Bom, como de costume haha, mil desculpas pela demora em fazer uma nova postagem. Semana passada foi extremamente corrida, tivemos dois dias inteiros de reuniões e sexta-feira não só foi feriado em São Paulo como foi o início do Global Game Jam 2013 (que por sua vez foi FODA!), então realmente não tivemos tempo.

No entanto, por mais coisas que tenha pra fazer hoje, sinto que preciso contar como foi nossa experiência no Global Game Jam, então prepare-se para um post longo!


Acho que a primeira coisa que posso dizer é que esse foi o primeiro Jam não-competitivo que participamos. E ao todo, nosso 3o Game Jam na vida... nosso primeiro foi na BGS 2010, como a equipe representando a Universidade Anhembi Morumbi (onde somos formados), que aconteceu no Rio de Janeiro e com certeza foi uma experiência muito legal, o joguinho que fizemos (Jornada de Miner) foi vencedor da competição e levamos pra casa um PS3 cada um. Posso dizer que aquele foi nosso primeiro jogo em Unity de todos os tempos, a primeira vez que eu pessoalmente peguei pra programar na engine.

Jornada de Miner, 2010, BGS

Nosso segundo Game Jam foi o Dev Island no BIG, que ao contrário dos Jams tradicionais durou apenas 24 horas, onde criamos Ready, Eat, Fight! (saiba mais e jogue aqui), que foi na verdade o primeiro Jam após a criação da Fire Horse, e foi outra experiência show de bola, não ganhamos a competição (essa honra foi pro estúdio Catavento) mas criamos algo que nos orgulhamos de ter feito, sinceramente achamos que é um jogo que tem muito futuro e temos planos de ainda expandir a ideia para um jogo mais completo.

Ready, Eat, Fight!, 2012, BIG Dev Island

E nessa sexta-feira, dia 25, participamos pela primeira vez no Global Game Jam. Eu estaria mentindo se não dissesse que parte da gente ficou com preguiça de participar por não ser uma competição. É algo que achamos importante, ter um feedback de como foi nosso desempenho, não apenas criar por criar... são muitas horas de trabalho pra talvez ficarem jogadas ao vento só por isso mesmo... enfim, no começo não estávamos muito animados com a ideia  MAS, decidimos tentar, afinal de contas é um evento enorme e achamos que era a melhor forma de tentar algo desse tipo. Decidimos aproveitar o tempo do GGJ pra pensar, elaborar novas ideias, fazer um bom brainstorm e tentar sair com algo interessante, diferente do habitual, mas não um jogo-conceito, queríamos sair do GGJ com uma IDEIA foda, mais do que um produto foda. Mas será que saímos com uma ideia foda? Sera que o produto ficou um lixo? Sera que o Danilo virou homem? A resposta pra todas essas perguntas (menos sobre o Danilo, isso talvez a gente nunca saiba) está descrita abaixo!

Capítulo 1 - Preparação

A primeira coisa que fizemos foi estocar alimentos. Fomos ao supermercado e compramos alguns litros de energéticos, alguns pacotes de salgadinho tamanho família, alguns litros de coca-cola, pão e frios para a primeira noite (só a primeira noite, pq frios fora da geladeira... é tenso), um pacote de Ana Maria pra cada um, e pra não dizer que foi só porcaria, compramos UM cacho de banana... e ainda sobrou uma banana no final das contas!! Enfim, a parte importante aqui é pensar em alimentos que não precisem de cozimento nem de geladeira, e levar bastante coisa pra beliscar. É importante levar coisas que sejam gostosas, e não miguelar nas quantidades, porque comer coisas sem graça ou ficar sem comer baixam a produtividade, tiram a concentração do que realmente importa, criar jogos.

Só alimentos saudáveis, óbvio

Também é importante notar que apesar de não ser algo seguido por todos os jammers do mundo, você vai passar 2 dias inteiros fora de casa... é bom levar no mínimo uma troca de roupa, um casaco, sabonete e etc, por você e pelos outros! Ficar grudento fedendo e programando com certeza não é algo muito agradável pra ninguém.

Capítulo 2 - Brainstorm

Bom, depois de tudo isso, juntar nossas máquinas (ninguém da equipe tem Note então isso quer dizer 3 desktops) e ir pro evento, arrumamos nosso equipamento, cumprimentamos e conhecemos algumas pessoas e em torno das 17hrs +- assistimos a um breve keynote do GGJ com algumas dicas e a parte que interessa... o TEMA! Como imagino que todos saibam mas vale mencionar, o tema desse ano foi "The sound of a heartbeat", "O som de um batimentos cardíaco", apresentado apenas como som. Como foi apresentado, o tema não é "o coração", mas os batimentos... o que abre uma gama enorme de possibilidades. Saímos da apresentação pensando no que poderíamos fazer.


Num primeiro momento esse pareceu ser um tema bem legal, a gente logo de cara pensou em um monte de possíveis aplicações e tudo o mais... mas como disse ai pra cima, a gente não tava ali pra fazer "um joguinho", então a primeira coisa que eliminamos foram todas as ideias que eram dentro do corpo humano ou qualquer corpo que seja. Não achamos que é um negócio interessante, se alguém diz "não, pq vc é um glóbulo branco que navega pelas veias até o coração e não sei oq...", não sei vocês, mas eu pensaria "uau........................... que jogo legal.................................. -.-"... enfim, a gente queria evitar ao máximo qualquer aplicação muito na cara do tema. Falar a verdade chegou um ponto da discussão que a gente tava pouco se lixando pro tema. A gente pensou em pelo menos umas 30 ideias de jogo, e no final estávamos entre duas que dariam bons jogos, mas ao mesmo tempo, não eram exatamente o que a gente queria... a gente queria na verdade criar um jogo que fosse diferente do que a gente costuma criar, não se preocupar com "é comercializável? alguém vai querer essa porcaria?" enfim, uma coisa que fosse simplesmente diferente.

Rabiscos das ideias... foram muito mais que essas...

Até ficarmos entre essas duas ideias, já era em torno de 1hr da manha do sábado .. isso é, nós ficamos 8 horas e meia só conversando sobre ideias pra ficar entre duas... e ainda não estávamos contentes... na verdade estávamos é preocupados em não ter tempo de fazer uma ideia mais legal por passar tanto tempo discutindo... 8 horas e meia é mais do que 1/3 de um dia, a gente ainda não tinha nada além de uns rabiscos no papel...

Featuring minha careca sexy... -.-

E ai a gente começou a pensar filosoficamente .. "Pq que tal jogo é bom?" "Que elemento disso aqui que as pessoas se sentem tão atraídas assim?" "Será que não da pra re trabalhar isso?" "Que jogo que eu gosto? Pq que eu gosto desse jogo?" e a partir daí tentar reimaginar algum jogo com outro aspecto, outro ponto de vista... retrabalhar a mecânica e pensar em algo interessante... e numa dessas, quase que sem querer, sem pensar, perguntei pro Fernando e Danilo o seguinte: "Ok... World of Warcraft... a galera em geral gosta de raid e tal, fazer aqueles grupos de 25, 40 pessoas pra matar um chefe... e se ao invés disso, você fosse o chefe e tivesse que matar as 40 pessoas?" e depois de 1 ou 2 segundos pensando sobre isso, pensamos "hmmm... é impressão minha ou a gente acabou de ter uma ideia foda??" ahah, e de repente, todas as 8 horas e meia de discussão foram pro lixo e já sabíamos o que faríamos, um jogo em que você está la de boa na sua sala maligna só relaxando quando uma raid chega pra roubar tudo que você tem.

Capítulo 3 - Desenvolvimento

Agora que o que queríamos fazer estava claro, precisávamos pensar no "como fazer" das coisas... eu como programador imediatamente sabia que a IA ia ser o ponto mais difícil, pois pra ficar um negócio divertido, a IA teria que ser inteligente suficiente pra não ser só mais um "Diablo" da vida que tem trezentos bixos e você da uma porrada e eles morrem todos, e ao mesmo tempo não queria simplesmente colocar 10 milhões de vida pra cada inimigo e ai você na prática enfrenta 40 bosses. Ao mesmo tempo, sabia que em 48 horas (na verdade 39) não ia ser capaz de programar algumas IAs que são praticamente humanas (nem uma IA foda desse jeito eu ia conseguir nesse tempo, imagina várias (não sei nem se consigo criar uma dessas na vida inteira =P)). Outra coisa que seria um desafio seria modelar, texturizar e animar vários personagens 3D, mais o ambiente, mais o menu e interface com tão pouco tempo.

Sketchs de versões do Boss (player)

O que nós queríamos nessa game jam era criar ao menos um protótipo de uma ideia que a gente considerasse realmente boa, ver até onde conseguíamos puxar, e fazer tudo isso da maneira mais rápida possível. Então, ao subirmos de volta pra sala, o Danilo pegou algumas folhas e criou rapidinho um model sheet do que seria o Boss (ou no nosso caso o Player) e o Fernando logo que recebeu começou a modelar freneticamente  Eu por outro lado, sabia que ia querer usar algumas classes que eu já tinha preparadas anteriormente, uma delas certamente seria a que mostrei aqui no blog no último post, a de movimentação do Knights Trial. Peguei a classe e vi que tinha uma série de particularidades específicas para Knights Trial, fiz uma adaptação e apliquei em um quadrado, e assim, já tinha o personagem principal andando do jeito que queria.

Trabalhando... nota para os nossos pequenos notebooks =P

Pensamos em que golpes o Boss teria, mas o que já era certo é que ele usaria uma arma e poderia bater com ela. Logo, precisaria de um Trail Renderer melhor que o que vem junto do Unity (que causa alguns problemas, ou eu pelo menos não sei usar direito), que se chama TimeBasedTrailRenderer, que está na Unify Community e é basicamente a mesma coisa, mas ao invés de ser baseado na distância entre as posições, é baseado no tempo que passou, e depois de muito teste no Knights Trial, oferece um resultado muito melhor.

Enquanto fazia as adaptações de alguns scripts, o Fernando me enviou o personagem principal animado, e adaptei o script de animação do boss pra o esqueleto e tudo o mais que eram diferentes agora. A última coisa que faltava eu copiar de Knight´s Trial eram as habilidades Slash, Thunderclap e Bladestorm. Elas não são exatamente complexas, na verdade graças ao sistema de skills, é muito fácil criar outras habilidades, mas como o Boss usaria exatamente as mesmas habilidades, e eu sabia que o tempo seria apertado para o Danilo (que pinta as texturas), achei melhor pegar esses assets completos do outro projeto.

Comendo... Pizza by Unity, valeu Jay Santos!

E então, com o Boss praticamente funcional, comecei a criar as IAs. Não são, definitivamente, as IAs mais complexas do mundo, mas com certeza são bem mais complexas que no Knight´s Trial. Cada um deles responde aos eventos que acontecem e procuram agir de forma a evitar a morte a todo custo. Fogem do boss, usam habilidades pra se proteger em fases em que o dano recebido é muito alto, curam sempre os alvos de maior prioridade, esperam o momento certo de usarem habilidades que causam mais dano, enfim, ainda tem muito a acrescentar nesse sentido, mas com certeza fiquei feliz com o resultado das IAs.

Passei boa parte das horas trabalhando nas IAs, e enquanto isso os modelos e texturas iam ficando prontos e animados, e eu implementava tudo no projeto, que aos poucos foi tomando forma... e logo já estava jogável. Infelizmente não tenho nenhum screenshot dessa fase do desenvolvimento pra mostrar, mas é basicamente um chão cinza sem nada, e um monte de bixo se matando em cima =P.

Trabalhando.... dia e noite... e gostando!

Foi nessa hora que me toquei que agora, finalmente, estávamos fazendo um jogo para web, PC... enfim, máquinas que TEM capacidade de processamento pra rodar alguma coisa... e comecei a enfeitar o jogo. Liguei a sombra dinâmica, adicionei Bloom Effects (Image Effect do Unity Pro), não economizei nas partículas, não otimizei o código como de costume (até pelo tempo de desenvolvimento)... e o jogo continuou leve! Posso dizer agora que depois de fazer UM jogo pra mobile, você está definitivamente apto a fazer um jogo bonito pra PC haha, porque é tão ABSURDA a diferença de poder de um e outro que sério, é incomparável. Enquanto Knight´s Trial está giga otimizado (pelo menos até onde eu sei otimizar), mal aguenta 5 inimigos na tela num iphone 3GS... Like a Boss aguenta até em PCs mais velhos 40 inimigos + boss + image effect + sombra dinâmica + partícula pra burro + ia mais complexa... e tranquilo! Na realidade eu cheguei a fazer testes com 120 inimigos e foi ai que começou a cair de 60 FPS... 120 inimigos... é MUITA coisa...

Á esquerda o Danilo pintando as texturas, eu no meio com Unity aberto e á direita o Fernando modelando outra parte do cenário.

Enfim, trabalhamos muito, muito mesmo, entre sexta e domingo a noite dormi apenas 3 horas e foi apertado de tempo... mas valeu a pena, valeu MUITO a pena! Alias, como mencionado no site do nosso jogo no Global Game Jam, um agradecimento especial para o Emmo Martins, da Bamba Music por ter criado a trilha sonora do jogo pra gente na hora, super atencioso e prestativo, e sabe do que fala, vale a pena conferir o trabalho do cara!

Enfim, foi cansativo, foi tenso, passamos horas e horas e mais horas só no brainstorm de uma ideia... mas com certeza foi um tempo MUITO bem aproveitado, e nos orgulhamos MUITO do resultado final! Modestia á parte, eu acho que terminamos esse GGJ, literalmente, Like a Boss! =P

Like a Boss... literally

Para jogar o jogo, basta clicar aqui!

Capítulo 4 - Adicionando personalidade ao jogo

Esse acho que é o tópico que eu mais quero discutir aqui nesse post. Sei que já escrevi pra burro e pouca gente vai ter paciência de ler até aqui, mas a gente precisa guardar o melhor para o final. Na minha singela opinião, apesar de eu ter ficado MUITO satisfeito com o gameplay do jogo, com como os inimigos ficaram difíceis, resistentes, mesmo tendo tão pouca vida (Uma skill chega a dar 5000 de dano, tem inimigo com 6000 de vida... mas graças á cooperação, eles se aguentam), acredito que nós conseguimos adicionar uma layer de personalidade ao jogo que a gente nunca tinha explorado e ficou muito legal e com certeza vamos explorar muito muito mais daqui pra frente, que é:

***Diálogos entre NPCs***


É isso mesmo... linhas de diálogo que um NPC fala para o outro... como por exemplo na imagem abaixo:

NPC: "Christ, 3hrs and a half to get here today"/"Jesus, 3hrs e meia pra chegar aqui hoje"

Na imagem acima o texto aparece na legenda da imagem... então toda a raid (termo usado pra definir um grupo muito grande de jogadores em MMOs, caso alguém não saiba) que está se organizando pra chamar o Boss fuderastico que é você, um dos caras la no meio ta reclamando que hoje a raid demorou muito pra chegar nesse ponto da dungeon... os outros concordam, mas se mostram otimistas... um até diz que ta esperando faz tempo pra por a mão na arma do Boss (sua arma!), e por fim o líder do grupo pede silêncio pra começar a luta que exige muita concentração.

Esse é apenas o diálogo inicial, e usamos esse diálogo até como tutorial disfarçado... em um dos casos (existem vários diálogos, um deles é escolhido aleatoriamente a cada vez que o jogador inicia o jogo) um dos jogadores diz "É minha primeira vez aqui, por favor explica a luta", e os outros dizem como o Boss é épico (você é épico!), que tem ataques mortais e tudo o mais... e o líder fecha dizendo que é só sair de cima das coisas brilhantes (a dica mais óbvia e tradicional de todos os chefes de todos os MMOs de todo o mundo =P).

LEEEROOOOYYYYYYY JENKIIIINNNSSSSS!!!!1111

Eu sei que parece bobeira... as falas deles não afetam em absolutamente nada o jogo... mas de verdade, adicionam uma camada de imersão na ideia que você é o chefe, o fodão, que é até difícil de entender. Durante a luta eles reclamam uns com os outros sobre falhas de gameplay, por exemplo, os Tanks reclamam que os Healers não estão curando bem, os Healers avisam que estão ficando sem mana, pedem para os arqueiros usarem bandagens, os arqueiros falam quando usam uma magia forte pro Tank manter o aggro do Boss... enfim, detalhes... quando um deles morre ele pode ficar puto por morrer e falar "GG to fora", um monte de piadinhas internas de MMOs que dão uma camada muito legal pro jogo.

Game Over... jeito é esperar seu respawn =/

Quando os jogadores ganham no entanto, eles começam a discutir os itens que caíram de você, como por exemplo, na screenshot acima um dos Healers está empolgado porque caiu o cajado Amathena (qualquer relação com esse item é mera coincidência), um cara está reclamando que você demorou para morrer, o outro já está formando um novo grupo pra fazer heroic mode... boberinhas, frases pequenas, mas que dão um humor pro jogo pelo mesmo motivo que os "memes", são coisas que a gente ta tão acostumado de ouvir enquanto joga, que quando vê um NPC que quer se passar por humano, falando isso... é... cômico! haha

Capítulo 5 - Conclusão

Resumidamente, o que tenho a dizer do GGJ é que foi MUITO legal participar, a gente não se preocupou muito com tema, com nada desse tipo, a gente se preocupou em pegar esse tempo e usar de maneira criativa e foi um esforço muito válido e recompensador.

Acho que não preciso nem dizer como estamos empolgados em trabalhar em cima dessa ideia  pra ser bem sincero eu to contando os segundos pra pegar esse projeto e deixar mais robusto, já tivemos UM MONTE de ideias em cima desse jogo e com certeza vocês vão ouvir mais sobre esse projeto nos próximos tempos.

Bom, como sempre, gostaria de agradecer a paciência por ter lido até aqui, espero que tenham gostado do nosso relato sobre o GGJ, e qualquer comentário, sugestão, crítica, etc, deixa um comentário que a gente responde assim que possível.

Grande abraço!

4 comentários:

  1. Achei muito bacana o relato de vocês e o game ficou muito divertido. Abraços.

    ResponderExcluir
  2. Valeu Alan, que bom que gostou! Abraços!

    ResponderExcluir
  3. Caras, parabéns, o jogo ficou FODA. Achei que você já tinham algo bem desenvolvido antes da GGJ e tinham "aproveitado" pra terminar lá. Gostei muito, mas ficou faltando um final, falaí! Nem um botãozinho de voltar?
    http://www.youtube.com/watch?v=R9zcA48oalQ&feature=youtu.be

    ResponderExcluir
  4. Valeu mano! Então o que aconteceu com você foi um bug, porque tem final sim, é que as vezes tá acontecendo isso, acaba a fase e não aparece nada.... Mas valeu ae por jogar e ter gostado ^^

    ResponderExcluir