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.
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:
O resultado é um carro na cor verde, ocupando o espaço previamente ocupado pelo carro 2 (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:
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?
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).
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á.