devlog

Devlog #07

Olá pessoal! De volta aos devlogs!

Passei alguns dias atualizar o blog por alguns motivos… Um deles foi que logo depois da Global Game Jam participei de outra game jam.. A GameJolt GDC Jam!

Escape

Escape

Fiz o jogo “Escape” (mais um ótimo título), dessa vez voltando a um jogo 3D (o último foi o Racend) e tendo modelar as coisas no Blender. Como foi uma jam de 72h, foi tranquilo. Só acho que puzzles que criei foram muito difíceis, e no final o jogo ficou na 44 colocação, poucas pessoas jogaram também, só 6 no máximo. O Selzier, um dos participantes dessa jam que ficou em quinto lugar, gravou um vídeo de gameplay do jogo, confira abaixo.

 

Outra coisa que me fez para os devlogs é porque no momento ando aprofundado nos meus estudos de música, então não tenho programado novas funcionalidades no jogo.

Atualmente estou aproximadamente na metade do curso de Songwriting da Berklee/Coursera. É muito bom, mas não acho muito indicado para iniciantes, pois melodia, harmonia ficam de fora. Confiram abaixo o meu exercício da Semana 5. Não é grande coisa, mas…

its_something_edited

Título: Goodbye
Letra, composição e arranjo: Davi Santos

Now you look at me and I look at you
I remember those firsts days in your place
After all these years your smile remains true
It’s the magical moment I wanted to embrace

but my dear I must confess
there is one thing i said
No, no, there is no excuse
It’s already dead
Goodbye

Enfim, é isso. Até o próximo devlog!

 

Advertisements

Global Game Jam 2016

Olá! Agora que me recuperei da Global Game Jam, é hora de escrever um post sobre ela.

12672064_1040025979372113_4858468692940679330_o

Staff GGJ Curitiba 2016

A cada ano o evento fica maior e melhor. Uma grade “festa” para desenvolver jogos. Dessa vez participei como staff, ajudei o evento na sexta e no sábado pela manhã no credenciamento. Foi bastante cansativo. hehe

12622085_1040009842707060_1405987630198596023_o

Eu fotogênico no credenciamento

Logo depois do credenciamento houve a abertura do evento, uma palestra da Intel e, finalmente, o tão esperado tema: ritual. Participo da Global Game Jam desde 2012, esse foi sem dúvida o tema mais simples e direto.

team1.jpeg

Equipe Bug? Eduardo, Giih, Bea, Eu.

Minha ideia foi tentar fazer um jogo simples, mas bem polido. Como na minha equipe 2 pessoas nunca haviam feito um jogos antes, e na GGJ o tempo real é só de aproximadamente 44 horas, preferir não arriscar. hehe. Então, logo ficou definido o que seria o jogo: um plataforma, sem inimigos, baseado em portas em que é preciso coletar chaves para abri-las.

Página do Jogo

sshot1

Então, ao contrário do que fiz nos jogos anteriores, dessa vez comecei pela arte! Primeiro defini o tamanho da tela (320 x 180 pixels), o tamanho da altura máxima da personagem (64 pixels) e o tamanho dos tiles (32×32 pixels). Deixei com a Beatriz a tarefa de desenhar e animar a protagonista do jogo e parti para a elaboração dos tilesets!

Mockup

Mockup da Biblioteca

No início pensamos em 5 tilesets para diferentes cômodos de uma mansão. Mas ao terminar o segundo tileset, pelo tempo gasto, resolvi cortar para apenas 3! Logo, antes de amanhecer os três já estavam prontos! Então, resolvi tirar um cochilo de 1 hora…

tileset

Tileset do jogo

Ao acordar, os sprites da protagonista estavam praticamente prontos, era hora de começar a programar as mecânicas do jogo e voltar para o credenciamento! Na hora do almoço, as coisas já estavam funcionando. A tarde voltei para a arte, fazer o sprite do vilão e sua animação (claro, usando a PSDAnim!).

No início da noite a maioria das coisas já estavam implementadas, então era hora de fazer o level design! Inicialmente o jogo teria 9 chaves para coletar e mais salas. Logo depois reduzi para 6 chaves e cortei algumas regiões.

