昨天我们完善和优化了我们的扫雷小游戏
坏蛋Dan:rust基础学习--基于Bevy实现扫雷小游戏day7
今天我们来结合webAssembly
将我们的小游戏打包成.wasm
的形式,让它可以运行在浏览器中。
WASM
程序关于rust
程序如何打包编译成.wasm
程序的这一块知识,我之前是有写过相关入门文章的,感兴趣的可以看一下
由于我们的项目是一个workspace
,所以里面的crate
是需要单独打包的。
我们先来打包board_plugin
回到board_plugin/Cargo.toml
文件中
我们只需要bevy
的其中一个feature
,所以这里我们修改下bevy
的依赖。
然后加了一个只会在wasm
编译目标下才会加载的依赖rand
。
然后回到mine_sweeper
中的Cargo.toml
文件中
这里额外加了个x11
的feature
只针对native
场景避免编译成wasm
有问题。
最后我们回到根目录,在里面创建一个.cargo
的文件夹,然后在里面创建config.toml
文件。
然后执行cargo install wasm-server-runner
然后我们执行cargo serve
,会跑一个服务器。
但是这里我跑起来之后发现assets
加载不正常,然后搜了下,发现官网就有说
另外官网提供了从零开始的wasm
构建:bevy/examples at latest · bevyengine/bevy (github.com)
我们把文件复制过去
然后重新跑一下,然后发现还是没卵用,然后发现路径不对,得是examples/wasm/assets
,然后我到wasm-server-runner
的github
上看了下issue
,发现其实它是会自动建立连接的:Add custom static resources · Issue #9 · jakobhellermann/wasm-server-runner (github.com)
那就更怪了,看了下请求,发现是直接在根路径的。。
但是它服务器在哪咱都不知道。。。。
然后我发现有个老哥提了一个commit
被merged
了:Custom serve directory by daxpedda · Pull Request #19 · jakobhellermann/wasm-server-runner (github.com)
我们可以加一个环境变量WASM_SERVER_RUNNER_DIRECTORY
用来定位
我们来设置一下,我这是window
的powserShell
重新运行下cargo serve
终于可以了。
感觉好累,还不如按照之前学的方式,再自己搞个node
服务器。。。
那么我们这个扫雷小游戏旅程就结束啦~
学了一些东西,但是依旧不是系统性的,想自己独立搞一个还是有些难度。
发布于 2023-02-16 21:53・IP 属地广东