Laminar 多人 fps 游戏 UDP 协议开源项目

我要开发同款
匿名用户2021年10月26日
203阅读

技术信息

开源地址
https://github.com/amethyst/laminar
授权协议
Apache 2.0

作品详情

Lamiar是一种应用级传输协议,为快节奏的fps游戏提供基于UDP的可配置可靠性和排序保证,且提供轻量级的界面。

它的灵感来自GafferoGames,功能类似RakNet,SteamSocket,etcode.io。通过Rust写的低级UDP协议来支持多人游戏联网功能(尤其是FPS游戏),Lamiar一般用于 Amethyst 游戏引擎,不过没它也能用。

特性:碎片化 不可靠的数据包 不可靠的排序数据包 可靠的无序数据包 可靠有序的数据包 可靠的排序数据包 Rtt估算 协议版本监控 基本连接管理 Heartbeat 基础的DoS缓冲 高时序控制 协议版本控制 集成和单元测试良好 可以被多个线程使用(Seder,Receiver)协议握手协议高级连接管理密码密匙体系(Cryptography)拥塞控制用例:UDPAPI -发送数据uselamiar::{Socket,Packet};//Createsthesocketletmutsocket=Socket::bid("127.0.0.1:12345")?;letpacket_seder=socket.get_packet_seder();//Startsthesocket,whichwillstartapollmechaismtoreceiveadsedmessages.let_thread=thread::spaw(move||socket.start_pollig());//Bytestosetletbytes=vec![...];//Createspacketswithdifferetreliabilitiesletureliable=Packet::ureliable(destiatio,bytes);letreliable=Packet::reliable_uordered(destiatio,bytes);//Specifiesowhichstreamadhowtoorderourpackets,checkoutourbookaddocumetatioformoreiformatioletureliable=Packet::ureliable_sequeced(destiatio,bytes,Some(1));letreliable_sequeced=Packet::reliable_sequeced(destiatio,bytes,Some(2));letreliable_ordered=Packet::reliable_ordered(destiatio,bytes,Some(3));//Sedsthecreatedpacketspacket_seder.sed(ureliable).uwrap();packet_seder.sed(reliable).uwrap();packet_seder.sed(ureliable_sequeced).uwrap();packet_seder.sed(reliable_sequeced).uwrap();packet_seder.sed(reliable_ordered).uwrap();UDPAPI -接收数据uselamiar::{SocketEvet,Socket};//Createsthesocketletmutsocket=Socket::bid("127.0.0.1:12346")?;letevet_receiver=socket.get_evet_receiver();//Startsthesocket,whichwillstartapollmechaismtoreceiveadsedmessages.let_thread=thread::spaw(move||socket.start_pollig());//Waitsutilasocketevetoccursletresult=evet_receiver.recv();matchresult{Ok(socket_evet)=>{matchsocket_evet{SocketEvet::Packet(packet)=>{letedpoit:SocketAddr=packet.addr();letreceived_data:&[u8]=packet.payload();}SocketEvet::Coect(coect_evet)=>{/*aclietcoected*/}SocketEvet::Timeout(timeout_evet)=>{/*acliettimedout*/}SocketEvet::Discoect(discoect_evet)=>{/*aclietdiscoected*/}}}Err(e)=>{pritl!("Somethigwetwrogwhereceivig,error:{:?}",e);}}

功能介绍

Laminar 是一种应用级传输协议,为快节奏的 fps 游戏提供基于 UDP 的可配置可靠性和排序保证,且提供轻量级的界面。 它的灵感来自 Gaffer on Games,功能类似 RakNe...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论