level.png

Mapa do jogo

Mesmo assim, ainda foi bastante coisa para fazer. Muitos testes para posicionar bem as plataformas one-way, principalmente na sala mais vertical para evitar que jogador volte ao início. Tentei ser pouco punitivo caso o jogador erre algum pulo.

No início da fase resolvi deixar que o jogador visse uma porta de 6 chaves para saber que aquilo é importante e como não pode ser aberta, ele terá que ir para a esquerda que encontrará um porta com 0 chaves e poderá abri-la. No playtest de domingo no final da jam com os outros participantes, alguns acharam que a chave acima da porta ela para coletar, outros esqueceram dessa porta ao coletar todas as 6 chaves necessárias para abri-la e poucos não viram esta porta do início. Ok. Acho que foi mais uma questão visual da forma com que fiz. Mas logo ao entrar na segunda sala, o jogador encontrará outra porta fechada e finalmente como é a chave que deve ser coletada: ela brilha, gira, estica e encolhe, etc..

Voltando um pouco o tempo.. por volta do meio-dia o level design estava pronto! Faltava criar os efeitos sonoros (com o DvnSfxMaker, é claro), colocar a música dentro do jogo, e dar alguns toques finais (como o efeito de partículas quando a chave aparece), partículas e câmera lenta no final do jogo, gravar e editar os vídeos de gameplay (com a PlayClaw e HitFilm Express).

Pela primeira vez na Global Game Jam, meu jogo estava pronto antes das 15 horas de domingo, yeah!! Então era hora de fazer upload para o youtube, preencher o site da GGJ e o formulário com as informações dos vídeos, coisas que não tive tempo ano passado… hehe.

Enfim, o evento foi maravilhoso.

Devlog #06

Olá, primeiro devlog de 2016!

Desta vez focado em audio. Nesses dias aproveitei o tempo em alguns projetos secundários, um deles é o DvnSfxMaker!

O DvnSfxMaker é um plugin VST/AU para criar efeitos sonoros para jogos. É inspirado no Bfxr, logo possui algumas de suas características, mas não é meramente uma cópia dele. O meu objetivo é obter um maior controle sobre os parâmetros, ter alguns recursos novos e mais presets. Confiram no vídeo abaixo.

Espero terminá-lo até o dia 20. Falta pouco!

Outra novidade é que iniciei outra seção aqui na página: Samples&Patches. Lá você poderá encontrar um patch de violino solo para o sampler Structure e as respectivas regras de playback para software de notação Notion.

Até a próxima semana! (Espero que com notícias do Our Worlds :D)

Devlog #05

Olá pessoal! Mais um sábado, mais um devlog!

Nesta semana achei que fiz pouca coisa do projeto.. afinal só me recuperei da Ludum Dare na quarta.. hehe. Então, vejamos… o que foi feito… Incorporar e refatorei  alguns códigos feito na Ludum Dare dentro da DPEngine que é o meu framework base para os meus jogos.

Também fiz um update na DPLoadScreen para suportar a mudanças introduzidas versão 5.3 da Unity e temos uma nova feature: agora é possível fazer telas de carregamento com aquele “Carregamento Completo! Pressione qualquer tecla para continuar”. Logo estará na Asset Store este update!

É isso, de volta a programação normal e espero amanhã trabalhar mais no jogo. Até a próxima semana!

DEVLOG #04

Devlog time!

Nesta semana me distanciei um pouco da programação e acabei focando em alguns aspectos de audio. Segunda recebi o serial do Strummed Acoustic que havia comprado na sexta e resolvi passar um tempo brincando com ele. Abaixo você pode ouvir a primeira trilha que fiz com ele. Mas depois descobri alguns usos mais efetivos. É melhor combinar patterns simples e alternar rapidamente entre eles dentro do mesmo compasso.

No dia seguinte, por não ter comprado o Solo Violin da Eastwest, resolvi criar meu próprio patch de violino solo usando samples que estão no freesound.org. Baixei os samples, abri o Structure e depois de 2 dias criando patchs para várias articulações, keyswitches, round-robins, ajustando a posição, volume e afinação de cada sample, cheguei a um resultado que me surpreendeu! Ficou melhor que qualquer patch de violino solo da Miraslov Philharmonic, do Notion e da própria Structure!! Valeu a pena perder esses dois dias com isso. Já tenho planos para fazer outras sample libraries. hehe

