startGameByDirectoryPath
启动游戏(通过本地目录路径)
startGameByDirectoryPath 是最为底层的启动接口之一。它直接加载一个已经解压完成的游戏目录。由于该接口完全跳过了下载和解压阶段,它能以极低的 I/O 开销进入初始化流程。
该接口常用于开发者模式、资源预置在 Assets 目录中并手动解压、或者业务侧有高度自定义的资源分发系统的场景。
方法声明
java
/**
* 启动游戏,根据游戏本地目录路径
*
* @param directoryPath 本地目录路径
* @param params 参数对象
* @param listener 启动过程监听器
* @return SUDOPGameTask 任务句柄
*/
public static SUDOPGameTask startGameByDirectoryPath(String directoryPath, SUDOPGamePackageParams params, SUDOPStartGameListener listener);参数说明
| 属性 | 类型 | 描述 |
|---|---|---|
| directoryPath | String | 必填。游戏资源文件夹的绝对路径。目录根部需包含 app.json。 |
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:错误信息描述。
运行行为
- 结构验证:SDK 检查
directoryPath目录下是否存在必要的入口文件。 - 零拷贝加载:SDK 运行时直接读取该路径下的资源,不会将其复制到其他缓存位置。
- 引擎启动:加载 JS 核心库并启动游戏主逻辑。
- 视图挂载:在
onSuccess回调中返回gameView,开发者将其添加到 Activity 布局即可看到画面。
代码示例
java
String directoryPath = getFilesDir().getAbsolutePath() + "/game_res/my_tetris_folder/";
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 gameTask = SUDOP.startGameByDirectoryPath(directoryPath, params, 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) {
}
});注意事项
- 路径规范:请确保传入的是文件夹路径。如果该目录下的文件发生变动,可能需要重新调用启动接口以确保逻辑正确。
- 资源管理:SDK 不会自动清理此接口指定的目录。业务侧需负责该目录的生命周期管理(如更新或删除旧目录)。
- 线程安全:回调在主线程执行,可直接操作 UI。