Skip to content
/ owl Public

A high performance server-client & intercommunication protocol implementation in Rust & Python for gameshows!

License

Notifications You must be signed in to change notification settings

falcolabs/owl

Repository files navigation

owl

a high priority FalcoLabs project

GH Actions linter ms windows build linux build
Made with Python Made with Node.js Made with TypeScript Made with Rust
meme1

Open source development for a high performance Rust communication engine, primarily for game show use.

Technical overview

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)

Hacking

  • 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

Building

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),

For chick

  • 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 on localhost: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, with server/ as current directory.

Other build tools

  • For client, use any JavaScript runtime to invoke compileRustDev in package.json, like bun run dev, npm run dev, yarn dev, etc.
  • For server, compile the Python bindings with maturin develop (or if you want a .whl file, use maturin build -o <name>). Change your directory into server/, and run main.py.

Licensing & Copyright

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/>.

About

A high performance server-client & intercommunication protocol implementation in Rust & Python for gameshows!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published