Pedro Hirakawaペドロ・ヒラカワ
← experimentos

Voyager

2026-08-13· pixel art · macos · widget · tauri
Voyager

Existem mil relógios e mil widgets de clima. Todos mostram o número certo e nenhum deles é gostoso de olhar. O Voyager nasceu de uma inversão simples: e se o dado não fosse o produto, e sim a experiência de olhar pro dado?

A resposta virou uma viagem de carro que nunca termina. Um veículo atravessa cenários em parallax enquanto o céu muda de cor conforme o horário, o sol nasce e se põe na hora certa da sua cidade, a chuva chega, a estrada vira neve. Você bate o olho e, além de saber que são 18h40, sente que são 18h40.

A referência que virou pilar

O ponto de virada foi lembrar do Johnny Castaway, protetor de tela da Sierra de 1992 com história de verdade. O náufrago não ficava em loop, ele pescava, construía coisas, a sereia aparecia, e em dezembro tinha até árvore de Natal. A mágica era dar uma olhadinha e ver o que estava acontecendo agora.

Isso virou pilar do produto. Um Story Director sorteia eventos elegíveis, pesa por raridade e evita repetição. Balão, avião e bando de pássaros são comuns. Estrela cadente à noite, foguete ao longe e animal cruzando a pista são raros. E de vez em quando um OVNI chega, paira, abre um feixe de luz e vai embora, uma vinheta com vários passos. É o que dá motivo pra deixar o widget ligado e olhar de novo.

Como é feito

A engine desenha camadas com parallax e spawna eventos, o conteúdo é um manifest de assets agrupado em sets (fazenda, cidade, costa, montanha). Trocar o visual é trocar dados, sem encostar em código, como funciona um endless runner 2D.

  • Doze camadas em quatro grupos — céu, chão, veículo e HUD, cada uma com seu fator de parallax: o céu não rola, a estrada rola a 100%, o mato da beira passa a 85%
  • Canvas 2D no navegador — sem build e sem dependência, o MVP inteiro roda abrindo o HTML
  • Tauri no desktop — o mesmo frontend virou o miolo do app, janela transparente, sempre no topo, leve o bastante pra ficar ligada o dia inteiro
  • Open-Meteo — clima e horário de sol amarrados à geolocalização real, nada de 6h/18h chumbado no código

O widget de notch

A primeira versão de produto não é uma janela solta no desktop, é um widget que abraça o notch do MacBook. A cena de direção acontece nas laterais e abaixo da câmera, o notch é o vão no meio.

Widget do Voyager encaixado no notch do MacBook, com o carro em pixel art atravessando a cena

São dois estados que alternam entre si: comprimido, carro à direita e relógio contraído à esquerda, e expandido no hover, carro no centro e um painel de local, temperatura, umidade e sol. Tem ainda uma terceira altura, uma gaveta preta que desce só quando chega notificação e recolhe sozinha em cinco segundos, sem alterar o estado da cena.

A pixel art (e a IA no lugar certo)

A direção de arte é pixel art detalhado, estética 16-bit, vibe synthwave drive: céus em gradiente com dithering, cordilheiras em camadas, água com reflexo. O herói é um Lancer Evo vermelho de perfil, faróis acesos à noite.

Como não dava pra desenhar tudo à mão, montei um pipeline. Geração via Retro Diffusion e PixelLab com paleta mestre imposta e tiling horizontal, um passo próprio de pixelização (downscale por área, remoção de fundo, quantização na paleta) e um validador automático que checa costura do tile e aderência à paleta antes do asset entrar no jogo. O piloto que validou o pipeline inteiro custou dez centavos de dólar. A IA não desenhou o produto, ela virou ferramenta dentro de um processo com controle de qualidade na saída.

O que eu tirei disso

Três coisas. A primeira é que restrição gera forma: a faixa de 528×90 pixels ao redor do notch é um enquadramento brutal, e foi ela que definiu o produto. Sem essa moldura, o Voyager seria só mais um wallpaper animado.

A segunda é que dado sozinho não emociona. A temperatura é a mesma no Voyager e no app de clima do sistema. A diferença é que um deles faz você olhar de novo.

E a terceira: calmo por padrão. Nada pisca, nada chama atenção, nada pede clique. É papel de parede, não notificação. Software que fica ligado o dia inteiro tem que merecer o espaço que ocupa, e a forma de merecer é não interromper nunca.

O Voyager ainda não tem build pública. Por enquanto é projeto pessoal rodando no meu Mac.