Code

Code related posts

DPSpritePalette 1.4 New Features!

DPSpritePalette 1.4 will be available  in a few days on on Asset Store but you can buy it and download right now on itch.io! Check it out the new features:

  • Import palettes from Pyxel Edit: Now you can use Pyxel Edit to generate your palette files and import them to the Palette Builder. The process is almost the same.

pngpalette.gif

  • Palette Combiner: combine two different Palette Textures into the same SpriteRenderer. Just add the DPPaletteCombiner componente and assign the Palettes Textures!

palettecombiner.gif

  • New shader for bilinear filtering: Just assign the new ‘Bilinear’ material variants to the Palette Material field! The setup of your sprites remains the same: Point filter mode, Compression to ‘None’ or Texture Format RGBA 32-bit.

dps-bilineardps-bilinear2.png

dps-itchio.png

AB Importer –

Hello! I was a bit bored and decided to make this little tool that I think can be useful for others. AwesomeBump is a great free tool to generate textures for a PBR workflow, but assign multiple textures to a material in Unity is a very time consuming  and boring thing  to do. So I spent a few hours to create the ‘AB Importer’, record a video and write this post! With this little tool you can import the textures from AwesomeBump and create material ready to be applied to a model with a few clicks! It automatically combines the metallic and roughness textures into a new texture for the Unity’s Standard shader.

How to use it? Just see this vídeo:

Download HERE!

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!

Project 0807 – Portmortem

Olá pessoal! No final de semana não teve updates no blog porque participei da Ludum Dare, uma tradicional competição de desenvolvimento de jogos.

Sshot02

Jogar AGORA!

Sempre quando participo de uma jam entro num modo berserker, em que o tempo se dilata e o sono não existe.

Passei dois dias, cerca de 43 horas só programando, criando sprites e sons apenas de placeholder. O sábado foi basicamente para criar o sistema combate com combos e o domingo passei criando a IA, evolução do personagem, sistema de insanidade, menus e outras coisinhas.

LD

Como estava o jogo 24 horas depois depois do início

Na madrugada de segunda-feira os principais componentes do jogo já estavam prontos, comecei a fazer o level design, e horas depois fui dormir pensando em fazer a arte quando acordar.

LevelDesign

Level Design feito no Photoshop Elements!

Quando acordei nem abri a Unity, senão poderia perder tempo programando algo e abri o Clip Studio Paint para fazer os sprites. Lá eu já tenho preparado meus brushes de pixel art. Então, fiz uma listinha de animações a serem feitas.

526775538b8d907236c93921c3381e6b

Fazendo as animações no Clip Studio Paint junto com a PSDAnim

Ainda bem que não parei para contar quantos sprites eu teria que fazer, senão desistido! Só de animações do jogador e de um inimigo foram quase 300!! Se juntar com os outros assets, são mais de 300!! Para fazer todos esses assets tive que simplificar bastante a arte dos personagens. Mais uma vez, a PSDAnim foi extremamente útil! A PSDAnim não é apenas visualizar, ela foi pensada também para exportar os frames prontos para serem usados. Depois de pronto todos os sprites, todos os arquivos foram processados de uma vez só, por um script em python que estava incluso nas versões antigas da PSDAnim. (na versão atual há um menu para exportar apenas o arquivo carregado).

QUADROS2

Frames exportados de uma vez só!

Quando terminei a arte já eram 7 horas, e precisava integrar todos esses sprites dentro da Unity. Agora outro ponto que preciso automatizar é a criação de Animations e e do AnimationController dentro da Unity! Aí sim, ficará uma toolchain perfeita! Quando terminei essa parte, já eram umas 22 horas. Então foram os detalhes finais: adição da DPSpritePalette para efeitos de mudança de paleta (diferentes tipos de inimigo, quando sobre dano, e efeito de transformação).

Finalmente os últimos minutos foram de play test, e ajustes no level design. Não tive tempo de fazer os  efeitos sonoros finais e de criar as músicas… Mas é isso. Gostei do resultado final, talvez ainda tenha algum bug aqui ou acolá. :P. Agora preciso de mais alguns dias para descansar e voltar com a programação normal do blog! Até!

 

 

DEVLOG #03

Sábado é dia de devlog!

Nesta semana me distanciei da programação de mecânicas do jogo e foquei em aspectos como documentação, preparação para o level design, persistência e comecei a programação do menu quando o jogo é iniciado. Haverá uma tela de seleção de número de jogadores (1 ou 2), configurações de controle e personalização de cada personagem.

Também comecei a pensar na música tema do jogo, que será tocada no final da fase tutorial. E falando em música, sempre fico atento a alguma promoção em efeitos ou instrumentos virtuais e como é Black Friday, promoções não faltaram. Passei a quinta e sexta pesquisando vários produtos que coubessem no meu orçamento de $50… hehe. Fiquei em dúvida entre o Strummed Acoustic, Sessions Strings, Sessions Horns da Native Instruments, Quatum Leap Solo Violin da EastWest e, finalmente, os Renassance Channel e PuigTec EQs da Waves. No final decidi pelo Strummed Acoustic. Queria poder comprar mais… hehe.. Mas pelo menos temos algo grátis! A Waves deu o TrueVerb, um reverb algorítmico muito bom. Ele junto com o Inverse Reverb da IK Mulmedia (que também peguei grátis meses atrás) me deixam satisfeito no campo dos reverbs algorítmicos. Só falta um bom reverb de convolução true stereo…

Enfim, uma semana sem muitas novidades para mostrar… Até a próxima!

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.

PSDAnim 0.3.0

Acabei de disponibilizar a versão 0.3.0 da PSDAnim. Agora a versão Windows vem com um instalador e não é mais necessário instalar bibliotecas de terceiros. Para usar é só instalar e executar! Outra novidade é a possibilidade de ocultar/exibir animações.

A PSDAnim é uma ferramenta que criei pra auxiliar o meu processo de criação e exportação de animações em pixel art dentro do photoshop e outros programas que exportam em psd (como o Clip Studio Paint). Cada vez que você salva o arquivo, a ferramenta detecta a mudança e atualiza a visualização instantaneamente! Cada quadro é um grupo na raiz com o formato “NomeAnimacao_Numero” (por exemplo”walk_1″ é considerado um quadro da animação walk), porém o número não indica a ordem. A ordem dos quadros é fixa, de baixo para cima. Isso evitar ter de gerenciar os grupos e camadas dentro da timeline do Photoshop.

Download (grátis)!

DPSpritePalette 1.1

Já está disponível a versão 1.1 do asset DPSpritePalette para o motor de jogos Unity.

A DPSpritePalette simula o efeito de troca de paleta dos jogos antigos e é super simples de usar. Nesta nova versão, foi adicionado o Palette Builder, que é uma ferramenta que constrói o arquivo de paleta usada pelo asset a partir das paletas que você exporta do Photoshop no formato .act.

Review na Asset Store

Review na Asset Store

Confira no vídeo abaixo como usá-la:

Disponível na Asset Store ou Itch.io.