Pular para conteúdo

Blog

Esse blog contém principalmente a minha coleção de projetos pessoais, mas também pode vim a conter alguns artigos sobre assuntos que eu esteja interessado em discutir.

Witch Hat Atelier Spell Maker

Static Badge Static Badge

Witch Hat Atelier Spell Maker é um editor de magias digital para fãs da série Witch Hat Atelier que permite criar, editar e compartilhar magias baseadas no sistema de magia dessa série. Esse projeto é um site estático desenvolvido com Typescript e Node.js, hospedado na Cloudflare Workers & Pages.

Witch Hat Atelier Spell Maker Preview

Criada por Kamome Shirohama, a série de fantasia Witch Hat Atelier, em forma de mangá e anime, é uma das minhas favoritas. Não apenas a mangaká demonstra habilidades artísticas e de composição incríveis, a ponto de ser sua própria mágica, mas ela também cria personagens interessantes e enredos cativantes que forçam o leitor a ponderar os temas apresentados.

daviamsilva.dev

Static Badge Static Badge Static Badge Static Badge


É o meu site atual, em que você está lendo esse texto agora mesmo. Ele foi criado utilizando como base a Material for MkDocs para conter informações sobre mim, minhas formas de contato, apresentar o meu currículo digital e listar todos os meus projetos principais de programação.

A escolha dessa ferramenta foi devida à minha experiência usando-a no meu trabalho no Kepi Supermercado para documentar processos e organizar informações. Utilizando o modo live preview da aplicação é possível rodar um site localmente que atualiza em tempo real conforme for necessário adicionar e alterar os conteúdos da documentação.

Animated Pokémon

GitHub DaviAMSilva/AnimatedPokemon YouTube Steam Downloads Steam Inscrições Steam Favoritos


Um sou um fã dos jogos de Pokémon, especialmente os clássicos que ainda tinham toda a apresentação em pixel art (1). Um dia enquanto eu estava jogando Pokémon Black eu imaginei quão interessante seria ter um papel de parede animado de um Pokémon utilizando as animações de pixel art presentes especificamente nesse jogo e no jogo seguinte.

  1. O meu jogo favorito é o Pokémon Emerald, que eu tive oportunidade de jogar em cartucho pela primeira vez após comprar o equipamento para o meu projeto de faculdade Arcade Mania.

A partir disso eu me perguntei se não seria possível criar de maneira automática um papel de parede animado para cada Pokémon existente. Na época existiam um pouco menos de mil Pokémon distintos, mas com o lançamento de Pokémon Scarlet e Pokémon Violet em 2022 esse número já foi superado.

Nesse mesma época eu tinha começado a utilizar a ferramenta Wallpaper Engine em meu computador pois eu gostava dos planos de fundos animados que ele conseguia produzir e não estava muito preocupado com o efeito dela na performance do sistema. Um dos modos de funcionamento dessa engine é baseado em HTML e JavaScript o que era perfeito para um projeto desse tipo.

Animated Pokémon - Ícone contendo Pikachu

O projeto envolve duas partes, a primeira delas sendo um script escrito em Python responsável por encontrar, baixar e organizar as informações dos Pokémon desejados utilizando a API PokéAPI construída e mantida por fãs da franquia. O script inclusive salva tais informações em um cache local. Isso foi preciso pois as informações necessárias precisam ser obtidas utilizando quase mil buscas distintas isso era absolutamente necessário. O resultando desse script era um arquivo JavaScript contendo todos os Pokémon em uma lista para ser importada no papel de parede em si.

A segunda parte é composta de uma simples página HTML contendo um local para inserir alguns dados do Pokémon, um local para inserir a sua imagem animada e um plano de fundo colorido de acordo com os tipos do Pokémon. A verdadeira complexidade estava no JavaScript da página devido ao fato que ele precisava interagir com o framework disponibilizado pela Wallpaper Engine para fornecer diversas opções de customização para o usuário final do wallpaper, como tempo para a troca de Pokémon, opções de cores, entre outras.

Dessa forma eu fui capaz de publicar meu papel de parede no Steam Workshop onde ele teve um sucesso moderado e foi bem recebido. Até hoje, no meu sistema Linux atual eu ainda o utilizo graças ao plugin Wallpaper Engine for Kde.

codinStruct

GitHub codinStruct/codinStruct Website codinStruct Website codinStruct Next


