本页目录

PuzzleDash:基于 Dash 引擎的三消益智游戏

PuzzleDash · wozniakty/PuzzleDash

这是用 D 语言 Dash 引擎(由 Circular Studios 开发)实现的三消益智游戏。README 给出的 Windows 运行步骤是:先安装 dmd 与 dub,克隆仓库后,在命令行进入该仓库目录并执行 dub 启动。仓库未说明关卡数量、具体玩法机制、平台支持范...

沙盒生存 自研引擎 JavaScript 程序化生成 渲染技术 高级
★ Stars 187 Forks 81 License MIT 更新 2026-10-11

国内开发环境适配

Windows
AI 推断/待核验
Linux
AI 推断/待核验
macOS
AI 推断/待核验
引擎 / 框架:自研引擎 暂无中文教程标记 未标记站长实测
项目为纯前端 JavaScript/HTML5 Canvas 静态页面,无需编译或后端依赖;国内访问 GitHub Pages 演示可能不稳定,可自行保存仓库静态文件本地打开。具体浏览器兼容性待核验。

中文项目介绍

Cube Engine 是一个用纯 JavaScript 在 HTML5 Canvas 2D 上下文上搭建的体素 3D 引擎,README 开宗明义地强调:它完全不使用 OpenGL,因此也没有任何 3D 硬件加速。作者把项目定位为概念验证(proof of concept)与学习性质的工程,同时坦言只要机器足够强劲,玩起来还是有点意思的。也正因为渲染完全靠 CPU 绘制 2D 图元来“假装”3D,它更像一份可运行的图形学教学样本,而不是可以直接拿来对标的商业级引擎。

在玩法层面,Cube Engine 呈现的是一个类似 Minecraft 的方块世界:场景由一个个立方体节点组成,玩家可以增删任意位置、任意类型的节点,节点种类有多种可选。世界的边界只受 JavaScript 整数大小限制,也就是说世界会随着玩家走向新区域而动态生成,纵向没有高度上限,但受渲染距离约束,实际能看到的范围有限。地形由一个伪随机函数生成,底层系统刻意模仿 Minecraft 的做法:世界被切分为 16×16×无限 的区块(chunk),伪随机函数为每个区块生成一个高度值,区块之间的高度值再插值过渡,高度值以下填满节点、以上留空;依据高度的差异,会形成草、泥土、沙等不同的地表材质。与 Minecraft 相比它做了明显减法:使用 2D 而非 3D 的 perlin 噪声,没有地下矿脉和隧道,没有敌人或生物,没有树木,也没有物理模拟——README 直接说明,因为渲染器已经吃掉了全部算力,功能必须受限。菜单中还可以打开高度图与实时 FPS 曲线,便于观察生成结果和性能开销。

渲染部分是这份代码最值得阅读的地方。引擎采用最简单的画家算法(painter's algorithm),所有图元从远到近依次绘制,近处的节点覆盖远处的节点;由于 Canvas 本身不具备任何 3D 能力,引擎只能用非常基础的 3D 渲染技术自行拼装。代码中实现了背面剔除、遮挡剔除和视锥剔除等优化手段,并明确指出八叉树不适合这种游戏与尺度,用区块划分更合适。玩家还可以在设置中调低渲染距离来换取帧率。Canvas 没有纹理支持,因此贴图必须从零做起:项目实现了一套仿射纹理映射(affine texture mapping)系统;开启贴图会明显拖慢速度,所以引擎同时保留了只使用纯色的简易渲染模式。贴图被打包在一张 PNG 文件中,UV 布局与 Minecraft 完全一致,理论上可以直接套用现成的 Minecraft 材质包。

核心功能

核心特性

存档方面,玩家可以把游戏保存在本地:保存范围是以玩家所在区块为中心的 3×3 区块内所有节点,存放位置是浏览器的本地存储,也可以导出为文件;但出于安全原因只能从本地存储重新载入,无法直接从文件读取世界,若要从文件载入就必须以服务器方式运行程序。这一点对想把它当作“引擎”复用的开发者是个现实约束。

README 还坦率列出了已知缺陷:不支持角落裁剪,玩家贴得太近时节点会被剔除,从而能“透视”到另一侧;JavaScript 浮点数的处理方式很难保证精确整数,而碰撞系统恰恰依赖整数,作者通过“接近整数时四舍五入”的办法绕过,但自认不够优雅;Chrome 在纯色渲染模式下存在性能问题,疑似 context.fill() 调用次数过多时失效;Firefox 要求全屏才能锁定鼠标指针,而作者认为除非用超级计算机,否则不该全屏运行。这些描述都是理解该项目边界的重要线索,也提示读者不要以产品级标准期待它。

工程与分发上,Cube Engine 是零依赖的纯前端项目,无需编译,直接用浏览器打开或从静态服务器托管即可运行,项目主页提供了在线演示。以现代浏览器的性能水平衡量,纯 Canvas 的体素渲染依旧是重负载场景,建议在演示时先把渲染距离和贴图选项调低。

技术架构分析

技术要点

适合学习的人群:想弄清“没有 GPU 加速时 3D 是怎么画出来的”的初学者,可以从剔除策略、画家算法排序、仿射纹理映射这三处切入,再扩展到区块化世界生成与插值地形的实现。它的许可证为 WTFPL,几乎不设限制,但代码风格与年代感较强,作为参考实现阅读比直接集成更合适。

开源许可证与版权说明

许可证标识:MIT。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目