Skip to content

startGame

启动游戏(通过游戏 ID)

startGame 是最常用的游戏启动接口。它是一个“全自动”接口:调用后,SDK 会自动检查资源(若未下载则启动下载)、初始化运行时环境、加载脚本引擎,并最终通过回调返回一个 Game View 供开发者挂载到 UI 布局中。


方法声明

java
/**
 * 启动游戏,根据游戏 ID
 *
 * @param gameID   游戏 ID
 * @param listener 启动过程监听器
 * @return SUDOPGameTask 任务句柄,用于管理游戏生命周期
 */
public static SUDOPGameTask startGame(
    String gameID, 
    SUDOPStartGameListener listener
);

参数说明

属性类型描述
gameIDString必填。需要启动的游戏唯一标识。

1. SUDOPStartGameListener

  • void onGamePkgDecrypt(GamePkgDecryptHandle handle, String filePath):游戏包解密回调。
  • void onCreated(SUDRTGameHandle gameHandle):游戏实例创建完成。gameHandle为游戏实例句柄,可用于后续控制游戏生命周期或交互。
  • void onSuccess(String gameId, SUDRTGameHandle gameHandle):游戏启动成功。
  • void onFailure(int retCode, String retMsg):游戏启动失败。

2. GamePkgDecryptHandle

  • void success(String decryptedFilePath, boolean isDeleteFile):解密成功。decryptedFilePath:解密后的文件路径。isDeleteFile:游戏加载完成后是否删除该文件。

  • void fail(int retCode, String retMsg):解密失败。retCode:错误码。retMsg:错误信息描述。


运行行为

  1. 自动衔接预处理:如果之前调用过 preDownloadpreLoad,此接口会自动复用已就绪的资源和环境,实现“秒开”。
  2. UI 线程回调onSuccess 会在主线程执行,开发者可以直接进行 addView 操作。
  3. 音画同步:视图挂载后,游戏内部的音频和渲染循环正式激活。

代码示例

java
SUDOPGameTask gameTask = SUDOP.startGame("game_101", new SUDOPStartGameListener() {
    @Override
    public void onGamePkgDecrypt(GamePkgDecryptHandle handle, String filePath) {
    }
    @Override
    public void onCreated(SUDRTGameHandle gameHandle) {
    }
    @Override
    public void onSuccess(String gameId, SUDRTGameHandle gameHandle) {
        // 将这个View贴到app自身的页面上即可
        View gameView = gameHandle.getGameView();
    }
    @Override
    public void onFailure(int retCode, String retMsg) {
    }
});

注意事项

  • 容器准备:在调用前,请确保 UI 布局中已准备好一个 FrameLayout 或类似的容器。
  • 任务持有:返回的 SUDOPGameTask 必须被 Activity 持有。在 Activity 销毁时,必须调用 gameTask.destroy() 以确保内存释放。
  • 单一实例:在同一时间内,建议只运行一个游戏实例。