下一个微小块的开发日志。添加了一些基本的核心机制,尤其是锚定实体的放置系统。
这些机制中大多数不是定义游戏玩法的特性,而只是核心的必需品。 我知道我们已经有了数百个与生存和采矿和制作有关的游戏 😅。
此外,我也在视觉方面取得了一些进展,修复了一些bug,改进了雾效应,用于LOD隐藏,并且实现了GI照明系统的基础。
— 放置系统 —
我很喜欢上周的放置系统。这个系统支持两种类型的放置:
- 世界块:直接将 voxel 写入世界格栅作为地形的一部分。设计用于结构,尽管还没有建造工具,所以基本上不可用 😅。
- 世界锚定实体:某些物品在世界中生成实体,支持自己的机制。这些实体可以被锚定到地形,或者是其他实体。
我很高兴地看到锚定的效果。对于地形,实体必须保留足够的底部附着点,取决于其大小。例如,像蜡烛这样的物品可以自由放置在其他实体(例如树木,护栏,岩石)上,并且如果其源锚点被销毁,则会被无效化。
— 照明系统 —
当前支持全局照明的形式,通过在玩家周围实现一个粗糙的光照传播网格。每帧通过网格传播光源,并且应用遮挡,同时也根据局部 voxel 占有权重传播。
该视频仅展示了这项技术在地形中的工作。实体是支持的,但当前有问题:当将实体的局部占有体积叠加到世界格栅时,会出现闪烁的问题。
在这种情况下,实体只会样本网格,但下一个更新应该可以解决这个问题。
颜色传播也支持,且辐射材料也会简单地工作。颜色传输操作也将可能(例如表面颜色反射和滤镜(如彩色玻璃)),但还没有实现。
我的最初优先级是性能。照明计算目前只需要 0.3ms 在 16ms 的帧中。
— 设备 —
当前在 Apple M1 Pro 上运行,帧率在 40-100 FPS 之间。稳定的内存使用量约为 3.5 GB 共享内存,且 GPU voxel 数据占用了其中的 2.9 GB。
将来需要改善内存以支持更大的游戏规模,并且支持具有较低绝对 VRAM 的离散 GPU,但这将在不久的将来实现 :)
评论 (0)