À propos du projet
Lightyear est une bibliothèque réseau pour écrire des jeux multijoueurs à autorité serveur avec le moteur de jeu Bevy. Elle est compatible avec WebAssembly via WebTransport et est distribuée comme crate Rust (lightyear = "0.30" pour Bevy 0.19).
Pour commencer : le dépôt fournit des exemples, un tutoriel qui recrée l'exemple simple_box, et un livre en cours de rédaction pour davantage de documentation.
Organisation du dépôt : les crates du workspace se trouvent sous crates/, regroupées par rôle, les noms de répertoires abandonnant le préfixe lightyear_ tandis que les noms de packages Cargo le conservent. Les groupes incluent io (liens de bas niveau et backends tels que aeronet, link, udp, crossbeam, websocket, webtransport), connection (connection, raw_connection, netcode, steam), core (crate lightyear de niveau supérieur plus core, sync, utils, frame interpolation), inputs (inputs, inputs_native, input_bei, inputs_leafwing), replication (replication, prediction, interpolation), transport (serialization, transport, message), integration (intégrations de l'écosystème Bevy telles qu'Avian), et les crates platform, deterministic, tools et tests.
Fonctionnalités décrites dans le README :
- IO agnostique au transport : sockets UDP, plus aeronet pour la prise en charge de WebSocket, Steam et WebTransport.
- Sérialisation : postcard est le sérialiseur par défaut, avec la possibilité de fournir une fonction de sérialisation personnalisée.
- Passage de messages : canaux avec différentes garanties d'ordre et de fiabilité, et fragmentation des paquets pour les messages dépassant environ 1200 octets.
- Gestion des entrées : les entrées du joueur sont mises en mémoire tampon à chaque tick côté client, et l'entrée client pour le tick N est traitée au tick N sur le serveur ; les entrées sont protégées contre la perte de paquets en incluant les frames récentes dans chaque paquet. Des intégrations optionnelles existent pour leafwing-input-manager et bevy-enhanced-input.
- Réplication déterministe : prise en charge lorsque seules les entrées sont répliquées et que la simulation est déterministe ; compatible avec le lockstep et la prédiction/rollback.
- Réplication du monde : utilise bevy_replicon pour la réplication, la gestion d'intérêt, le pré-spawn et les fonctionnalités associées.
- Réplication avancée : prédiction côté client avec rollback, interpolation de snapshots, délai d'entrée configurable, gestion de la bande passante avec envoi basé sur les priorités, et compensation de latence pour les interactions entre entités prédites et interpolées.
- Topologies : client-serveur, P2P, et mode hôte-client où un client agit comme serveur.
- Exemples : de nombreux exemples couvrant les fonctionnalités et les intégrations avec d'autres crates Bevy telles qu'avian.
Le README liste également des projets associés, notamment un projet de démarrage lightyear-template et des jeux comme Lumina et cycles.io, ainsi qu'un tableau de compatibilité associant les versions de Lightyear aux versions de Bevy (0.28-0.30 à Bevy 0.19, 0.26-0.27 à 0.18, 0.25 à 0.17, 0.20-0.24 à 0.16, 0.18-0.19 à 0.15, 0.16-0.17 à 0.14, 0.10-0.15 à 0.13, et 0.1-0.9 à 0.12).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.