带有limboAI的项目导出Web项目
遇到的问题
如果项目中带有limboAI,导出Web项目后会报以下错误:
GDExtension libraries are not supported by this engine version.
Enable "Extensions Support" for your export preset and/or build your custom template with "dlink_enabled=yes".
且项目无法运行。
问题分析
分析报错,提示需要启用“支持扩展”或自行构建导出模板后再打包。
如果需要构建导出模板,则需要添加"dlink_enabled=yes"参数。
解决思路
查看导出设置,发现Web导出设置中变体
中包含扩展支持
项,勾选后重新打包。
再次测试后发现游戏卡死在加载页面并报以下错误:
localhost/:1 Uncaught (in promise) LinkError:
WebAssembly.instantiate(): Import #31 "env" "memory": mismatch in shared state of memory, declared = 1, imported = 0
分析后是没有开启线程支持。
和上方同理,开启Web导出设置中变体
中包含线程支持
项,再次导出后,本地运行成功。
itch环境
将项目打包后发布在itch上,发现提示缺少跨域Header(Cross-Origin Isolation)和缺少ShareedArrayBuffer支持。
在itch游戏设置页面中,找到Embed options
项的Frame options
的SharedArrayBuffer support
。
再次发布后,页面中可以运行。
总结
应该是由于LimboAI使用了多线程技术。而Web导出默认未开启扩展支持,所以需要在导出时同时勾选扩展支持
和线程支持
。
而开启线程支持后,需要支持SharedArrayBuffer,所以需要在itch的设置中启动。