Client-server architecture for Bevy

Overview

Sabi

Opinionated client-server architecture for Bevy

Goals:

  • Prediction based on inputs
  • Replication by a simple derive and adding a system to server/client
  • Priority queue based sending so we focus on important entities/components. Interest management based on changes/connecting players.
  • TBD (whatever else I feel like doin)

Is it production ready?

Who the hell knows but I'm using it. It definitely isn't super polished yet, but I'm hoping to improve that in the next couple months.

Feel free to contribute to this or to renet (the underlying library) here: https://github.com/lucaspoffo/renet Most of the hard work of getting the UDP/packets sending/encryption was done over there.

You might also like...
An online version of the popular game four in a row, written in Rust on the server side and Flutter + Dart on the client.
An online version of the popular game four in a row, written in Rust on the server side and Flutter + Dart on the client.

Four in a Row - Server An online version of the popular game four in a row, written in Rust on the server side and Flutter + Dart on the client. Downl

A minimalist socket-based client/server in Rust to illustrate a tutorial

The basics of unix sockets This repository serves as a reference for this tutorial blogpost How to run Install Rust and Cargo, and then do: cargo run

A multi-connection TCP reverse proxy server and client.

tprox A multi-connection TCP reverse proxy. The tprox server is able to proxy multiple incoming connections to the tprox client over a single TCP conn

SOCKS5 implement library, with some useful utilities such as dns-query, socks5-server, dns2socks, udp-client, etc.

socks5-impl Fundamental abstractions and async read / write functions for SOCKS5 protocol and Relatively low-level asynchronized SOCKS5 server impleme

RDE1 (Rusty Data Exfiltrator) is client and server tool allowing auditor to extract files from DNS and HTTPS protocols written in Rust. 🦀
RDE1 (Rusty Data Exfiltrator) is client and server tool allowing auditor to extract files from DNS and HTTPS protocols written in Rust. 🦀

Information: RDE1 is an old personal project (end 2022) that I didn't continue development on. It's part of a list of projects that helped me to learn

A simple message based networking library for the bevy framework

Spicy Networking for Bevy bevy_spicy_networking is a solution to the "How do I connect multiple clients to a single server" problem in your bevy games

Bevy plugin for the GGRS P2P rollback networking library.

Bevy_GGRS Bevy plugin for the 👉 GGRS P2P rollback networking library. The plugin creates a custom stage with a separate schedule, which handles corre

Bevy asset loader that transparently supports loading over http(s)

Bevy Web Asset This is a tiny crate that that wraps the standard bevy asset loader, and adds the ability to load assets from http and https urls. Supp

A telnet chat server written in Rust, running on Lunatic.
A telnet chat server written in Rust, running on Lunatic.

Lunatic.chat A telnet chat server written in Rust, running on Lunatic. If you just would like to try it out, join the hosted version with: # US server

Comments
  • Bevy 0.9

    Bevy 0.9

    Updated to 0.9, mostly Resource derives.

    Still a problem with https://github.com/Aceeri/sabi/blob/2f37474ce5d32d1237548709f2083a7a60fc8ed4/sabi/src/replicate/physics3d.rs#L237-L238 and https://github.com/Aceeri/sabi/blob/2f37474ce5d32d1237548709f2083a7a60fc8ed4/sabi/src/replicate/physics2d.rs#L219-L220 getting an error that the trait bound SharedShape: Deserialize<'_> is not satisfied

    opened by Sjael 1
  • Client Movement + Replicate Jitter

    Client Movement + Replicate Jitter

    When moving, rotating, and watching a number tick up over time (when a component is using the replicate plugin), there is a jitter on the client. Numbers wont increment smoothly, rotation and movement will take a few frames to 'settle'. I've isolated some of this issue to the rewind function https://github.com/Aceeri/sabi/blob/676659ba07229ff104e9ea67520b7e07a1f8ac99/sabi/src/protocol/resim.rs#L66-L86

    Commenting that function out fixes the number jitter, so I'm thinking a lot of it is in here, but the movement jitter only get's half fixed. Perhaps it is this function potentially setting the 'Owned' player's input back to the previous frame is the other part? https://github.com/Aceeri/sabi/blob/676659ba07229ff104e9ea67520b7e07a1f8ac99/sabi/src/protocol/input.rs#L306-L329

    opened by Sjael 0
Owner
Aceeri
Person who does person things
Aceeri
Acts as an IRC server and a nostr client. Connect with your IRC client using your nostr private key as the password.

nostr-irc Acts as an IRC server and a nostr client. Connect with your IRC client using your nostr private key as the password. Experimental code, use

null 11 Dec 26, 2022
simple and powerful IP architecture in Rust.

ipzone Ipzone provides a simple and powerful IP architecture to Rust. | Examples | Docs | Latest Note | ipzone = "0.4.0" Examples use ipzone::prelude:

Doha Lee 3 Dec 21, 2022
axum-server is a hyper server implementation designed to be used with axum framework.

axum-server axum-server is a hyper server implementation designed to be used with axum framework. Features Conveniently bind to any number of addresse

null 79 Jan 4, 2023
Jex Compiler Server - Server that runs Jex code

Server that compiles and runs Jex code.

furetur 3 Nov 18, 2021
Dav-server-rs - Rust WebDAV server library. A fork of the webdav-handler crate.

dav-server-rs A fork of the webdav-handler-rs project. Generic async HTTP/Webdav handler Webdav (RFC4918) is defined as HTTP (GET/HEAD/PUT/DELETE) plu

messense 30 Dec 29, 2022
A simple web server(and library) to display server stats over HTTP and Websockets/SSE or stream it to other systems.

x-server-stats A simple web server(and library) to display server stats over HTTP and Websockets/SSE or stream it to other systems. x-server(in x-serv

Pratyaksh 11 Oct 17, 2022
DNS Server written in Rust for fun, see https://dev.to/xfbs/writing-a-dns-server-in-rust-1gpn

DNS Fun Ever wondered how you can write a DNS server in Rust? No? Well, too bad, I'm telling you anyways. But don't worry, this is going to be a fun o

Patrick Elsen 26 Jan 13, 2023
Simple project to test grpc between ruby (client) and rust (server)

grpc-example Simple project to test grpc between ruby (client) and rust (server). Usage To simplify a lot this project uses docker and docker compose

Bruno Arueira 2 Oct 14, 2021
A tcp proxy server/client which exchange the data in temp files

ftcp A tcp proxy server/client which exchange the data in temp files 通过在临时文件中交换数据来进行TCP代理的一个服务端/客户端 学校内网中有针对教学楼的防火墙导致教室电脑难以上网( 但学校内建有公共ftp服务器,因此就有了这个借

Daile Liu 2 Feb 17, 2022
A Rust based DNS client, server, and resolver

Trust-DNS A Rust based DNS client, server, and Resolver, built to be safe and secure from the ground up. This repo consists of multiple crates: Librar

Benjamin Fry 2.7k Dec 30, 2022