#voxel #web-gpu #gpu #graphics #game-engine #wasm #engine

bin+lib rezcraft

使用 wgpu 编写的类似 Minecraft 的游戏,支持原生和 wasm

2 个不稳定版本

0.2.0 2024年1月24日
0.1.0 2024年1月17日

#287 in 渲染

GPL-3.0-or-later

245KB
6K SLoC

Rezcraft

  • 使用 wgpu 编写的 Rust Voxel 引擎
  • 支持原生目标和 wasm

截图

Sunlight Lighting UI

特性

  • 并行化世界和网格生成
  • 使用 贪婪网格 高效网格
  • 易于添加自定义纹理和方块,在运行时修改方块类型
  • 彩色光照系统,日光
  • 可通过应用程序设置进行配置
  • 透明度(仅原生)
  • 存档系统(仅原生)

如何

安装

  • 运行无需安装的 网页版本

  • 预编译的二进制文件可以在 发布 中找到,这些二进制文件已将所有资产烘焙到自身中,因此您无需资源目录

  • 或者,如果您在未启用 portable 功能的情况下编译 rezcraft,则设置您的文件结构如下

    • 确保二进制文件 rezcraft(或 Windows 上的 rezcraft.exe)和 res 目录位于同一目录中
    • 您的目录树应如下所示
├── res
│   ├── block
│   │   └── ...
│   ├── icon.png
│   ├── shader
│   │   └── ...
│   └── texture
│       └── ...
└── rezcraft (rezcraft.exe on windows)
    • 存档和资源目录的位置(默认为 ./saves./res)可以通过设置 SAVES_PATHRESOURCE_PATH 环境变量进行更改

添加自定义纹理和方块

纹理

  • .png 图像添加到 ./res/texture/,它将在程序重启后加载
  • 所有纹理必须是正方形,并且所有纹理必须具有相同的分辨率

方块

  • ./res/block/目录下添加一个描述文件的.yaml块,使用现有文件之一作为模板
  • 块及其纹理、光源以及透明度和坚固度等属性也可以在运行时进行编辑(暂停时编辑块菜单)

控件

按键 动作
鼠标移动 旋转相机
W / 上箭头 向前移动
S / 下箭头 向后移动
A / 左箭头 向左移动
D / 右箭头 向右移动
空格 / K 向上移动
Shift + L / J 向下移动
X / 鼠标右键 删除方块
C / 鼠标左键 放置方块
V / 鼠标中键 选择方块
M 在玩家位置重新加载区块
F5 保存
F9 加载
F11 切换全屏
F12 从配置文件重新加载设置
Tab 暂停/继续
Esc 退出

使用 cargo 构建

  • 安装rust,或者可选地使用包含的开发外壳:nix develop
  • 选择特性
特性 描述 备注
便携式 不读取资源(纹理、着色器...)从磁盘,而是将它们烘焙到二进制文件中 当编译为wasm时必须启用
save_system 允许保存和加载世界 wasm不兼容
rayon 加载和保存世界时的额外并行性 wasm不兼容
  • 手动
    • 构建 - cargo build --no-default-features --release --features "Feature1 Feature2"
    • 运行 - cargo run --no-default-features --release --features "Feature1 Feature2"
    • 构建为 wasm - wasm-pack build --release --no-default-features --features portable --target web --features wasm_thread/es_modules
  • 使用构建脚本 f

未来更新可能的计划

  • 改进世界生成
  • 可编辑的控件
  • 物理引擎,改进碰撞检测
  • 可选地将资产烘焙到二进制文件中
  • 华丽的着色器效果
  • 多人游戏

依赖项

~28–68MB
~1M SLoC