Start basic structure design

This commit is contained in:
Blizzard Finnegan 2024-02-07 12:58:20 -05:00
parent 9d641b3843
commit 468f2bacd7
Signed by: blizzardfinnegan
GPG key ID: 61C1E13067E0018E

18
LibrariesAndStructure.md Normal file
View file

@ -0,0 +1,18 @@
# Basic Design
The total project will consist of several portions, including:
- A world server
- Currently, a Unity simulation
- A communications layer
- Written in Rust
- An image processor
- Written in Java (Not final)
- A visualisation frontend
- Writen in [TBD]
The world server and visualisation frontend will be run on a traditional (`x86_64` based) computer. For the world server, this will ensure that the simulation can be run at a high speed, for realism. For the visualisation, this is to simulate a real use-case, where you would not want consumers directly interacting with the hardware accelerator for security reasons.
The communication layer and image processing will be run on an embedded (`ARMv7` based) single-board computer, or SBC. The image processing can be done much faster on dedicated hardware, and the communication layer will be a light and high-level interface for the image processing.
Communication between the world server and the communication layer will be done over IP sockets, using the TCP communication protocol. As the communication layer will be written in Rust, it will be using the `std::net` TCP API. For communication on the SBC, Unix sockets will be used; `std::os::unix::net::UnixStream` on the Rust side, and `java.nio.channels.SocketChannel` for Java.The communication layer back to the visualisation frontend will make use of a REST API, again usin `std::net` TCP API for Rust.