#aws #aws-sdk #server #状态 #构建 #gamelift #game-lift

aws-gamelift-server-sdk-rs

AWS GameLift Server SDK for Rust

3 个版本 (破坏性更新)

0.3.0 2022年1月16日
0.2.0 2022年1月6日
0.1.0 2021年6月12日

#135 in #状态

MIT 许可证

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

Docs,link={uri-docs} Build Status Badge,link={uri-build-status} License,link={uri-license}

ifdef::env-github[] ++++

++++ endif::[]

ifndef::env-github[] 地图,300,居中 endif::[]

是什么

一个针对 Rust 的 AWS GameLift Server SDK 的非官方端口。

如何构建

  1. 安装最新的稳定 Rust 工具链
  2. 检出此仓库并将目录更改为根目录
  3. 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中)。

  1. AWSGAMETECH论坛线程关于SDK和半官方Protobuf模式之间的差异
  2. 非官方 NodeJS AWS GameLift服务器SDK

依赖项

~9–25MB
~351K SLoC