英文原文:https://thegamedev.guru/unity-addressables/hosting-with-amazon-s3/
玩家想玩,他们不想等待。 帮助他们购买您的游戏:使用 Unity Addressables Hosting 减少游戏的下载大小。 一年后? 为他们提供基于的 DLC,猜猜是什么? Unity Addressables
想象一下周五下午你的潜在玩家。
您的玩家刚刚度过了辛苦的一周,工作时间很长。 他们的妻子或丈夫和孩子们一起去他们家的乡间别墅度周末。 是回家、点披萨并带着钱包浏览 Steam 的最佳时机。
有或没有孩子,有或没有伴侣,我们都度过了这些美妙的周末。
因此,您的玩家会在 Steam 商店中看到您新发布的游戏。 他们看到了您为创建精美内容所付出的所有努力。
无需说服,他们会交出信用卡详细信息并购买您的游戏的两份副本。 一个给自己,另一个给他们的朋友/兄弟/姐妹。
你得到你的 19.95 美元,两次。 两个用户都愉快地开始安装游戏。
可是等等…
出现一个疯狂的 Steam 安装弹出窗口。
剩余安装时间突然暴涨到12小时
什么,超过 30GB 需要 12 小时? 这个游戏他妈的是什么?**我不会在这个狗屎上浪费我的周末,我出去了!
之后发生的事情并不少见。
您的前玩家要求全额退款并购买他们心愿单中的下一款游戏。
玩家的痛点之一是在下载整个游戏的所有字节并开始玩时浪费的等待时间。 人们没有那么多时间。 没有什么比愤怒的玩家更快地烧毁你的钱包了。
您是否需要在您的安装包中包含游戏第 5 关中生成的所有这些资产? 很有可能,你没有。
玩家将需要几个小时来玩完游戏的初始内容。 利用它来发挥你的优势
这个想法很简单。
在您的游戏安装包中提供尽可能少的内容,并在玩游戏的初始关卡时下载其余内容。
您能想象您的玩家在购买您的游戏后仅一分钟内就准备好玩游戏了吗? 与大型游戏中常见的评论相比,这些评论有何不同?
理想情况下,您的游戏下载大小应低于 100MB。
但是怎么办?
当您完成本文信息的实现时,您将获得以下内容:
- 可笑的微小的安装尺寸
- 一个新的 Amazon S3 存储桶,用于在线托管您的内容
- 通过 Unity Editor 将 Unity Addressable Assets 上传到 S3
- 从播放器构建中的 S3 存储桶下载 Unity 可寻址资产
- 来自快乐玩家的击掌
一级开发人员:“无论如何,存储很便宜”
几个月前我们开始开发我们的游戏,我们有很大的计划。
你和我没完没了地工作来创作高度精美的内容。
不仅如此,我们在 Unity Asset Store 中看到了一些很棒的优惠,所以我们以非常优惠的价格购买了几个资产包。
现在我们的游戏充满了玩家喜欢玩的内容。 那些科幻的模块化部件、爆炸的粒子系统、强劲的配乐。
一切都很美好。
而且很重。
而且下载速度慢。
现在你的 Android APK 已经超过 2GB,所以你需要开始处理扩展文件,这又为你的努力增加了一周。 不过没关系,我们都有时间在这里。
或者你可能在 Steam 上发布,所以你可以使用 30 GB,没问题。 你只需要几个小时来上传它。 玩家? 没关系,现在人们的连接速度很快。
所以我们发布了我们的游戏。 一些玩家报告了一些错误,所以我们进行了 5 分钟的修复,然后我们再次经历了所有漫长的过程。 构建,等待数小时,上传到商店,等待数小时。
而我们的玩家呢? 他们只是重新下载整个东西。 等待数小时,然后开始玩。
没什么大不了的。
只是你之前浪费在这上面的所有时间都没有恢复。 很多玩家一旦看到他们必须等待多少小时,就会停止下载您的游戏。 每次更新只会变得更糟。 我有提到退款吗?
既然我们有了工具,我们可以做得更好。
让我们将技能升级到 2 级。
二级开发人员:Unity Addressables Hosting
欢迎使用 Unity Addressables。
该软件包将允许您有效地管理您的游戏资产。 我的朋友,这包括在线分发。 有关此主题的介绍,请访问我之前关于 Unity Addressables Benefits for your game 的文章。
这些是您和我将在本文中遵循的步骤:
- 设置用于在线分发的 Amazon S3 存储桶
- 将我们的内容标记为 Unity 可寻址资产以供在线分发
- 将我们的内容上传到云端
- 从微小的安装尺寸(和其他尺寸)中获利
就像奶奶说的,一个 2D sprite 值一千倍:
让我们从……开始
1. 设置免费的 Amazon S3 存储桶
这是我们的幸运日。 Amazon 为其 S3 服务提供免费套餐。
这意味着,我们将免费托管我们的内容。 他们的免费层的限制主要是存储空间和数据传输数量。 在撰写本文时,您可以免费存储 5GB 并执行 20,000 个 GET 和 2,000 个 PUT 请求,但请在 AWS Free Tiers 的官方网站上仔细检查。
我们在这里要做的是为 AWS 创建一个帐户,以便我们准备上传我们的游戏内容以供进一步分发。
你和我会尽快做到这一点。 没必要浪费时间详细。 没有废话。为 Unity Addressables 设置 Amazon S3 托管
- 创建 AWS 账户
导航到 AWS 管理控制台并单击创建免费帐户。
输入您的电子邮件和 bla bla bla。 这将花费您大约一分钟的时间。
请注意,您需要向他们提供您的信用卡信息以验证您的身份。
- 选择 AWS 计划
除非您从一开始就成为专业人士,否则我们希望首先在我们的游戏中对此进行评估。
因此,在确认您的帐户后,选择基本计划。
几分钟后,您的帐户将被激活(您会收到一封电子邮件)。 然后,登录到您的新控制台并打开 S3 服务面板:
您现在位于 S3 控制面板。
现在我们已准备好创建如下所示的存储桶(更改您的存储桶名称和区域!):
暂时将权限设置为公开,您将来有机会对其进行调整。
Unity Addressables 的 S3 存储桶现已准备就绪,恭喜!
那是最乏味的一步。
下一步是小菜一碟:是时候让您的 Unity 项目生成可下载的资产了。
概括:
- 使用 AWS 管理控制台创建免费层级 S3 存储桶
- 首先,为您的 S3 存储桶分配公共权限
- 或者,使用基于资源包中电子表格的其他存储服务
2. 用于分发的Unity可寻址资产
我假设您的游戏中有一些标记为可寻址的内容。 如果因为您是新手而不是这种情况,请不要担心,我已经为您介绍了我之前编写的 Unity Addressables 教程。
我将向您展示将内容上传到新创建的 AWS S3 存储桶中的步骤。 我们将基于我为此创建的一个项目来这样做。
除了了解整个故事之外,您还可以跳过这一行,现在访问代码并稍后阅读。
A. Addressables 配置文件配置
开始的方式是告诉 Unity 从哪里加载远程资源。
我们通过调整我们的可寻址配置文件配置来实现。 在 Addressables 主窗口中,单击:
配置文件:默认 → 检查配置文件设置。
这会将您重定向到我们需要调整的设置。
这是您可以玩的有趣玩具的集合,但出于我们的目的,我们只需要关注“配置文件”部分。
我们要确保将 Addressables RemoteLoadPath 字段设置为正确的 URL。
我们通过将我们的 S3 存储桶 URL 与 Unity 变量 [BuildTarget] 连接起来形成 RemoteLoadPath URL,如下所示:
https://YOUR-BUCKET-NAME.s3.YOUR-REGION-NAME.amazonaws.com/[BuildTarget]
E.g. https://thegamedevguru.s3.eu-central-1.amazonaws.com/[BuildTarget]
[BuildTarget] 变量是有意保留的,以便 Unity 在运行时为我们构建的每个平台获取正确的资产。 Android 资产的打包方式与 Standalone 不同,因此这些平台中的每一个都需要不同的目录。
我找到 S3 Bucket URL 的方法是上传一个随机文件; 如果您随后导航到其详细信息,您将看到文件的基本 URL,从而看到您的存储桶。
B. 可寻址资产组配置
因此,我们只是通过 RemoteLoadPath 变量告诉 Unity 从何处加载远程资源。
很好。 剩下的就是告诉应该远程加载哪些资产。 简单。
- 检查您想要远程下载的重资产,并将这些资产标记为可寻址。 在我们的例子中,它是天空盒材质。
- 打开 Unity Addressables 窗口并将这些资产分配给 Addressable Asset Groups。 如果您刚开始使用 Addressables,请暂时将它们分配到一个组; 例如 天空盒。 最终,您会希望以一种有意义的方式对它们进行分组(有关更多信息,请查看我关于 Unity Addressables Tutorial 的 Level-3 指南)。
- 通过单击组导航到 Addressables Group 检查器设置并进行以下调整:
- BuildPath 设置为 RemoteBuildPath
- LoadPath 设置为 RemoteLoadPath
您可以在下面看到整个过程的图形分解。
Unity Addressables 托管的资产组
我们现在将我们的天空盒内容分配给一个组,您的玩家将在运行时下载该组。
概括
- 将 RemoteLoadPath 设置为您的网络托管服务提供商的基本 URL
- 将 [BuildTarget] 变量附加到 RemoteLoadPath 中以区分多个平台
- 将您的 Unity 可寻址资产分配给一个组并调整其设置以使用远程路径,以便从您的网络托管服务提供商处下载
3. 上传内容到 Amazon S3
我们所有的设置现在都已到位。 将我们的内容上传到 S3 怎么样?
这是一个简单的两步过程:
- 构建播放器内容。
- 将其上传到 S3。
构建可寻址播放器内容非常简单。打开 Addressables 主窗口并按下执行此操作的按钮。 这将为您的编辑器所在的当前平台烘焙资产。
输出内容将存储在 RemoteBuildPath 变量指定的路径中,您在前面的 Unity Addressables 配置文件设置中碰巧看到了该变量。 如果您没有修改它,它可能位于您项目的一个名为 ServerData 的子文件夹中。
第二步涉及导航到该目录并将其内容放入 S3 存储桶的网站,如下所示:
给你,就这么简单。
然而,这很快就会变得乏味。 这是一项非常手动的任务,可以很容易地实现自动化。 我就是这样做的,所以现在上传我所有的资产只需按下 Unity 编辑器中的一个按钮。
要直接从 Unity 编辑器上传您的 Unity Addressable Assets,请查看文章末尾的我的 Unity Addressables 托管资源包。
4. 从 Amazon S3 下载资产
这是我们都在等待的部分。 您现在有一个可以分发的游戏,它的体积要小得多。 剩下的部分是启动它并观看它按需下载资产!
如果您想确保有效下载这些资产,请从您的 S3 存储桶中删除数据,禁用可寻址资产组设置中的缓存选项,重建内容和您的播放器。 如果启动它,您应该会看到一些错误消息弹出,如下所示。
如果您按照有关 Unity Addressables Hosting 的教程进行操作,很可能您会完全没问题
到目前为止,您标记为远程下载的资产组托管在 S3 中,Unity 知道如何获取它们。
3 级开发人员:Unity Addressables 托管资源包
到目前为止,您应该已经启动并运行了第一个 Unity Addressables Hosting 实验。
您学习了如何构建专门针对可下载内容的播放器内容。
这很好,但不仅仅是基础知识。 为了进一步帮助您,我专门为您准备了一个免费的 Unity Addressables 托管资源包。 该捆绑包包含:
- 将不同的托管替代方案与昂贵的 S3 进行比较的电子表格
- 直接从编辑器将 Unity 可寻址资产上传到 Amazon S3 的扩展
- 本项目的源代码; 你自己看看
- 具有独家免费内容的时事通讯访问