充分利用G5g实例强大性能优势 尽情畅享Android流媒体游戏流畅性和高品质游戏画面

概览

亚马逊云科技AWS Graviton2 处理器支持的 Amazon EC2 G5g 实例配备了 NVIDIA T4G Tensor Core GPU,为 Android 游戏流媒体等图形工作负载提供了 Amazon EC2 中最具性价比的选择。这些实例是首批基于 Arm 架构且具备 GPU 加速功能的实例。

利用 G5g 实例,游戏流媒体客户可以在基于 Arm 的实例上本地运行 Android 游戏,并对渲染的图形进行编码,通过网络将游戏流式传输到移动设备。

在这篇博客中,我们将介绍如何在 G5g 实例上配置 Anbox Cloud Appliance,创建 Android 流媒体游戏应用程序,并通过 Anbox Cloud API,在我们的手机上使用 Firefox 浏览器来玩游戏!

亚马逊云服务免费体验中心

架构解析

通过上述图示,我们可以看到此博客中所展示的演示示例架构。该架构可以简单地分为两部分:左侧是客户端,即任何支持 WebRTC 的手机浏览器;右侧是基于 G5g 实例的服务器。为了深入了解服务器端的细节,我们需要首先在 G5g 实例上设置 Android 环境,使用 Anbox Cloud Appliance,然后配置一个 Web 服务器以处理来自客户端的请求。接着,我们需要配置 Android 应用程序,并通过 Anbox Cloud API 启动应用程序。当Web服务器接收到客户端的请求时,它将请求转发给应用服务器。应用服务器将与 Anbox 流网关和 Anbox Cloud API 进行通信,以启动 Android 容器。Android 应用程序将在容器中运行,并将游戏流传输回客户端。

动手实践

Step 1 在 G5g 实例上启动 Anbox Cloud Appliance

首先,您需要注册一个 Ubuntu SSO 帐户。如果您还没有,请前往 Ubuntu SSO 网站创建一个新账户。

接下来,我们可以通过 亚马逊云科技AWS Marketplace 安装 Anbox Cloud Appliance。请前往 AWS Marketplace 并购买 Anbox Cloud Appliance 的订阅。由于我们计划在基于 Graviton 处理器的 G5g 实例上安装 Anbox Cloud Appliance,请选择 Arm 变体进行安装。

在本文中,我们将在“Instance type”部分选择 G5g.8xlarge,同时选择一个密钥对,并将网络设置保留为默认设置。我们还将添加以下存储:

1. 至少50GB的根磁盘(必须)

2. 至少100GB的额外EBS卷(强烈推荐)

我们强烈建议至少选择 100 GB 的原因是,作为博客演示所使用的游戏 Genshin Impact,其游戏包相当大,几乎在 50GB 左右。

最后,启动实例并等待其变为运行状态。然后,我们可以通过 SSH 连接到实例并配置 Android 环境。

Step 2 在G5g上搭建Android环境

为了最大程度地确保我们的 RPM 和 Debian 软件包存储库的安全性和可靠性,我们首先更新了 CUDA Linux GPG 存储库密钥。

$ sudo apt-key del 7fa2af80
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/sbsa/cuda-keyring_1.0-1_all.deb
$ sudo dpkg -i cuda-keyring_1.0-1_all.deb

由于 Anbox Cloud 中的 Android 环境是在 LXD 容器环境中运行的,因此在设置 Android 之前,我们需要将 LXD 刷新到最新版本。

$ sudo snap refresh --channel=5.0/stable lxd

通过输入以下命令调用 Anbox 云设备的初始化过程:

$ sudo anbox-cloud-appliance init

好的,我将保留一些问题的默认答案。最后,您可以在 https://$(ec2_public_DNS_name) 查看状态网页以获取进度信息。

等待初始化过程完成后,您可以注册之前创建的 Ubuntu SSO 帐户。完成注册后,输出将显示 Android 环境仪表板地址。

$ anbox-cloud-appliance dashboard register <your Ubuntu SSO email address>

Step 3 通过 Anbox Cloud API 构建 Android 流媒体游戏应用程序

我们参考 Anbox Cloud 存储库来构建游戏。首先,下载源代码:

$ git clone https://github.com/anbox-cloud/cloud-gaming-demo.git

构建游戏门户的Web UI,Web UI是用Flutter构建的,所以我们需要安装Flutter然后部署它。

