
Circuit Artist é um jogo de desenho e simulação de circuitos digitais.
|
|
|
|
|
|
|
|
|
🔧 Reformulei o motor de simulação para usar uma simulação orientada a eventos com atraso variável, levando em conta a topologia dos fios para criar um mapa de distância / atraso de propagação baseado no cálculo de atraso de elmore para árvores. Também leva em conta nands de fanout, então você tem coisas como quanto maior o fanout, maior o atraso, árvores propagando de forma diferente de "linhas" etc., para ter uma simulação mais "precisa" para que os jogadores possam jogar/desenvolver intuição para o design real de circuitos (mais ou menos).
🔍 As distâncias são mapeadas para pixels para que os jogadores possam visualizar os fios "propagando" com brilho, o que acho legal e ajuda a entender como as coisas funcionam. A renderização é feita em tempo real com alguns shaders.
🕤 Também adicionei um design baseado em delta na simulação para permitir que a simulação seja pausada e controlada para frente e para trás, para que os jogadores possam interagir com ela. Particularmente útil para depurar circuitos "cíclicos".
🍰 Os jogadores também podem adicionar camadas como no photoshop (até 3 camadas), e os fios das camadas podem se conectar com camadas vizinhas, embora NANDs só sejam permitidos na camada inferior. Fios nas camadas superiores têm uma velocidade de "propagação" maior.
🏆 Adicionei um sistema de campanha de ritmo mais lento para que novos usuários possam resolver problemas pouco a pouco e aprender conceitos gradualmente, testando/refinando soluções e acompanhando o progresso. Ainda está nos primeiros dias, pretendo colocar mais coisas depois.
👜 Adicionei uma UI tipo inventário para posicionar blueprints para que os jogadores possam construir sua biblioteca e reutilizá-la, o que também adiciona uma nova dimensão de progressão ao jogo.
🔉 Adicionei um pouco de som aos circuitos, então quando eles simulam eles vão "bipe" em função da atividade do circuito.
:godmode: A simulação também não é mais "imediata", os jogadores podem construir seus próprios clocks no modo sandbox apenas explorando o mecanismo de atraso. Componentes clocked/síncronos não funcionarão de graça, é preciso torná-los eficientes, adicionando uma dimensão extra de desafio/diversão ao jogo.
🚧 Há também uma fórmula/métrica simplificada de cálculo de energia para explorar a eficiência energética do circuito versus velocidade (embora ainda não esteja totalmente desenvolvida no jogo).
Confira o documento de física para mais informações (em andamento)
Para windows, você pode usar CMake + Visual Studio.
git clone https://github.com/lets-all-be-stupid-forever/circuit-artist.git
cd circuit-artist/
git submodule init
git submodule update
mkdir build
cd build/
cmake ..
make
Primeiro é preciso instalar o emsdk:
cd path/to/emsdk
./emsdk install latest # only needed the first time
./emsdk activate latest
source ./emsdk_env.sh # Windows: emsdk_env.bat
Depois:
mkdir b_wasm && cd b_wasm
emcmake cmake .. -DPLATFORM=Web
emmake make
Então o html é gerado na pasta b_wasm, você pode servi-lo via python -m http.server por exemplo.