
Circuit Artist est un jeu de dessin et de simulation de circuits numériques.
|
|
|
|
|
|
|
|
|
🔧 J'ai retravaillé le moteur de simulation pour utiliser une simulation événementielle à délai variable prenant en compte la topologie des fils afin de créer une carte de distance / délai de propagation basée sur le calcul du délai d'Elmore pour les arbres. Il prend également en compte les NAND à fanout, donc plus le fanout est élevé, plus le délai est important, les arbres se propageant différemment des « lignes », etc., afin d'avoir une simulation plus « précise » pour que les joueurs puissent jouer/développer une intuition pour la conception réelle de circuits (en quelque sorte).
🔍 Les distances sont mappées aux pixels afin que les joueurs puissent visualiser les fils qui « se propagent » avec une lueur, ce que je trouve cool et qui aide à comprendre comment les choses fonctionnent. Le rendu est effectué en temps réel avec quelques shaders.
🕤 J'ai également ajouté une conception basée sur les deltas à la simulation pour permettre de mettre en pause et de contrôler la simulation dans les deux sens afin que les joueurs puissent interagir avec elle. Particulièrement utile pour déboguer les circuits « cycliques ».
🍰 Les joueurs peuvent également ajouter des calques comme dans Photoshop (jusqu'à 3 calques), et les fils d'un calque peuvent se connecter aux calques voisins, bien que les NAND ne soient autorisés que sur le calque inférieur. Les fils sur les calques supérieurs ont une vitesse de « propagation » plus élevée.
🏆 Ajout d'un système de campagne à rythme plus lent pour que les nouveaux utilisateurs puissent résoudre les problèmes petit à petit et apprendre les concepts progressivement, en testant/affinant les solutions et en suivant leur progression. C'est encore au stade précoce, je prévois d'ajouter plus de contenu plus tard.
👜 J'ai ajouté une interface de type inventaire pour placer des blueprints afin que les joueurs puissent construire leur bibliothèque et la réutiliser, ce qui ajoute également une nouvelle dimension de progression au jeu.
🔉 Ajout d'un peu de son aux circuits, donc lorsqu'ils simulent, ils « bipent » en fonction de l'activité du circuit.
:godmode: La simulation n'est également plus « immédiate », les joueurs peuvent construire leurs propres horloges en mode sandbox en explorant simplement le mécanisme de délai. Les composants synchrones/horlogés ne fonctionneront pas gratuitement, il faut les rendre efficaces, ce qui ajoute une dimension de défi/plaisir supplémentaire au jeu.
🚧 Il y a aussi une formule/métrique simplifiée de calcul d'énergie pour explorer l'efficacité énergétique des circuits par rapport à la vitesse (même si ce n'est pas encore entièrement développé dans le jeu).
Consultez le document sur la physique pour plus d'informations (en cours de rédaction)
Pour Windows, vous pouvez utiliser 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
Il faut d'abord installer emsdk :
cd path/to/emsdk
./emsdk install latest # only needed the first time
./emsdk activate latest
source ./emsdk_env.sh # Windows: emsdk_env.bat
Ensuite :
mkdir b_wasm && cd b_wasm
emcmake cmake .. -DPLATFORM=Web
emmake make
Ensuite, le html est généré dans le dossier b_wasm, vous pouvez le servir via python -m http.server par exemple.