Cities: Skylines é um jogo de simulação de cidade com complexidade suficiente para criar elementos lógicos universais. Usando elementos lógicos universais, você pode construir qualquer circuito, incluindo máquinas completas de Turing. Ou seja, como no Minecraft, podemos criar um computador dentro de Cities: Skylines. No entanto, seria muito difícil criar um computador com todos os recursos com base nesses elementos; portanto, demonstrarei um somador de 4 bits. Tudo é feito na versão básica do jogo; não são necessários mods ou complementos.
Este jogo, como qualquer outro simulador de construção da cidade, requer que o jogador forneça eletricidade e água à cidade. As usinas geram eletricidade, para isso precisam de água limpa e esgoto. As torres de água fornecem água limpa, os canos de esgoto permitem que você se livre dos esgotos e os dois tipos de edifícios requerem eletricidade. Essa dualidade entre esgotos e torres de água permite criar elementos AND e OR.
Principais participantes, da esquerda para a direita: uma usina de combustível líquido, uma torre de água, um cano de esgoto. Atrás é uma turbina eólica.A seguir, mostramos como construir o elemento AND. As duas entradas são linhas de energia que levam à torre de água (acima) e ao cano de esgoto (abaixo). A saída é uma linha de energia conectada a uma usina. Embora as entradas sejam zero na captura de tela, a usina ainda gera eletricidade - mesmo após o fornecimento de água e o esgoto funcionar, leva algum tempo para parar. Os prédios estão distantes, porque, caso contrário, a eletricidade poderia fluir livremente entre eles.
O elemento AND em um mapa regular mostrando camadas de eletricidade e água.Para completar a funcionalidade, precisamos de mais um componente: um inversor ou um elemento NOT. Para criá-lo, usaremos a simulação da dinâmica dos fluidos do jogo. O uso inadequado de barragens, canais ou uma carga muito pesada nos esgotos pode causar inundações nos edifícios. Uma central elétrica inundada não gera eletricidade. Isso é suficiente para criar o elemento NOT mostrado abaixo.
Acima: a camada de eletricidade do elemento NOT; abaixo: o sistema de esgoto é ligado e desligado.Um somador de 1 bit pode ser construído de acordo com o esquema de 9 elementos diferentes, mostrados abaixo. Quatro desses somadores podem ser encadeados para criar um somador de 4 bits. Coloquei os portões na grade para mostrar como eles se encaixariam no mapa.
O esquema de um somador de 1 bit com um carry.Para simplificar minha vida, decidi ativar dinheiro sem fim e jogar no mapa criado no editor de mapas. Você pode importar imagens PNG para o editor, que são usadas para carregar o mapa de altura. Eu criei um mapa com blocos de terra nos quais você pode colocar elementos lógicos como em uma
placa de circuito impresso ! É assim que o mapa se parece. As imagens mostram quatro somadores de 1 bit repetidos em uma grade 2x2.
Linhas quebradas são visíveis na imagem porque o jogo não funciona muito bem em bordas afiadas.Construir um circuito é um processo muito monótono, e tive que começar várias vezes por causa dos meus erros de cálculo. Um dos problemas que encontrei é a interseção de fios. Felizmente, as linhas de energia com uma diferença significativa de elevação podem se cruzar sem contato.
Somador de 1 bit. Liguei quatro desses elementos juntos.Finalmente, preciso construir uma cidade próxima, criando um volume de drenos suficientes para inundar simultaneamente até oito moinhos de vento (sim, nosso computador funciona como um cocô). Mas eu não chamaria essa decisão de ambientalmente amigável: cada elemento lógico usa uma usina de combustível líquido, portanto o nível de poluição é bastante alto. A depuração era difícil: às vezes acontecia que os trovões levavam ao colapso das linhas de energia. Ela é como raios cósmicos, mas atua por mais tempo.
Uma rede de linhas de energia que leva a uma das entradas de 4 bits.Gravei um vídeo para mostrar que a adição realmente funciona. No primeiro, defino um sinal na entrada conectando-o a uma central sempre ligada (como ligar um circuito integrado). À esquerda, defino o valor como 1001 (= 9), no meio de 1110 (= 14). Depois de definir os valores das entradas, acelerei o jogo e a saída nos cinco fios certos assumiu o valor de uma unidade. Depois de muito tempo, o valor final foi definido como 10111 (= 23). E realmente funciona!
No segundo vídeo, concentrei-me em um dos adicionadores. Você pode ver como o estado dos componentes muda ao longo do tempo até que o valor final de saída seja estabelecido (0 - soma, 1 - transferência).
O projeto tem algumas falhas. Isso tornará um computador
muito lento - uma adição de 4 bits leva cerca de 15 meses de tempo no jogo e cerca de 20 minutos de tempo real. Há problemas com o tamanho. Devido à maneira como a energia é implementada no jogo, os componentes do elemento lógico devem ser espaçados o suficiente; caso contrário, a corrente fluirá entre eles. O somador de 4 bits ocupou a maioria dos 9 blocos disponíveis em um jogo regular, mas eu não o otimizei muito. Até 25 peças podem ser usadas com mods. Se você tem idéias sobre como implementar cálculos mais eficientes, escreva sobre isso nos comentários do artigo original!