概览
1. 为什么要使用扩展架构
尽管 PGOS 提供了许多游戏服务来帮助您构建精彩的游戏,但我们无法为您实现所有功能和后端逻辑。我们认为,一个设计良好的扩展架构将增强游戏在线服务的功能,并使其更加灵活。我们希望您能够以自己的方式处理任何事件,并创建自己的服务,使其能够与 PGOS 服务以及您自己的客户端和DS进行交互。此外,您还可以通过在 PGOS Web 门户上配置事件处理程序和 WebHook 来通知位于 PGOS 之外的您自己的服务器。所有这些操作都可以通过一个轻量级框架快速完成。您只需使用您喜欢的语言编写服务器代码即可。剩下的工作将由 PGOS 后端自动完成。
2. Virtual Server
2.1 什么是Virtual Server
Virtual Server是 PGOS 提供的一项扩展服务,允许开发者通过编写代码来扩展功能并实现定制化功能。Virtual Server的本质是开发者创建 Web 服务器,并将其部署并运行在 PGOS 提供的容器运行时平台上。为了编排和管理开发者编写的Virtual Server,PGOS 使用 Knative 框架,并确保不同 Title Region 下的Virtual Server之间相互隔离。
2.2 架构
Virtual Server包含以下几个层级:
工具层
- 开发工具:支持在线编辑、上传和提交代码。
- CI/CD 流水线:支持持续集成和自动化部署。
应用层
- 后端 API:提供对后端 PGOS 服务的访问。
- 存储:后端数据存储,包括玩家数据和游戏区域配置数据。未来 PGOS 还将支持存储自定义游戏数据
- 环境变量:运行时环境变量的配置。
基础层
监控:监控Virtual Server的运行状态。
统计:显示Virtual Server的运行状态和统计信息,包括调用次数、并发次数和错误次数。
日志:允许查询Virtual Server的运行日志。
核心层
- 运行:目前,PGOS 使用 Google KNative。
2.3 触发Vritual Server
Virtual Server可以通过以下方式访问:
- Task:在 Web 门户上配置计划任务以触发特定的Virtual Server功能。
- Event:配置带有过滤条件的事件处理程序以触发特定的Virtual Server功能。
- 游戏(客户端/DS):使用 PGOS SDK 触发特定的Virtual Server功能。
- Web 门户:通过 Web 门户手动触发特定的Virtual Server功能。
3. Events
3.1 什么是事件
当某些事件发生时,就会生成一个Event。例如,当玩家登录时,就会生成 event_player_login_pgos
。触发事件时,可以执行一个或多个操作。这些操作可以与特定的Virtual Server
或Webhook
绑定,当相应事件触发时,这些操作就会被执行。您可以在Web 门户中配置它们。
3.2 Event Actions
"Event-Handler-Action" 概念模型如下图所示。
- 一个事件中可以配置一个或多个handler。
- 一个handler可以包含一个过滤器和一个或多个Actions。
- 过滤器是一组带有条件表达式的逻辑判断。
- Action必须是Virtual Server Function。只有当过滤器为 TRUE 时,Action才会被触发。
3.3 Filter
过滤器由条件表达式的“AND”和“OR”逻辑判断组成,如下所示:
3.4 文档
更多细节,请参考 Events 文档。
4. WebHook
4.1 什么是 Webhook
Webhook 是一种“用户定义的 HTTP/HTTPS 回调”,可以设置为事件的Action,由事件触发。
5.2 文档
更多细节,请参考 WebHook 文档。
5. Tasks
5.1 什么是任务
任务会在指定时间自动执行特定的操作。
任务执行预定义的Virtual Serverfunction来实现特定的操作。
PGOS 提供精确到秒的 crontab 表达式。开发者可以使用 crontab 表达式来精确定义任务的触发时间。crontab 表达式如下;点击此处了解更多。
5.2 文档
更多细节,请参考 Task 文档.