netstack
1.0.0
電池にはゲーム用のネットワーククレートが含まれていました。
[dependencies]
netstack = "0.3.0"
ドキュメント (作業中)
提案がある場合、見逃している機能がある場合、または単に連絡したい場合は、このリポジトリで問題をオープンするか、Twitter で私に連絡してください。
実稼働環境で netstack を効果的に使用するには、初期シークレットと接続トークンを交換するための安全なチャネルが必要です。これには https を使用することをお勧めしますが、それはあなた次第です。例では http サーバーを使用します。
(☑️は実装済み、?は計画中または開発中を意味します)
io_uring
、 IOCP
、またはepoll
に基づくトランスポートは、現時点では対象外です。
このクレートは、ACK とタイムアウトに基づく再送信を実装しません。ゲームには信頼性を実現する他の方法があります。これは主に、タイムアウト ベースのメカニズムが損失パケットを検出する時点で情報がすでに古くなっているためです。
たとえば、FPS は、最後の数フレームのプレーヤー入力をすべてのパケットで送信するため、1 つのパケットが回線上で失われると、次のパケットがギャップを埋めます。
サーバーからクライアントへのゲーム状態の圧縮は、通常、クライアントによって確認された最後のパケットに基づいて行われます。これには、 MessageAcknowledged
イベントとsend
によって返されたシーケンス番号を使用します。
クライアント/サーバーの例については、example ディレクトリを参照し、コマンドを使用して実行します。
cargo run -p server
cargo run -p client
Netstack には、構造体 (およびその後の列挙型) 用の進行中の派生マクロが付属しています。
# [ derive ( Debug , Serialize , Deserialize ) ]
pub struct Greeting {
pub id : u32 ,
pub to : String ,
pub message : String ,
}
マサチューセッツ工科大学