
Circuit Artist es un juego de dibujo y simulación de circuitos digitales.
|
|
|
|
|
|
|
|
|
🔧 He reelaborado el motor de simulación para usar una simulación dirigida por eventos con retardo variable que tiene en cuenta la topología de los cables para crear un mapa de distancia / retardo de propagación basado en el cálculo del retardo de Elmore para árboles. También tiene en cuenta los nands con fanout, así que tienes cosas como que a mayor fanout mayor retardo, árboles que se propagan de forma diferente a las "líneas", etc., para tener una simulación más "precisa" y que los jugadores puedan jugar/desarrollar intuición para el diseño real de circuitos (más o menos).
🔍 Las distancias se mapean a píxeles para que los jugadores puedan visualizar los cables "propagándose" con un brillo, lo cual me parece genial y ayuda a entender cómo funcionan las cosas. El renderizado se hace en tiempo real con algunos shaders.
🕤 También he añadido un diseño basado en delta en la simulación para permitir que la simulación se pause y se controle hacia adelante y hacia atrás, de modo que los jugadores puedan interactuar con ella. Particularmente útil para depurar circuitos "cíclicos".
🍰 Los jugadores también pueden añadir capas como en photoshop (hasta 3 capas), y los cables de una capa pueden conectarse con capas vecinas, aunque los NANDs solo se permiten en la capa inferior. Los cables en las capas superiores tienen una mayor velocidad de "propagación".
🏆 Añadido un sistema de campaña de ritmo más pausado para que los nuevos usuarios puedan resolver problemas poco a poco y aprender conceptos gradualmente, probando/refinando soluciones y siguiendo el progreso. Todavía está en sus primeros días, planeo añadir más cosas después.
👜 He añadido una interfaz tipo inventario para colocar blueprints, de modo que los jugadores puedan construir su biblioteca y reutilizarla, lo que también añade una nueva dimensión de progresión al juego.
🔉 Añadido un poco de sonido a los circuitos, así que cuando simulan emiten un "beep" en función de la actividad del circuito.
:godmode: La simulación tampoco es ya "inmediata", los jugadores pueden construir sus propios relojes en el modo sandbox simplemente explorando el mecanismo de retardo. Los componentes sincronizados/clocked no funcionarán gratis, hay que hacerlos eficientes, lo que añade una dimensión extra de desafío/diversión al juego.
🚧 También hay una fórmula/métrica simplificada de cálculo de energía para explorar la eficiencia energética del circuito frente a la velocidad (aunque todavía no está completamente desarrollada en el juego).
Consulta el documento de física para más información (en progreso)
Para windows, puedes 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
Primero hay que instalar emsdk:
cd path/to/emsdk
./emsdk install latest # only needed the first time
./emsdk activate latest
source ./emsdk_env.sh # Windows: emsdk_env.bat
Luego:
mkdir b_wasm && cd b_wasm
emcmake cmake .. -DPLATFORM=Web
emmake make
Después se genera el html en la carpeta b_wasm, puedes servirlo mediante python -m http.server por ejemplo.