Skip to content

preStartGameByUrl

预启动游戏(通过游戏包 URL)

preStartGameByUrl 是集下载、解压、初始化与逻辑激活于一体的“全自动”预处理接口。它会从指定的 URL 下载游戏包,并在后台静默完成所有启动准备工作(包括运行游戏脚本)。

这是实现远程资源“秒开”的最强手段:当用户最终点击启动时,游戏已经处于逻辑运行状态,画面可以瞬间呈现。


方法声明

java
/**
 * 预启动游戏,根据游戏包 URL
 *
 * @param url       游戏包 URL
 * @param params    参数对象
 * @param listener  预启动状态监听器
 * @return SUDOPGameTask 任务句柄,用于管理下载及后台运行的游戏实例
 */
public static SUDOPGameTask preStartGameByUrl(String url, SUDOPGamePackageParams params, SUDOPPreStartGameListener listener);

参数说明

属性类型描述
urlString必填。游戏资源压缩包(.zip)的完整远程下载地址。

1. SUDOPGamePackageParams

用于指定具体的资源下载链接:

属性类型描述
versionString必填。游戏版本
fidString游戏包文件指纹
fidTypeFIDType游戏包文件指纹生成方式
appGameIDString必填。指定gameID
appCPIDString指定游戏开发者的CP ID
appGroupIDString指定游戏开发者的Group ID

2. FIDType

用于指定游戏包文件指纹生成方式

属性类型描述
MD5enumMD5算法
CRC32enumCRC32算法
SHA1enumSHA1算法
SHA256StrenumingSHA256算法

2. SUDOPPreStartGameListener

  • void onSuccess(String gameId, SUDRTGameHandle handle):预启动成功。游戏已下载完毕并在后台执行首屏逻辑。
  • void onProgress(int progress):下载进度回调(0-100)。
  • void onFailure(int retCode, String retMsg):预启动失败。可能原因:URL 错误、网络中断、解压失败或内存不足。

运行行为

  1. 自动下载:SDK 优先检查本地缓存,若无匹配版本则启动多线程下载。
  2. 逻辑预热:下载解压完成后,立即启动 JS 引擎并执行游戏入口脚本。
  3. 网络加速:游戏在后台可以提前发起业务请求(如获取用户信息、连接游戏服),进一步消除等待感。
  4. 后台静默:在正式挂载前,所有音频会自动静音,GPU 渲染会被限制在最小负载。

代码示例

java
String url = "https://cdn.example.com/builds/game_v3.zip";

SUDOPGamePackageParams params = new SUDOPGamePackageParams();
params.version = "gamePkgVersion";
params.fid = "2e7ca170f33629c7baf4dc430c541c43";
params.fidType = FIDType.MD5;
params.appGameID = "appGameID";
params.appCPID = "Game Developer id";
params.appGroupID = "Game developer group id";

SUDOPGameTask preLoadTask = SUDOP.preStartGameByUrl(url, params, new SUDOPPreStartGameListener() {
    @Override
    public void onSuccess(String gameId, SUDRTGameHandleProvider provider) {
    }
    @Override
    public void onFailure(int retCode, String retMsg) {
    }
});

// 若不启动且离开场景,务必销毁以停止后台逻辑
// task.destroy();

注意事项

  • 流量开销:由于包含下载环节,建议在非 Wi-Fi 环境下提醒用户或限制触发。
  • 资源清理:通过 URL 加载的资源受 SDK 缓存策略管理,若磁盘空间不足会自动清理旧版本。
  • 生命周期管理preStart 会创建真实的运行实例,占用 CPU 和内存。如果确定不使用,请调用 task.destroy()