Skip to content

preStartGameByDirectoryPath

预启动游戏(通过本地目录路径)

preStartGameByDirectoryPath 是启动速度最快的预处理接口。它直接加载已解压的游戏资源目录,并立即激活游戏的脚本逻辑与业务流程。由于省去了网络下载和压缩包解压的时间,该接口能以最小的 I/O 开销让游戏在后台进入运行状态。

此接口常用于本地开发调试、资源预置(从 Assets 目录拷贝到私有目录)或业务侧已经完成资源管理逻辑的场景。


方法声明

java
/**
 * 预启动游戏,根据游戏本地目录路径
 *
 * @param directoryPath     directoryPath
 * @param params            包含本地目录路径及初始化配置的参数对象
 * @param listener          预启动状态监听器
 * @return SUDOPGameTask    任务句柄,用于管理预启动的游戏实例
 */
public static SUDOPGameTask preStartGameByDirectoryPath(String directoryPath, SUDOPGamePackageParams params, SUDOPPreStartGameListener listener) ;

参数说明

属性类型描述
directoryPathString必填。游戏资源文件夹的绝对路径(目录内需包含 app.json 等入口文件)。

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 onFailure(int retCode, String retMsg):预启动失败。常见原因:目录不存在、缺少核心配置文件、权限受限。

运行行为

  1. 零压缩开销:直接映射本地文件系统,绕过解压步骤,极大降低 CPU 瞬时负载。
  2. 逻辑全激活:加载脚本引擎后立即执行游戏的 onLoad 函数,预加载游戏配置、建立服务端长连接(若有)。
  3. 渲染准备:在后台内存中构建渲染树,准备好首屏帧数据。
  4. 状态复用:当用户正式进入游戏时,SDK 直接将此后台实例的 Surface 挂载到 UI 视图上。

代码示例

java
String directoryPath = getFilesDir().getAbsolutePath() + "/local_game_storage/game_101/";

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.preStartGameByDirectoryPath(directoryPath, params, new SUDOPPreStartGameListener() {
    @Override
    public void onSuccess(String gameId, SUDRTGameHandleProvider provider) {
    }
    @Override
    public void onFailure(int retCode, String retMsg) {
    }
});

// 若不启动游戏并退出场景,务必销毁任务
// task.destroy();

注意事项

  • 路径完整性:开发者需确保 directoryPath 指向的文件夹内文件结构完整。
  • 资源锁定:预启动期间,SDK 可能会占用该目录下的部分文件资源。
  • 内存警示:虽然 I/O 开销低,但脚本运行产生的内存占用与其他预启动方式一致,建议在设备内存充足时使用。