structure.png

Por fim, passei mais um dia para fazer uma limpeza dos plugins que eu havia instalado no Reaper. Fui testando cada um e classificando melhor até chegar num número reduzido de plugins.

structure2.png

Bom, é isso. até a próxima semana!

Devlog #02

Mais um sábado, mais um post de devlog!

Nesta semana adicionei várias coisas! Comecei testando a implementação de um reconhecedor de padrões para ser utilizado em alguns puzzles do jogo. Como foi feito? A base de entrada era composta por 6 classes, contendo 8 amostras cada. Em seguida, criei dois classificadores usando o algoritmo k-NN (com k=3 ou 5), sendo que o primeiro utilizaria momentos de Hu para o vetor de características e o segundo apenas o histograma. Escolhi estas características, pois são rápidas de implementar e não tem uma grande complexidade para serem computadas em tempo-real (as imagens utilizadas no jogo são de 128×128 px). Posteriormente, os resultados dos dois classificadores são combinados e classe com o maior número de indicações (os classificadores faz k1 e k2 indicações) é a escolhida. Porém, se ela não atingisse mais da metade dos votos ((k1+k2)/2), o padrão de entrada seria rejeitado. Pois bem, depois de vários testes fui ajustando o classificador, mas a taxa de acerto não estava sendo suficientemente boa. Fim do primeiro dia…

No segundo dia, fiz mais experimentações, e nada satisfatório… Talvez outras características?… Por fim, acabei eliminando este método, pois pensei em outro mais familiar para os jogadores. Imagine a tela de bloqueio do seu celular. Dividi a imagem em zonas, e em seguida calculo o histograma de cada zona. Se o valor dos pixels preenchidos for maior que um limiar, significa que aquela zona foi marcada. Ter um limiar  é importante, pois o jogador pode pintar sem querer alguma zona ao deslocar o cursor de pintura. Outro ponto importante desta forma é valorizar traços retos e diagonais, já que o controle do cursor é preferencialmente feito por um joystick. Então, nada de desenhos complexos.

Reconhecerdor de Padrões

Nos dias seguintes, foram basicamente de implementações de mecânicas para jogos de plataforma: botões acionáveis, plataformas móveis, escadas, itens coletáveis, etc.

Enfim, uma semana de bastante trabalho e muitas ideias para a próxima semana… Até o próximo sábado!

DevLog #01 + Update do Desafio Semanal

Estou estreando outra série de posts chamada DevLog! Aqui falarei um pouco do desenvolvimento do jogo que é a expansão do jogo “Our Worlds” que criei na Ludum Dare #30. No momento, só tenho programado as funcionalidades, ainda não toquei na programação gráfica nem a arte do jogo. Algumas novidades:

Sistema de Itens e Inventário: Ontem programei a parte gráfica do inventário. Inicialmente, resolvi colocá-la acima do personagem. Depois testarei em algum lugar fixo na tela.

Editor de Fases: O jogo está sendo criado com a DPEngine, que é um framework que criei um tempo atrás para jogos 2D em pixel art e possui um sistema rápido e próprio de colisões por pixel! Logo, as fases não são baseadas em tiles nem polígonos de colisão. São utilizadas máscaras (imagens) para determinar onde há ou não colisões. Esse método tem algumas vantagens, como utilizar máscaras irregulares e/ou dinâmicas de colisão . Uma desvantagem é que utiliza mais memória, mas isso não é problema hoje em dia. Para o editor de fases, o que fiz foi incluir a rasterização dos polígonos criados pela PolyMesh e suporte para salvar e carregar uma polymesh em um arquivo.

Polígono rasterizado


E sobre o desafio semanal…

Desafio Semanal

Bom.. tive que adiar a data final para a próxima semanal. Acabei tendo que fazer outras coisas no horário planejado, mas está indo! Anteontem fiz alguns testes de tamanho. Resolvi utilizar tiles 16×16 e construí os shapes de alguns prédios para testar a escala. Parece bom.