A mecânica de mistura de cores

Feb 23, 2025

 A base do jogo de carros é bem simples: selecione o carro da cor solicitada até esvaziar os 30 espaços do estacionamento; entretanto nem todas as cores vão estar disponíveis assim que o jogo carregar.

Cores como Roxo e Verde estão disponíveis no jogo, mas não aparecem inicialmente

Para conseguir cores como Roxo, Verde ou Marrom é necessário efetuar a mistura de cores. Ao clicar em um carro seguido de outro, os carros são 'unificados', criando uma terceira cor. Por exemplo, se misturarmos um carro azul com um carro amarelo:

Carro 1 (Azul) + Carro 2 (Amarelo)

O resultado é um carro na cor verde, ocupando o espaço previamente ocupado pelo carro 2 (amarelo).

Carro verde obtido da soma entre Carro Azul + Carro Amarelo

A solução para essa mistura foi a seguinte: um dicionário com todas as combinações possíveis de cor permitidas pelo jogo: 

Dicionário de cores

Pode parecer estranho, mas explico o motivo de utilizar o dicionário ao invés de um algoritmo de mistura de cores. 

A mistura de cores digitais no padrão RGB não utiliza as mesmas regras da mistura de tintas convencionais, de modo que a mistura de amarelo com azul não resultaria em verde, o que seria confuso para os jogadores. 

Minha primeira solução foi tentar um algoritmo que simulasse a mistura de tintas da vida real, mas o resultado não foi dos melhores. 

Então, encontrei uma biblioteca C# chamada MixBox que fazia justamente isso e o resultado foi perfeito. Então, porque não utilizei a mistura de cores?

Mixbox - biblioteca para mistura de cores

Ao utilizar um algoritmo de mistura de cores os resultados seriam infinitos, o que a principio pareceu ótimo; porém, isso poderia ser um problema para os jogadores. 

Imagine que o jogo peça para o jogador encontrar um tom específico de verde em meio a milhões de possibilidades de combinação; seria praticamente impossível. 

A solução que encontrei foi criar um dicionário com todas as combinações possíveis no jogo.

Desse modo, podemos controlar a quantidade máxima de cores sem extrapolar demais e podemos seguir as regras das tintas de forma manual (azul + amarelo = verde, vermelho + azul = roxo). 

Limitando as cores possíveis

Outra vantagem em utilizar a combinação por dicionário é que temos uma lista completa das combinações possíveis, o que vai me permitir construir um manual in-game para mostrar auxiliar os jogadores.

O próximo passo agora é a implementação da 'Inteligência Artificial' do jogo, ou seja, o sistema que vai solicitar a cor para o jogador e verificar se ela foi entregue corretamente, e eu pretendo trazer o progresso aqui com novos posts.

Até lá.