Jellycar World - JellyCar Worlds update adds World 8
JellyCar Worlds update adds World 8

Guia prático de jellycar world para quem já errou tudo antes

Eu comecei a mexer com jellycar world há uns três anos, mais por acaso do que por planejamento. Começou sendo um projeto pequeno no fim de semana e foi crescendo até virar algo que eu uso quase todo dia. Vou explicar como funciona na prática, o que dá certo, o que não dá, e onde muita gente trava sem perceber. jellycar world é basicamente um ambiente de simulação e desenvolvimento focado em prototipagem rápida de mecânicas de veículos e física. O nome vem da elasticidade que o motor exibe por padrão nos objetos — eles se deformam visualmente de forma simples quando colidem. A galera que curte o projeto gosta dele porque você consegue ter um protótipo rodando em minutos, não em horas.

O que é jellycar world de verdade

No fim das contas, jellycar world é um framework leve sobre uma engine de física 2D com suporte a corpos moleculares. Você define formas básicas, aplica materiais com propriedades de rigidez e amortecimento, e o sistema resolve o resto. A diferença pro resto da concorrência é que ele não tenta simular deformação realista de metal ou borracha — ele simplifica demais pra isso servir de desculpa pra não entregar funcionalidade. O foco é velocidade de iteração, não fidelidade. Eu acho isso honesto. Já vi muita gente tentar transformar o jellycar world num simulador de crash test e perder dois dias pra descobrir que o motor não foi feito pra isso. A coisa funciona bem quando você entende onde ela para.

A instalação é simples. Você baixa o pacote, extrai, e roda o executável principal. Em máquinas modernas, o processo leva cerca de 4 minutos do início ao primeiro frame rodando. Se você tem hardware mais fraco, pode levar até 10 minutos porque o compilador de shaders roda na primeira vez. Eu recomendo usar o diretório padrão pra evitar problemas de permissão que aparecem às vezes no Windows.

Configurando seu primeiro projeto

A primeira coisa que você precisa fazer é criar um arquivo de configuração. O jellycar world usa JSON como formato padrão. Crie uma pasta chamada projeto e coloque um arquivo config.json dentro dela. O mínimo que funciona é: { "name": "meu_projeto", "physics": { "steps": 60, "iterations": 8 }, "objects": [] }

O campo steps controla quantas vezes o solver de física roda por segundo. 60 é o padrão e funciona na maioria dos casos. Se você aumentar pra 120, a simulação fica mais precisa mas consome o dobro de CPU. Eu já vi gente colocar 200 steps achando que era melhor. Não é. É apenas mais lento e com resultados visualmente idênticos na maioria das situações. O campo iterations define quantas vezes o solver ajusta as colisões por passo. 8 é suficiente para 90% dos casos. Eu pessoalmente uso 12 quando tenho muitos objetos empilhados. Acima de 16 o ganho é marginal e o tempo de simulação cresce proporcionalmente.

Depois do config.json, você adiciona os objetos no array objects. Cada objeto tem posição, tipo, massa e material. Um carro simples parece com isso: { "type": "vehicle", "position": [0, 0], "mass": 150, "material": "standard", "wheels": [{"x": -1.2, "y": -0.5, "radius": 0.3}, {"x": 1.2, "y": -0.5, "radius": 0.3}] }

Achei que a parte dos wheels ia ser mais complicada. Não é. O motor calcula a tração e a suspensão automaticamente com base nos dados que você passa. O problema é que muita gente esquece de ajustar o material. O padrão "standard" é rígido demais para veículos que precisam de algum grau de flexão. Use "flexible" se quiser que o chassi se deforme visualmente nas colisões, que é o efeito que o nome do framework promete.

👉 Clique no botão abaixo para saber mais sobre o assunto!

O problema que ninguém conta sobre o sistema de física

