Month: April 2016

Existence – Postmortem

Olá pessoal! Mais um post no blog, desculpem pela falta de atividade nessas últimas semanas, então… No último final de semana participei pela nona vez a Ludum Dare, e aqui vai um post mais extenso, mostrando um pouco do meu processo.

Link para o jogo.

Game Design

Após sair o tema Shapeshifting, comecei a pensar em alguma coisa, mas queria sair do óbvio que era fazer com o que o jogador tomasse (literalmente) formas diferentes. Então como tinha assistido “Angel Beats” dias antes, pensei em algo depois da morte. Comecei a pesquisar coisas assim, e acabei chegando nessa página da wikipedia, sobre as três marcas da existência, por isso o nome Existence e adaptei os nomes dos três NPCs (Verdade, Abnegação e Coragem). Então o jogador, está morto, e meio que inspirado em “Grin Fandango”, ele está numa jornada para (no caso desse jogo) renascer. Ao completar cada quests dos NPCs a aparência do jogador se transforma, ganha uma nova forma para representar a jornada de não apenas uma vida, mas de qualquer pessoa. Isso é basicamente a ideia do jogo.

Então já estava na cabeça que queria fazer um jogo de plataforma, mas para ser interessante, seria bom um combate!! Meus jogos anteriores de plataforma eram de plataformas com puzzles, então queria fazer algo diferente. A mecânica de combate inspirada em vários jogos de plataforma como: “Muramasa Rebirth”, “Guacamelee”,  “Dust: An Elysian Tail”.

Image2

Para dar mais profundidade ao jogo, queria dar elementos de aleatoriedade, então coloquei a mecânica das cartas. Ela foi inspirada na mecânica de manipular os documentos de “Papers, Please”, a Unity UI tem API bem simples para fazer drag’n’drop dos elementos da UI, e é bem rápido fazer algo com ela.

Outro detalhe, é que o jogador pode atacar os NPCs, mas eles avisam para o jogador se preparar, pois eles vão revidar. Se o jogador provocar todos os 3 NPCs, o jogo passará a ter um tom avermelhando. Uma surpresa para os jogadores, já que alguns irão atacar os npcs outros não. E se o jogador matar um NPC, ele não é mais obrigado a completar aquela quest, mas essa ação leva para um final ruim do jogo: o sofrimento eterno.

Itens

Como o todo jogo de combate, é importante ter itens e alguma progressão. Para isso determinei esses itens:

  • Coração: Recupera 10% do máximo de pontos de vida. São dadas pelos inimigos e caixas.
  • +1: Dá uma vida. São dadas pelos inimigos e caixas
  • Cartas Roxas: são dadas apenas pelos inimigos.
    • Aumentam até 3 atributos:
      • velocidade de movimento (3 níveis)
      • dano do ataque (4 níveis)
      • cooldown do ataque. (3 níveis)
    • Estes valores são determinados pelo número de inimigos atributos:
      • Até 5 inimigos são cartas básicas que aumentam só um dos atributos.
      • Até 15 inimigos são cartas que aumentam apenas dois atributos.
      • >= 15, aumentam qualquer valor.
  • Cartas Amarelas: são dadas pelos NPCs ao completar uma quest.
    • Aumentam a vida do jogador
    • Aumentam o número de golpes no combo
    • Alteram visualmente o jogador para uma nova forma.

Inimigos

Também precisamos de inimigos, aqui são as principais regras deles:

  1. Cobra Normal (isolada): 3 pontos de vida, 1 ponto de ataque.
  2. Cobra Preta (isolada): 8 pontos de vida, 3 ponto de ataque.
  3. Cobra Normal (na zona de combate):
    1. Pontos de Vida: 40% dos pontos de vida do jogador, mas tem 10% de chances de ter 70% da vida do jogador.
    2. Pontos de Ataque: 60% de pontos de ataque do jogador, mas tem 10% de chances de ter 150% dos pontos de ataque do jogador.
  4. Cobra Preta (na zona de combate)
    1. Pontos de Vida: : mesmo cálculo da cobra normal + 3.
    2. Pontos de Ataque: mesmo cálculo da cobra normal multiplicado por 2.

