Skip to content
This repository has been archived by the owner on Jan 4, 2023. It is now read-only.
/ nodus Public archive

A logic gate simulator written in Rust using the Bevy game engine.

License

Notifications You must be signed in to change notification settings

r4gus/nodus

Repository files navigation

Nodus

A graphical logic gate simulator.

This project is in an early stage of development but most of the basic features are implemented.

Features

Choose from a variety of logic gates, input controls and output controls to build digital circuits using a drag and drop interface.

Simple Circuit

Gates Input controls Output controls
AND High const Light bulb
NAND Low const 7-Segment display
OR Toggle switch
NOR Clock
NOT
XOR

Logic Gate Selection

Insert components into the world using a radial context menu.

Context Menu

Save the circuits you've created in a .ron file and reload them later.

Simple Circuit

Getting started

Setup the Rust development environment and Bevy.

Installing Rust

Install Rust by following the Getting Started Guide.

Setting up Bevy

Follow this Guide to setup Bevy.

Run program

First clone the repository.

git clone https://github.com/r4gus/nodus.git

Then switch into the project folder and run the program.

cd nodus
cargo run

Known Issues

Here are some tips to solve known issues.

Note: Make sure you've installed all required dependencies (linux, windows).

Ubuntu linker error

If you get the following link error in Ubunut/ Debian,

= note: /usr/bin/ld: cannot find -lxcb-render
          /usr/bin/ld: cannot find -lxcb-shape
          /usr/bin/ld: cannot find -lxcb-xfixes
          collect2: error: ld returned 1 exit status

try to install libxcb-shape0-dev and libxcb-xfixes0-dev separately, i.e. sudo apt install libxcb-shape0-dev libxcb-xfixes0-dev.

AMD driver issue

If you get the following runtime error,

thread 'main' panicked at 'Failed to acquire next swap chain texture!: Timeout', /home/USERNAME/.cargo/registry/src/github.com-1ecc6299db9ec823/bevy_render-0.6.0/src/view/window.rs:161:24

you can either try to disable vsync in src/main.rs, or switch from AMDVLK to RADV: AMD_VULKAN_ICD=RADV cargo run (maybe this can help).

Controls

  • lmb pressed: select/ drag (selection mode - s), pan (pan mode - p)
  • rmb pressed: open context menu
  • mouse wheel: zoom

Planned Features

  • Create new logic components from existing circuits
  • Create truth tables from circuits

Credits