É o projeto mais moderno que eu já desenvolvi durante o quarto semestre da minha graduação na Doctum. Foi parte de um trabalho em grupo com tema livre em que nossa motivação foi:

O trabalho é uma plataforma que oferece um repertório de informação sobre linguagens de programação, apresentadas de diferentes formas tal que facilite o aprendizado dos usuários através de um portal que agrupa esses conhecimentos em um só lugar.

Quase todo brasileiro que busca aprender programação percebe a escassez de conteúdo nacional de qualidade sobre a área, e quando existe costuma estar em um lugar obscuro.

Conhecemos bastante as dificuldades e necessidades do possível usuário, pois passamos pelas mesmas. Isso é uma fonte de inspiração e motivação que nos mostra a utilidade de nosso projeto e transcende retorno financeiro, mas não descartamos a possibilidade de monetização.

No fim o projeto incorporou uma documentação das linguagens C, JavaScript e Python.

O projeto contêm três partes principais: O site em si, para apresentar o conteúdo; o conteúdo escrito em markdown; e um conversor de markdown para o html que seria importado pelo site.

Em retrospectiva é claro como esse trabalho é similar a projetos como MkDocs, GitBook e Jekyll, mas na época nós queríamos desenvolver tudo nós mesmos.

Quando o site foi desenvolvido nos o hosteamos na plataforma Heroku, no plano grátis, mas depois de alguns anos a plataforma essencialmente anunciou o fim do plano grátis, e como esse era apenas um projeto escolar simples não tomamos ação para manter o site funcionando pelo Heroku.

Felizmente um dos meus colegas nesse trabalho, Luiz, pessoalmente criou uma versão do conteúdo para estar acessível por meio do GitHub Pages utilizando a ferramenta mdBook, disponível em codinStruct. Adicionalmente ele também criou uma versão utilizando a ferramenta Next.js, disponível em codinStruct Next.

Arcade Mania

GitHub DaviAMSilva/Arcade_Mania GitHub DaviAMSilva/Arcade_Mania Release:latest


Esse foi um projeto que eu realizei individualmente durante o segundo semestre da minha graduação na Doctum. Ele envolvia a criação de um jogo para a plataforma Game Boy Advance da empresa Nintendo, lançado em 2001.

O projeto era de escolha livre, desde que utilizasse a linguagem C. Os motivos que me levaram a essa escolha foram basicamente:

  1. Os jogos desenvolvidos para o GBA, oficiais ou criados por fãs, são desenvolvidos em C, apesar de possivelmente utilizarem partes específicas escritas em Assembly.
  2. Eu gosto de jogos eletrônicos e não discrimino jogos clássicos ou retro.
  3. Eu possuo um Game Boy Advance SP (variação do GBA original) e poderia usar o trabalho como incentivo para comprar um aparelho e um cartucho capazes de gravar ROMs de jogos para serem jogados em hardware original.

A plataforma só está disponível para desenvolvimento amador devido ao trabalho de várias pessoas que realizaram e continuam realizando engenharia reversa no dispositivo e jogos para documentar as técnicas de desenvolvimento hoje existentes. Alguns dos projetos utilizados durante o desenvolvimento foram devkitPro, Tonc, grit, GBATek e CowBite.

Devido a essa complexidade técnica da plataforma e como ela me forçou a ser muito mais atento com o código que eu desenvolvia eu até hoje considero esse como o projeto do qual eu tenho mais orgulho de ter realizado. Para mim é um dos projetos mais organizados e completos que eu já criei devido a todas as ferramentas internas que eu tive de criar para suportar o desenvolvimento e compilação do projeto, includindo o melhor makefile que eu já criei. No final tudo valeu a pena quando eu tive a oportunidade de jogar meu jogo finalizado no meu GBA SP original, que foi uma experiência quase surreal.

Como experimentar

Baixe a release mais recente do arquivo Arcade_Mania.gba e instale um emulador do GBA (eu recomendo o mGBA). Por fim abra o arquivo no emulador e aproveite.

Esse projeto originalmente compunha apenas 2 jogos Snake e Memory Raid, mas após algum tempo depois da entrega do trabalho eu tive a vontade de implementar um porte do jogo Wordle, quando ele estava ganhando popularidade na internet. O motivo do uso desses jogos inicialmente baseia-se parcialmente do fato que Snake pode ser melhor criado usando tiles, enquanto para Memory Raid o ideal é utilizar sprites, sendo os dois principais sistemas gráficos do GBA.