Open source development for a high performance Rust communication engine, primarily for game show use.
The server software will host a web service and a WebSockets server on a
hard-coded IP adress and port at localhost:6942/
.
The Python bindings is manually typed and wheel built using PyO3. The JavaScript bindings is automatically generated using wasm-
The protocol in which the client and server communicates in is based
on serde
serialization of Rust structs. Bindings for Python and
JavaScript is available (see engine/engine.pyi
and the generated
node_modules/client/client.d.ts
)
- Install Rust using rustup and use cargo to run the server.
- Install a JavaScript runtime, like Deno, Bun, or Node.
- Install a Python implementation, preferably PyPy or CPython. Install maturin, a Python library which automatically generates Python bindings.
You may find project files from various subprojects in these directories:
Subproject | Directory |
---|---|
User Interface | /frontend/src/ |
Server Logic | /server/logic/ |
Server Utilities | /server/penguin/ |
Engine & APIs | /engine/src/ |
Engine Bindings Python | /engine/engine.pyi |
Client Communications | /frontend/client/src/ |
Client Bindings TS | /frontend/client/src/types |
See Hacking (above) for requirements. After that, the project may be built. Note that the Python bindings is automatically built by Actions and can be found here (Michaelsoft Binbows
for Windows, Penguin
for Linux),
- See the chick project.
- For client, use
chick front
. The Rust module will be automatically compiled and bundled, and hot-reload enabled Vite starts serving onlocalhost:5173
. - For server, use
chick run
. The Rust module will be compiled, the Python binding generated, the wheel built and installed automatically.server/main.py
is subsequenly called, withserver/
as current directory.
- For client, use any JavaScript runtime to invoke
compileRustDev
inpackage.json
, likebun run dev
,npm run dev
,yarn dev
, etc. - For server, compile the Python bindings with
maturin develop
(or if you want a.whl
file, usematurin build -o <name>
). Change your directory intoserver/
, and runmain.py
.
Copyright (c) 2023-2024 FalcoLabs.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.