Eine mit Batterien ausgestattete Netzwerkkiste für Spiele.
[dependencies]
netstack = "0.3.0"
Dokumentation (in Arbeit)
Wenn Sie Vorschläge haben, Funktionen vermissen oder einfach nur mit mir in Kontakt treten möchten, können Sie Probleme in diesem Repository eröffnen oder mich auf Twitter erreichen.
Um Netstack in der Produktion effektiv nutzen zu können, benötigen Sie einen sicheren Kanal zum Austausch eines anfänglichen Geheimnisses und eines Verbindungstokens. Es wird empfohlen, hierfür https zu verwenden, aber es liegt an Ihnen. Die Beispiele verwenden einen http-Server.
(☑️ bedeutet implementiert, ? bedeutet geplant oder in Entwicklung)
Auf io_uring
, IOCP
oder epoll
basierende Transporte fallen derzeit nicht in den Geltungsbereich.
Diese Kiste implementiert keine erneute Übertragung basierend auf Bestätigungen und Zeitüberschreitungen. Spiele haben andere Möglichkeiten, Zuverlässigkeit zu erreichen, vor allem weil die Informationen bereits veraltet sind, wenn ein Timeout-basierter Mechanismus das verlorene Paket erkennen würde.
FPS senden beispielsweise mit jedem Paket Spielereingaben für die letzten paar Frames, sodass, wenn eines auf der Leitung verloren geht, das nächste Paket die Lücke füllt.
Die Komprimierung des Spielstatus vom Server zum Client basiert normalerweise auf dem letzten vom Client bestätigten Paket. Verwenden Sie dazu das MessageAcknowledged
Ereignis und die von send
zurückgegebene Sequenznummer.
Im Beispielverzeichnis finden Sie ein Client/Server-Beispiel. Verwenden Sie die folgenden Befehle, um sie auszuführen:
cargo run -p server
cargo run -p client
Netstack wird mit einem in Arbeit befindlichen Ableitungsmakro für Strukturen (und spätere Aufzählungen) geliefert.
# [ derive ( Debug , Serialize , Deserialize ) ]
pub struct Greeting {
pub id : u32 ,
pub to : String ,
pub message : String ,
}
MIT