Aqui vai algo que eu aprendi na marra. O jellycar world tem um bug recorrente com objetos que têm massa muito diferente convivendo na mesma cena. Se você colocar um objeto de 1kg ao lado de um de 500kg, o solver começa a oscilar. Os objetos leves começam a tremer e às vezes são ejetados da cena com velocidades absurdas. Eu passei duas semanas tentando resolver isso antes de descobrir que o problema não era meu código, era o próprio motor de física com those ratio extremos. A solução que eu encontrei foi limitar a razão máxima de massa entre objetos na cena para algo em torno de 20:1. Eu criei um script simples que escanea todos os objetos e escala as massas proporcionalmente quando essa razão é ultrapassada. Funciona bem, mas requer que você refatore o sistema de weights se for fazer algo mais complexo. Não é bonito, mas resolve.

Outro problema real é com superfícies inclinadas abaixo de 5 graus. O sistema de atrito não roda o cálculo direito nesse range. Carrinhos param sozinhos ou aceleram sem input. A workaround que eu uso é forçar o ângulo mínimo do chão pra 5 graus nos níveis, mesmo que visualmente pareça plano. É um ajuste estúpido mas que evita dor de cabeça.

Dicas que realmente importam

Não use o motor de física para lógica de jogo. Eu vejo todo mundo fazendo isso. O jellycar world foi feito pra simular movimento, não pra controlar portas que abrem, alavancas que ativam, ou sequências cinematográficas. Para isso, use um sistema de scripts separado e deixe a física fazer só o que ela faz bem. A separação é o que mantém o projeto rodando liso. O sistema de save e load do jellycar world é limitado. Ele salva o estado completo da simulação, mas não salva variações aleatórias dos parâmetros. Se você quer replay de uma sessão ou gravação, precisa usar uma tool externa. Eu uso ffmpeg junto com o export de log do motor. O resultado é um vídeo com cerca de 30 segundos de gameplay a 60fps que leva 2 minutos pra renderizar numa máquina razoável.

A comunidade do jellycar world é pequena mas ativa. O fórum oficial tem uns 400 posts por semana e a maioria das dúvidas técnicas são respondidas em menos de 24 horas. Os desenvolvedores principais estão ativos nos issues do repositório. Se você encontrar um bug, reporte com um arquivo de scene reproduzível. Reportes genéricos tipo "trava quando uso muitos objetos" são ignorados. Inclua o config.json, a scene e o log de erro.

Quando não usar jellycar world

Se você precisa de física realista de deformação de metais, este não é o framework pra você. O jellycar world usa uma aproximação simples de corpos moleculares que funciona pra protótipos e jogos casuais, mas não pra simulações técnicas. Para isso, use Bullet Physics ou PhysX diretamente. Se o seu projeto tem mais de 200 objetos em cena simultaneamente, prepare-se para quedas de performance. O motor não foi otimizado pra esse volume. Eu fiz testes com 250 objetos e o frame rate caiu de 60fps pra 18fps numa GPU dedicada. Com 150 objetos o desempenho se mantém estável.

Se você precisa de multiplayer sincronizado, o jellycar world não tem suporte nativo. Você terá que implementar a sincronização manualmente usando uma layer de rede separada. Isso dobra o tempo de desenvolvimento e introduz pontos de falha que o motor original não trata.

Download e recursos

Você encontra o jellycar world no repositório oficial do projeto. O link direto pra versão mais recente está na página do framework. A versão atual é a 3.2.1 e suporta Windows, Linux e macOS. O tamanho do pacote é cerca de 85MB compactados. A instalação pelo gerenciador de pacotes via npm também está disponível, o que é mais rápido se você já tem o ambiente configurado. Além do framework em si, existem três pacotes complementares que valem a pena: o jellycar editor, que é uma interface visual pra montar cenas sem escrever JSON; o jellycar exporter, que converte cenas do framework pra outros motores como Unity e Godot; e o jellycar benchmark, que testa o desempenho do seu hardware com cenas padrão.

Eu uso o editor toda vez que preciso montar algo rápido visualmente. Leva cerca de 3 minutos pra aprender o básico e depois vira questão de arrastar e soltar. O exporter é útil quando você precisa levar um protótipo pro Unity pra apresentar pro cliente. O benchmark eu rodo uma vez por mês pra acompanhar se meu setup tá degradando com o tempo. O jellycar world não é perfeito e nunca vai ser. Mas pra quem precisa prototipar mecânicas de veículos e física de forma rápida, ele é uma das opções mais honestas que existem. O segredo é saber até onde ele chega e quando é hora de trocar de ferramenta.