3 个版本 (破坏性更新)
0.3.0 | 2022年1月16日 |
---|---|
0.2.0 | 2022年1月6日 |
0.1.0 | 2021年6月12日 |
#135 in #状态
81KB
1K SLoC
AWS GameLift Server SDK for Rust
// URIs: :uri-docs: https://docs.rs/aws-gamelift-server-sdk-rs :img-docs: https://docs.rs/aws-gamelift-server-sdk-rs/badge.svg :uri-build-status: https://github.com/zamazan4ik/aws-gamelift-server-sdk-rs/actions :img-build-status: https://github.com/zamazan4ik/aws-gamelift-server-sdk-rs/workflows/Continuous%20integration/badge.svg :uri-license: https://github.com/zamazan4ik/aws-gamelift-server-sdk-rs/blob/main/LICENSE :img-license: https://img.shields.io/badge/License-MIT-blue.svg
ifdef::env-github[] ++++
++++ endif::[]
ifndef::env-github[] endif::[]
是什么
一个针对 Rust 的 AWS GameLift Server SDK 的非官方端口。
如何构建
- 安装最新的稳定 Rust 工具链
- 检出此仓库并将目录更改为根目录
cargobuild
兼容性
此 crate 与 4.0.2 AWS GameLift Server SDK 兼容。我们支持最新的稳定 Rust 版本。
贡献
如果您发现任何错误、遗漏的功能或只想分享任何反馈 - 欢迎您打开一个问题。如果您能创建一个 PR - 那将非常美妙,因为它会使我的生活变得更容易。
测试
您可以直接在 AWS GameLift 服务上测试该库,但这可能对您来说太慢且成本太高。我建议您使用官方的 AWS GameLift Local。不幸的是,目前 AWS 没有提供任何官方的本地服务器 Docker 镜像,因此您可以使用我的 Docker 镜像。原始仓库在 这里。只需运行本地服务器并使用 SDK 运行任何应用程序(任何示例都行)。
架构
目前有2个官方的AWS GameLift服务器SDK版本:C++和C#。它们看起来很相似,但在底层它们的工作方式不同。它们的版本号也不同。在撰写本文时,C++ SDK的版本为3.4.1,C#的版本为4.0.2,并且它们有不同的Protobuf向后兼容模式。
C++ SDK使用2个Socket.io连接到节点上的AWS GameLift服务器进程(此进程的名称为AuxProxy
)。第一个连接用于从SDK向AuxProxy发送请求并接收答案(请求-响应模式)。第二个连接用于接收来自AuxProxy的事件。
C# SDK使用另一种方法。它使用HTTP协议实现请求-响应模式,并使用原始WebSocket连接接收来自AuxProxy的事件。
最初,这个库(Rust的AWS GameLift服务器SDK)尝试使用C++方法,即使用2个Socket.io连接。不幸的是,由于几个原因,我未能正确实现它。使用Socket.io的请求-响应模式看起来很糟糕。Socket.io库在我看来在Rust中过于年轻且不稳定(我尝试使用rust-socketio)。
因此,选择了HTTP + WebSocket的方式作为主要设计 - 我只是更喜欢它,并且用这种方式实现SDK对我来说更容易。如果您对可用性、效率或任何其他方面有疑问 - 请告知我!
Protobuf模式
AWS GameLift服务器SDK使用Protobuf 3协议。不幸的是,AWS尚未提供官方的原始Protobuf文件。所以我们使用从这个仓库逆向工程的.proto
文件:Protobuf模式。由于原始仓库可能已过时,我还维护自己的分支(非常感谢任何帮助维护的人):另一个Protobuf模式。
注意事项
如果您在寻找AWS GameLift SDK(没有Server一词) - 这个crate不是您想要的。请使用rusoto或官方的AWS Rust SDK(在撰写本文时,GameLift不支持在这个SDK中)。
有用的链接
- AWSGAMETECH论坛线程关于SDK和半官方Protobuf模式之间的差异
- 非官方 NodeJS AWS GameLift服务器SDK
依赖项
~9–25MB
~351K SLoC