Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Unity] Bug: puerts webgl 怎么实现 js 脚本的热更? #1771

Open
3 tasks done
963148894 opened this issue Jun 24, 2024 · 5 comments
Open
3 tasks done

[Unity] Bug: puerts webgl 怎么实现 js 脚本的热更? #1771

963148894 opened this issue Jun 24, 2024 · 5 comments
Assignees
Labels
bug Something isn't working Unity

Comments

@963148894
Copy link

前置阅读 | Pre-reading

Puer的版本 | Puer Version

最新

Unity的版本 | Unity Version

2021.3.20

发生在哪个平台 | Platform

Editor(win)

错误信息 | Error Message

现在的webgl 后处理是把所有resources 目录下的js文件拷贝到小游戏的puerts_minigame_js_resources 下,也就是首包里。每次更新js岂不是要更新首包,还要审核。有没有热更js的方案?比如从ab包加载

问题重现 | Bug reproduce

现在的webgl 后处理是把所有resources 目录下的js文件拷贝到小游戏的puerts_minigame_js_resources 下,也就是首包里。每次更新js岂不是要更新首包,还要审核。有没有热更js的方案?比如从ab包加载

@963148894 963148894 added bug Something isn't working Unity labels Jun 24, 2024
@Geequlim
Copy link
Contributor

小游戏平台政策上不允许热更新操作

@chexiongsheng
Copy link
Collaborator

首先,如果是小游戏,请遵守平台规则/政策,不要热更。
其次,在技术严格控制热更的系统(比如IOS),所有热更本质是都是解析执行,在webgl上其实就是wasm虚拟机上再套一层虚拟机,这将废掉puerts方案在h5/小游戏环境最大好处:js代码是这些环境头等公民,能享受这些环境的基础设施(比如调试,profiler等)的便利,以及优化(比如h5环境和小游戏高性能模式的jit支持)。而且虚拟机上套虚拟机性能会有数量级的下降。

@963148894
Copy link
Author

首先,如果是小游戏,请遵守平台规则/政策,不要热更。 其次,在技术严格控制热更的系统(比如IOS),所有热更本质是都是解析执行,在webgl上其实就是wasm虚拟机上再套一层虚拟机,这将废掉puerts方案在h5/小游戏环境最大好处:js代码是这些环境头等公民,能享受这些环境的基础设施(比如调试,profiler等)的便利,以及优化(比如h5环境和小游戏高性能模式的jit支持)。而且虚拟机上套虚拟机性能会有数的下降。

我看现在的方案是后处理拷贝的到小游戏首包,因为小游戏限制,如果js代码量比较大的话首包会出问题吧。

@chexiongsheng
Copy link
Collaborator

首先,如果是小游戏,请遵守平台规则/政策,不要热更。 其次,在技术严格控制热更的系统(比如IOS),所有热更本质是都是解析执行,在webgl上其实就是wasm虚拟机上再套一层虚拟机,这将废掉puerts方案在h5/小游戏环境最大好处:js代码是这些环境头等公民,能享受这些环境的基础设施(比如调试,profiler等)的便利,以及优化(比如h5环境和小游戏高性能模式的jit支持)。而且虚拟机上套虚拟机性能会有数的下降。

我看现在的方案是后处理拷贝的到小游戏首包,因为小游戏限制,如果js代码量比较大的话首包会出问题吧。

首包超了倒是合理述求。

puerts的quickjs版本有wasm支持,它类似xlua,xlua加载lua的方式都可以用来加载js。

可以仅webgl下用quickjs(v2.1.0有webql的plugin),其它用v8。

@963148894
Copy link
Author

首先,如果是小游戏,请遵守平台规则/政策,不要热更。 其次,在技术严格控制热更的系统(比如IOS),所有热更本质是都是解析执行,在webgl上其实就是wasm虚拟机上再套一层虚拟机,这将废掉puerts方案在h5/小游戏环境最大好处:js代码是这些环境头等公民,能享受这些环境的基础设施(比如调试,profiler等)的便利,以及优化(比如h5环境和小游戏高性能模式的jit支持)。而且虚拟机上套虚拟机性能会有数的下降。

我看现在的方案是后处理拷贝的到小游戏首包,因为小游戏限制,如果js代码量比较大的话首包会出问题吧。

首包超了倒是合理述求。

puerts的quickjs版本有wasm支持,它类似xlua,xlua加载lua的方式都可以用来加载js。

可以仅webgl下用quickjs(v2.1.0有webql的plugin),其它用v8。

quickjs 我去研究一下,看下运行效率。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Unity
Projects
None yet
Development

No branches or pull requests

3 participants