E as cobras também um ponto fraco: elas recebem stum se o jogador pular em cima delas, e uma cobra pode dar stun na outra, acaba deixando o jogo meio cômico, outra coisa importante, foi deixar os ataques das cobras bastante telegrafados, para o jogador desviar deles. Também deixei um tempo relativamente grande, para deixar o jogo mais fácil, num jogo, de jams especialmente, é bom ajudar e conduzir o jogador chegar até o fim.

Arte

Como o jogo se passa num purgatório, pensei que ambientação seria no Paraíso, um lugar verdejante com bastante água. Usei essa imagem como referência para o cenário.

paradise1

Em seguida foi fazer o tileset com o Asesprite e o Clip Studio Paint.

Tilemap

Depois vieram os sprites dos personagens (com muitos frames!!). O sprite do jogador tem 4 formas, porém para economizar, as 3 outras formas e o NPCs foram feitos apenas modificando a primeira forma, assim deu tempo de fazer todas essas animações.

  • Parado (2 frames)
  • Andando (4 frames)
  • Pulando (2 frames)
  • Down (2 frames)
  • Ataque1 (4 frames)
  • Ataque2 (4 frames)
  • Ataque3 (4 frames)
  • Hit (2 frames)
  • Morte (13 frames)
  • Transformação (6 frames)

Totalizando 172 frames para o jogador.

Para o NPCs:

  • Parado (2 frames)
  • Andando (4 frames)
  • Pulo (2 frames)
  • Down (2 frames)
  • Ataque1 (4 frames)
  • Ataque2 (4 frames)
  • Ataque3 (4 frames)
  • Hit (2 frames)
  • Morte (3 frames)

Totalizando 37 frames para os NPCs.

Para a Cobra:

  • Parado (4 frames)
  • Andando (4 frames)
  • Jump (4 frames)
  • Hit (2 frames)
  • Morte (14 frames)
  • Stun (2 frames)
  • Ataque1 (4 frames)

Totalizando 34 frames para a Cobra.

Somando tudo, dá 243 frames apenas para 3 elementos do jogo! Mas para conseguir esse volume de frames, foi preciso fazer o trabalho da forma mais rápida possível, além de utilizar a PSDAnim, durante o processo de produção e exportação desses frames. Outro elemento que ajudou a dar mais variedade, foi a utilizada da DPSpritePalette, para criar variações de cores desses sprites dentro do jogo rapidamente!

Em seguida, para o design das cartas, tive a ajuda da Keli que as fez no domingo, e utilizei o que ela fez como base para os elementos da interface (botões, fundos, etc).

Level Design

Durante as primeiras ideias nas primeiras horas decidir que jogo terá 2 quests: liberar o caminho da água da Abnegação e coletar a carta da Coragem. Domingo, coloquei essa ideia no papel, e dividi a fase em áreas menores com certas funções:

