← devlog

O cultivo que nunca adoece tinha ganhado o jogo

7 de setembro de 2026 · Pithvein

O Pithvein é um idle de fábrica biológica. Cada câmara cultiva um organismo que produz polpa, e a decisão do jogo é uma só: apertar uma câmara multiplica o que ela rende e acende um relógio que o jogo mostra na cara (seis horas, três, uma e meia). Até o nível seguro, nada acontece e a fábrica roda sozinha. Acima dele, você comprou tempo e sabe quanto.

Como o jogo inteiro depende dessa decisão existir, ele tem um portão automático que a mede. Três robôs jogam 24 horas simuladas: um que nunca passa do nível seguro, um que aperta só até onde a câmara aguenta até a próxima visita, e um que aperta tudo e deixa estourar. Se arriscar com cuidado não render mais que nunca arriscar, com folga, o gancho é enfeite e o projeto morre. Está escrito no documento de projeto desde o primeiro dia.

Ele aprovava. E o jogo não tinha decisão nenhuma.

O que estava escondido atrás de um preço

Até a versão 2.0.0, três dos seis cultivos eram conteúdo pago. Um deles, o líquen, quebra a regra central: ele não adoece nunca. É o preço dele ser assim que não ganha nada por vizinhança, e a ideia era que isso bastasse.

Na 2.0.0 as três plantas ficaram livres, porque cobrar por elas escondia justamente a parte interessante do jogo de quem não pagava. O portão continuou aprovando: +20,7% para quem arrisca com cuidado. Publicamos.

O problema é que o portão media só os cultivos que já eram gratuitos. Enquanto o líquen era pago, ele não estava na lista do robô, e o desequilíbrio não existia na régua porque a régua não olhava para lá. Liberar a planta mudou o jogo e não mudou a medição.

E o robô jogava mal

Isso só apareceu por acidente. Ao escrever um robô novo para uma versão seguinte, fui olhar como ele escolhia o que plantar, e a linha era esta: o cultivo de maior produção que couber. Produção no nível zero.

Nenhuma política joga no nível zero. Cada nível multiplica a produção por 1,7, e o que separa um cultivo do outro é até onde ele aguenta ser deixado sozinho. Corrigindo a escolha para a produção no nível que aquela política alcança, a tabela do jogo fica assim:

cultivo     rende no nível 0    folga    rende no nível seguro
vespeiro           88,00          0                    88,0
nódulo             52,00          2                   150,3
carniça            16,00          1                    27,2
pólipo              7,50          3                    36,8
líquen              5,00          9                   592,9

O líquen não adoece, então a folga dele era o teto do jogo: nove níveis, sem relógio nenhum correndo. Ele rendia quase quatro vezes o segundo colocado, e o robô o plantava por último, porque no nível zero ele é o penúltimo da lista.

O robô jogava sete vezes pior que um jogador atento faria, e o portão chamava aquilo de "política cautelosa". Duas falhas somadas, e cada uma escondia a outra: a régua olhava para o jogo antigo, e o robô jogava mal o bastante para o número sair plausível.

O número honesto

Com o robô escolhendo como um jogador escolheria, o veredito virou:

arriscar com cuidado rende -26,3% sobre nunca arriscar
❌ arriscar não paga o bastante: o dilema é enfeite

Ou seja: a resposta certa era encher a fábrica de líquen, nunca apertar nada, e nunca ver a necrose que a página do jogo anuncia. O mesmo catálogo, sem o líquen na lista, devolve +21,3% e aprova. A planta era a causa única.

O conserto, e por que ele não é um número menor

A tentação é baixar a produção do líquen até ele parar de ganhar. Isso funciona e é ruim: ele fica inútil nos primeiros níveis e o jogador só sente o valor dele depois de muito investimento.

O que faltava era um preço na dimensão certa. Quem não corre risco não pode alcançar a recompensa máxima, então o líquen ganhou um teto de nível: ele continua não adoecendo nunca, e em troca não passa do nível 4. O valor saiu de varredura, não de gosto: de 1 a 5 o dilema existe, no 6 ele cai para -2,6% e no 7 para -35,3%. A virada está entre 5 e 6, e 4 fica um degrau abaixo dela, com margem para o resto da tabela mexer.

Duas coisas vieram junto. A primeira: "nunca adoece" continua valendo acima do teto. O teto impede subir, não faz a câmara começar a apodrecer. Quem já tinha líquen no nível 9 num save da versão anterior não perde nada, porque punir o jogador por uma mudança de balanceamento que ele não pediu é trocar um defeito por outro pior. Foi a régua antiga da própria planta que apontou isso, reprovando a primeira tentativa.

A segunda é a régua nova, e é a que importa a longo prazo:

func _quem_nunca_adoece_tem_teto() -> void:
    for tipo in todos_os_tipos_calculaveis():
        if not Catalogo.regra(tipo, "nunca_adoece"):
            continue
        if Catalogo.nivel_teto(tipo) >= Catalogo.NIVEL_MAX:
            _erro("%s rende o máximo sem risco, e apaga o dilema" % tipo)

Ela vale para qualquer biologia futura que não tenha relógio. É o único jeito de a próxima não repetir isto.

O que eu levo disso

Portão automático não mede o jogo: mede o robô. Este projeto já tinha essa frase escrita nas próprias medições, de duas vezes anteriores em que o instrumento mentiu, e ainda assim ela aconteceu de novo, porque a falha nova não se parecia com as antigas.

O que dá para generalizar é mais estreito e mais útil: ao tirar um conteúdo da loja e liberá-lo, rode o portão com ele na mão do robô antes de publicar. É uma linha na lista de opções, e é a diferença entre medir o jogo que você acabou de fazer e o que você tinha antes.