本页目录

Dental Defender:糖果部落传奇(HTML5 射击/塔防游戏)

candyjam · cshepp/candyjam

本项目是使用 JavaScript 编写的 HTML5 射击/塔防游戏《Dental Defender: Saga of the Candy Horde》,为 #candyjam 活动作品,版权信息标注为 2014 年。README 称其在约 450 款参赛游戏中总排名第 5,并被 Wired 一篇文章提及。仓库未提...

动作游戏 射击 Three.js JavaScript 角色控制 背包系统 关卡管理 渲染技术 中级
★ Stars 17 Forks 16 License 未明确 更新 2026-05-05

国内开发环境适配

Windows
AI 推断/待核验
Linux
AI 推断/待核验
macOS
AI 推断/待核验
引擎 / 框架:Three.js 暂无中文教程标记 未标记站长实测
项目为浏览器端 Three.js 游戏,需通过静态服务器加载 JSON 与 OBJ 资源;国内访问 Three.js CDN 或在线原型可能需镜像或代理,构建与依赖细节待核验。

中文项目介绍

Drakonas 是一个用 Three.js 在浏览器里搭建的经典纵版飞行射击(shoot 'em up)项目,玩法构思直接来自 Apogee Software 在 DOS 时代发行的《Raptor: Call of the Shadows》。README 开篇就把目标写得很清楚:玩家驾驶一架可以不断升级的战机执行一系列任务,在任务中积累金钱、搜集武器,回到商店把钱花在提升战机上。需要提前说明的是,作者本人在文档里明确表示仓库目前只是一个“非常早期的原型”,它展示的是游戏想要达到的速度感与一关任务的雏形,而不是一款可以直接通关的成品。因此阅读这个仓库时,更合理的期待是把它当作一份 3D 网页射击游戏的技术骨架和玩法设计草图。

从玩法循环看,核心是“任务内战斗 + 任务间经营”的双层结构。玩家在一关里存活的条件很简单:生命值大于 0。任务过程中可以获得金钱与武器,也可能直接在地图里捡到护盾、生命值和其他辅助道具;任务结束后进入商店,用赚到的钱购买护盾、武器、生命值等装备。这些已购或已获得的装备数据会被写入浏览器的 IndexedDB,从而在多次任务之间保留玩家的成长进度。换句话说,即使目前战斗与敌人还很简陋,经济与装备存档这条链路在文档层面已经被完整设计出来了。

核心功能

核心特性

内容生产管线是这个项目比较有意思的部分。关卡不是硬编码在脚本里的,而是通过 /files/levels/.json 加载;这个 JSON 本质上就是一份“物体 + 位置”的大列表,负责描述一关里出现什么、出现在哪里。每个任务由一个或多个对象构成,其中大部分对象来自 Blender 或其他 3D 软件导出的 .obj 模型。世界被规定为按 200×200 单位(与 Blender 和 Three.js 使用同一套单位)的瓦片拼接而成,建模时要求把物体锚点放在原点(0 单位),这样不同瓦片才能严丝合缝地对齐。玩家的尺寸大约 4×5 单位,默认模型放在 /files/objects/player/default.obj,作者也欢迎社区投稿自己的战机作为升级机型。场景中会填充树木、建筑、桥梁等现代环境物体,并且这些物体可以被摧毁,因此建议为同一类物体准备“完好”和“被摧毁”两份 .obj。

技术实现上,项目选择 Three.js 作为渲染与场景库,代码使用 JavaScript 编写,属于纯浏览器端的 Web 3D 方案,没有使用 Unity、Godot 之类的完整游戏引擎。README 对参与者的分工描述也间接暴露了当前的完成度:世界与任务由 JSON 驱动加载,而敌人 AI 还需要编写、武器系统还需要创建、“所有会动的东西都需要动起来”;菜单部分规划了一个机库(hangar)场景作为默认主界面,以及一个任务房间供玩家挑选新任务。文本层面,多语言翻译放在 /_locales/ 目录,关卡名称与任务简报则写在 /files/levels/ 下的 JSON 里,所以改关卡文案并不需要动代码。

技术架构分析

技术要点

体验方式方面,README 提供了一个线上的早期原型地址(couchfriends.com/src/games/drakonas/),作者称该页面会随仓库“实时”更新,用来展示当前游戏的速度和任务构想;项目的 homepage 指向作者所在站点的游戏列表页。仓库没有说明打包、构建或本地启动的脚本,也没有给出下载发行包,实际运行方式需要自行核验。平台维度上它是一款网页游戏,理论上只要浏览器支持 WebGL 即可运行,但仓库并未正式声明支持哪些操作系统。

如果作为学习样本,这个仓库值得关注的点包括:用 Three.js 组织一个按瓦片拼接的 3D 世界、用 JSON 数据驱动关卡与物体摆放、把玩家装备与购买记录存进 IndexedDB 做持久化,以及在浏览器里管理大量 .obj 外部模型的加载与替换。同时也要清醒地看到限制:它仍是原型,敌人、武器、完整关卡流程多数停留在计划中,不要默认 README 里描述的功能都已实现;模型资源体积与加载性能在 Web 端也容易成为瓶颈。对想参与开源游戏的人来说,它的价值反而在于分工写得很具体——3D 建模、程序、贴图与 UI、剧情文案都有明确的接手点。

开源许可证与版权说明

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

相似项目