项目背景
模拟时间是游戏测试中非常重要的步骤,模拟时间可以让开发人员更全面的测试游戏中和时间相关性较强的功能的正确性,比较典型的例如活动,限时道具等。通过模拟时间,开发者们可以观察这些系统在不同时间段内的表现,并进一步优化游戏的整体体验。模拟时间还可以用于测试游戏的稳定性。在游戏中,很多操作可能会涉及到时间的计算,如技能冷却时间、成长经验计算等。通过模拟时间,开发者们可以测试这些操作在长时间运行下是否稳定,以及是否存在潜在的bug和错误。此外,模拟时间的跨度可能会很长,次数也可能很多很频繁,是游戏测试中非常常用的功能。
云原生游戏开服时间模拟工具 - fake-time-injector
当游戏服完成云原生化改造,进行模拟时间设置的时候,就会遇到一些问题。因为默认情况下Pod的时间是继承ECS的时间设置的。如果直接修改ECS的时间,会影响该节点所有的Pod,这对于测试环境而言是不可接受的,需要不影响其他节点的Pod时间修改方式。
fake-time-injector是阿里云与莉莉丝游戏通过CloudNativeGame社区一起开源的用于云原生场景下修改模拟时间的组件。支持
- Go
- C
- Erlang
- C++
- Ruby
- PHP
- JavaScript
- Python
- Java
等多种语言和各种不同的游戏框架,部署好组件后,开发者可以通过简单的配置,实现Pod级别的模拟时间注入。
apiVersion: v1
kind: Pod
metadata:
name: testpod
namespace: kube-system
labels:
app: myapp
version: v1
annotations:
cloudnativegame.io/process-name: "hello"
cloudnativegame.io/fake-time: "2024-01-01 00:00:00"
spec:
containers:
- name: myhello
image: registry.cn-hangzhou.aliyuncs.com/acs/hello:v1
注入完毕后,Pod中可以看到对应的
更多详细用法可以参考:https://github.com/CloudNativeGame/fake-time-injector
关于CloudNativeGame社区
CloudNativeGame社区是阿里云协同国内一线的游戏公司(龙渊、鹰角、B站、莉莉丝等)共同建立的游戏开源社区,旨在分享游戏行业在云原生领域的最佳实践,将通用性的需求与场景,通过开源项目的方式共享给游戏行业,让云原生技术可以真正成为游戏行业复苏的发动机。目前CloudNativeGame已经开源了三个不同项目:
- 云原生游戏工作负载 - kruise-game
- 模拟游戏开服时间工具 - fake-time-injector
- 开源云原生AIGC工作台 - aigc-gateway
非常希望越来越多的游戏开发者可以参与到CloudNativeGame社区,让云原生游戏的生态可以越来越丰富。