Wonderbricks 现在开源了
Wonderbricks 最初是一个生产项目:是一个完整的 WebXR 体验项目,我们可以在别人询问“一个大型 Wonderland Engine 项目实际看起来如何?”时展示和指引。
今天,我们与合作伙伴 Novelab 一起在 GitHub 上发布了完整的源代码和素材。
项目仓库:https://github.com/WonderlandEngine/wonderbricks
你将获得什么
- 完整的项目源代码 (MIT)
- 创意素材 (CC-BY)
- 一个用于 VR 和 MR 项目的参考 (包括支持在支持设备上的手势追踪)
其目标是让开发者更容易地逆向工程大型项目的结构,并了解 Wonderland Engine 的各个功能如何结合在一起。
项目结构
Wonderbricks 是一个标准的 Wonderland Engine 项目,采用了一些在原型发展成交付应用时可扩展的惯例。
js/—— 应用代码(游戏玩法、用户界面、音频、实用工具)models/—— 3D 模型textures/—— 纹理和图集shaders/—— 自定义着色器static/—— 运行时服务的资源(字体、音乐、音效)raw/—— 原始音频资源(处理之前)WonderBricks.wlp—— Wonderland 编辑器项目文件
入口点
js/index.js 是 Wonderland Engine 项目生成的入口点。首先打开它值得一试,因为它能清楚地展示应用的组成:
- 组件导入和注册(根据编辑器中使用的内容生成)
- 运行时选项(根据编辑器中的设置生成)
- 主场景的加载
如果您想了解“应用程序从哪里开始?”,这是您要查看的文件。
游戏玩法、用户界面、音频
js/ 下的代码按职责划分:
js/gameplay/包含构建循环(方块放置、网格/对齐、交互、预制件、粒子)js/ui/包含世界内用户界面(安装在手臂上的面板、选择器、按钮)js/sound/包含一个小型的音效系统和动作特定发射器js/utils/包含小型帮助工具(标签、材质帮助工具等)
这种划分不是强制性的,但在多个系统并行演变时可以保持项目的可读性。
着色器
shaders/ 包含自定义片段着色器,展示了一些面向编辑器的特性:
- 着色器功能切换
- 仅请求所需的输入
- 声明
Material结构,以便编辑器能为自定义着色器中的材质属性生成用户界面
如果您正在构建基于 Wonderland Engine 的自定义渲染,这是一个很好的参考。
构建项目
Wonderbricks 通过编辑器来完全构建。可以通过检出项目(或从 GitHub 下载 ZIP 文件)来开始:
1git clone https://github.com/WonderlandEngine/wonderbricks.git然后点击顶部的绿色箭头按钮在浏览器中启动它。
要在 Meta Quest 上运行:
- 启用 Meta Quest 的开发者模式
- 使用 USB 线连接它
- 在 Wonderland 编辑器中在顶部的设备下拉菜单选择 Meta Quest
- 点击绿色箭头按钮将浏览器启动到 Quest 上(端口转发已为您设置好。)
为什么开源
一个完善的参考项目可以解答文档无法完全覆盖的问题:
- 如何构建一个更大的项目
- 如何避免将游戏逻辑、用户界面和资源合并成一个单一的整体
- 一个“准备发货”的 Wonderland Engine 设置从头到尾是什么样的
- 如何在不阅读文档的情况下学习引擎(毕竟,这是学习的最有趣的方式。)
如果您正在评估 Wonderland Engine,这将为您提供一些具体的东西供检查。如果您已经在使用它,这是一组可以复制(或忽略)的模式,具体取决于它是否适合您的项目。
注意
如果您基于此仓库构建了某些内容并希望分享,请在我们的 Discord 社区中发布:
https://discord.wonderlandengine.com
