Skip to content

通过 GameId 加载游戏

本文档介绍如何通过 GameId 启动游戏,并将游戏视图加载到应用页面中。


概述

通过 SUDOP.startGame 接口,可以根据游戏的唯一标识 gameId 启动游戏。

该接口是一个全自动流程接口,SDK 会自动完成:

  • 游戏资源检查(未下载自动下载)
  • 运行时初始化
  • 脚本引擎加载
  • 游戏实例创建
  • 回调返回游戏视图(Game View)

开发者只需在成功回调中将 View 添加到 UI 容器中即可完成游戏加载。


完整流程

启动游戏前,必须依次完成以下步骤:

  1. 初始化 SDK(initSDK
  2. 用户鉴权(auth
  3. 启动游戏(startGame

示例代码

java
SUDOP.initSDK(context, "Your appId", "Your appKey", new SUDOPInitSDKListener() {
    @Override
    public void onSuccess() {
        SUDOP.auth("Your user signature", new SUDOPAuthListener() {
            @Override
            public void onSuccess() {
                SUDOP.startGame("You need to load the game id", 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 gameView = gameHandle.getGameView();

                        // 将游戏View添加到你的布局容器中
                        // container.addView(gameView);
                    }

                    @Override
                    public void onFailure(int retCode, String retMsg) {
                        // 游戏加载失败
                    }
                });
            }

            @Override
            public void onFailure(int retCode, String retMsg) {
                // 鉴权失败
            }
        });
    }

    @Override
    public void onFailure(int retCode, String retMsg) {
        // SDK 初始化失败
    }
});

核心接口说明

startGame

java
public static SUDOPGameTask startGame(
    String gameID, 
    SUDOPStartGameListener listener
);

参数说明

参数类型描述
gameIDString必填,游戏唯一标识

回调说明

SUDOPStartGameListener

  • void onGamePkgDecrypt(GamePkgDecryptHandle handle, String filePath) 游戏包解密回调(可选实现)

  • void onCreated(SUDRTGameHandle gameHandle) 游戏实例创建完成 可用于注入 JSBridge / 设置启动参数

  • void onSuccess(String gameId, SUDRTGameHandle gameHandle) 游戏启动成功

    核心操作:

java
View gameView = gameHandle.getGameView();

将该 View 添加到你的布局中即可完成加载


  • void onFailure(int retCode, String retMsg) 游戏启动失败

    常见原因:

    • gameId 错误
    • 网络异常
    • 鉴权失败

GamePkgDecryptHandle

  • void success(String decryptedFilePath, boolean isDeleteFile) 解密成功

  • void fail(int retCode, String retMsg) 解密失败


运行机制

调用 startGame 后,SDK 内部执行:

  1. 检查游戏资源(自动下载)
  2. 初始化运行环境
  3. 创建游戏实例
  4. 返回 Game View

如果之前调用过 preDownloadpreLoad,可加速启动


UI 集成说明

你需要准备一个容器,例如:

java
FrameLayout container;

onSuccess 中:

java
container.addView(gameView);

注意事项

1. 必须完成初始化和鉴权

顺序不可错:

text
initSDK → auth → startGame

2. 必须持有 GameTask

java
SUDOPGameTask gameTask = SUDOP.startGame(...);

在页面销毁时:

java
gameTask.destroy();

3. 单实例运行

建议同一时间只运行一个游戏实例。


4. UI 线程安全

onSuccess 回调在主线程执行,可以直接操作 UI。


总结

text
通过 gameId 加载游戏 = 调用 startGame → 获取 GameView → addView

上述代码示例为Android的代码示例,iOS亦是相同流程,具体可查看:iOS API