$ sudo snap install flutter --classic
$ cd ui && flutter build web
$ mkdir -p backend/service/static
$ cp -av ui/build/web/* backend/service/static

接下来是构建后端服务,用于服务 Web UI 请求并与 Anbox Stream Gateway 交互以通过 Anbox Cloud API 创建游戏应用程序。从安装依赖项开始:

$ sudo apt-get install python3-pip
$ sudo pip3 install virtualenv
$ cd backend && virtualenv venv

然后我们需要准备后端服务访问Anbox Stream Gateway的配置文件,配置文件中有两个参数,gateway-URL和gateway-token。可以从以下命令获取网关令牌:

$ anbox-cloud-appliance gateway account create <account-name>

创建一个名为 config.yaml 的文件,其中包含这两个配置项:

gateway-url: https:// <EC2 public DNS name>
gateway-token: <gateway_token>

然后将以下行添加到 backend/venv/bin/ 目录中的 activate hook,以便后端服务可以在其启动时读取 config.yaml:

$ export CONFIG_PATH=<path_to_config_yaml>

现在我们可以启动将在 TCP 端口 8002 提供服务的后端服务:

$ cd backend && ./run.sh

在接下来的步骤中,我们将从互联网上下载一个免费的游戏来演示,并通过 Anbox Cloud API 构建它,我们需要一个可用的 Android APK 和一个配置文件。

在HOME目录下创建文件夹,并在文件夹中创建manifest.yaml文件。在本博客中,我们选择将以下内容添加到文件中,您可以参考此链接了解更多详细信息.

name: genshin
instance-type: g10.3
resources:
  cpus: 10
  memory: 25GB
  disk-size: 50GB
  gpu-slots: 15
features: ["enable_virtual_keyboard"]

我们还需要准备一个Android APK,记得选择Graviton原生支持的arm64-v8a架构的APK。在这篇博客中,我们从网上下载了一款免费的安卓游戏,名为《原神》,一款由米哈游开发发行的动作角色扮演游戏。将 APK 下载到文件夹中并将其重命名为 app.apk。总体而言,游戏文件夹的最终布局应如下所示:

.
├── app.apk
└── manifest.yaml

从文件夹中运行以下命令以创建应用程序

$ amc application create  .

通过使用以下命令监视应用程序创建的状态,等待应用程序更改为就绪状态:

$ amc application ls

然后我们可以继续编辑和重建 web UI 以显示游戏如下:

1. 更新 ui/lib/homepage.dart 文件中定义的 gameids 变量以包含游戏名称(如清单文件中所声明)。

2. 向lib/api/application.dart文件中定义的静态appNameMap和appDesMap变量插入新的key/value对

3. 提供游戏截图(jpeg格式),重命名为<game-name>.jpeg,放入ui/lib/assets目录。

现在您可以重建网页界面,将 ui/build/web 文件夹中的内容复制到 backend/service/static 目录,然后刷新网页即可获得您的游戏!

Step 4 启动游戏

拿出你的手机,打开Firefox浏览器或任何支持webRTC的浏览器,输入G5g实例的8002端口的公共DNS名称,然后你会看到游戏入口是这样的:

点击立即开始游戏按钮,稍等片刻在服务器端进行应用程序设置,然后开始游戏吧!

结论

亚马逊云服务免费体验中心

G5g 是首个在大型云端采用 GPU 加速的基于 Arm 的实例,在亚马逊云科技 Amazon EC2 中为 Android 游戏流式传输提供最佳性价比。利用 G5g 实例,Android 游戏开发人员可以原生运行基于 Arm 的 GPU 实例,编码渲染的图形,通过网络将游戏流式传输到移动设备。这样可以帮助简化开发工作,降低每个流每小时成本高达 30%。在这篇博客中,我们在原生支持 Arm64 架构的 G5g 实例上构建了一个 Android 游戏的演示。借助 GPU 加速功能,我们可以尝试更多需要大规模图形渲染需求的游戏,让 Android 流媒体游戏的普及成为可能。

这些信息可能会帮助到你: 下载帮助 | 网络优化 | 在线留言 | 广告投放
当前文章作者:吾爱分享网
当前文章地址:https://www.52ifx.com/mryk/rmsj/6325.html
THE END
分享
二维码
打赏
< <上一篇
下一篇>>