e8b7980831d0bed17ee5fac5ff5ea798

  1. Início: o jogo começa com as cores meio estranhas, para fazer o jogador sentir a estranheza do mundo, e tem como função fazer o jogador se acostumar com os controles básicos (andar, pular), ter a primeira experiência de combate contra um inimigo, espinhos, descobrir os checkpoints (caso morra), coletar itens de vida. Ao falar com a Verdade, ao saber que o jogador estar morto, as cores mudam momentaneamente para tons de cinza, e em seguida as cores ficam um pouco mais “normais” e recebe a carta do 2-hit combo.
  2. Combate 1: nessa parte é apresentado a mecânica de combate obrigatório, em que o jogador só continua se derrotar todos os inimigos da área. Isso fiz baseado no jogo Murasama Rebirth, acho que é algo bem legal. Depois um desafio de salto de plataforma, sem grandes perigos. Nesse momento também é apresentada as caixas, que podem ser destruída e dar itens ao jogador.
  3. Quest 1: Aqui o jogador começa pulando mais espinhos, aqui planejava colocar os espinhos junto com alguns inimigos, mas a IA era muito burra e morria facilmente neles (hue). Aparece a Abnegação, que tentei dar mais personalidade fazendo com que ela dê um item de cura para o jogador toda vez que se aproximar. Em seguida o jogador deve subir as plataformas, enfrentar alguns inimigos (pela primeira vez a cobra preta é apresentada), coletar itens e destruir as caixas. Para evitar deixar essa parte muito linear, optei por colocar caminho dos dois lados, com vidas e inimigos em cada lado, para fazer o jogador explorá-los. Ao liberar a cachoeira, entra em ação o efeito de metaballs, as cores ficam no tom natural e é possível ouvir o som da água corrente.
  4. Combate 2: Mais combate para tomar tempo do jogador e fazer ele aproveitar a nova habilidade recebida (3-hit combo).
  5. Quest 2: A coragem diz para o jogador coletar sua carta. Aqui também tentei dar mais personalidade para ela, fazendo ele dizer “apenas para os mais corajosos”. Nesse momento para deixar o jogo mais “tenso”, é feito um efeito de noite, onde apenas os checkpoints são iluminados. Aqui começa uma região de batalhas contra as cobras pretas, que possuem mais pontos de vida e ataque. Ao coletar a carta, o jogador é avisado para voltar para falar com a Coragem e caminho acima é liberado.
  6. Fim: Ao chegar no colisor um pouco antes do checkpoint o evento de end game é disparado, e baseado nas ações do jogador ums dos finais é ativado:
    1. Se provocou os 3 NPCs, vai para o final ruim (3).
    2. Se não provovou nenhum NPC e completou as duas quests, vai para o final bom (1).
    3. Se foi nenhuma das anteriores, vai para o final (2).

mapa

Audio

O audio não tive muito tempo para fazer, já eram 21 horas de segunda, quando comecei a fazer os efeitos sonoros e a música. O jogo que fiz tem muitos feedbacks para o jogador e era preciso muitos efeitos, pelo tempo decidi fazer apenas 14, que considerei essenciais:

Jogador
01- Pular
02- Hit groud
03- Attack
04- Hit
05- Morte
06- Ativar Carta
07- Transformação

Itens
08- Coletar HP
09- Coletar Vida
10- Coletar Carta

Sfx Inimigos
11- Atacar (npc, cobra)
12- Pular (npc, cobra)
13- Hit (npc, cobra)
14- Morte (npc, cobra, caixa)

DvnSfxMaker foi usado em 13 deles e em apenas um gravei minha própria voz. Não tive tempo de manipular esses efeitos individualmente, então só normalizei cada um deles, apliquei um equalização (para para cortar os subgraves e os agudos) e coloquei um compressor com um ratio alto.

cc12775a8781903554894bde648bb18f.png

Para a música dinâmica, usei a técnica de vertical layering exibida nesse vídeo da Winifred Phillips com 4 camadas: base, água, combate e npc. As quatros são iniciadas ao mesmo tempo no jogo e inicialmente as 3 últimas tem volume 0. À medida que certos eventos ocorram uma camada sofre um “fade in”: ao chegar perto de um NPC, o volume da camada npc sobe, se entra numa batalha, acontece o mesmo para a camada batalha, etc. A base é apenas um loop de bateria com um baixo tocando um padrão de 4 compassos. Já a camada de combate, adiciona uma guitarra e adiciona mais notas ao baixo,  preenchendo os espaços vazios da base para deixá-lo mais pulsante. E o npc é apenas um pad fazendo acordes.

e96be171c598fe21eb403eb7ee134ede

Bom, é isso pessoal, até o próximo post!