# demo **Repository Path**: singletang/demo ## Basic Information - **Project Name**: demo - **Description**: 荒野十日 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-23 - **Last Updated**: 2026-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 荒原前哨:余烬重燃(MVP) Cocos Creator **3.8.x** 工程。本 MVP 按「数据驱动逻辑层 + 表现层」拆分,地图与单位使用 **Graphics 色块** 与 **Label 文案**,便于先验证玩法与性能。 **显示**:启动场景 Canvas 设计分辨率为 **1920×1080(横屏 16:9)**,`GameRoot` 在运行时根据 `view.getVisibleSize()` 缩放地图并留出 HUD 区域,适配常见手机横屏。 ## 在编辑器中运行 1. 用 **Cocos Creator 3.8.3** 打开本工程目录。 2. **资源管理器** 中右键 `assets` → **场景** → 新建场景,保存为 `assets/scenes/Main.scene`(若尚无 `scenes` 文件夹可先新建文件夹)。 3. 打开 `Main`,选中 **Canvas** 根节点,在 **属性检查器** 添加组件 **GameRoot**(脚本路径:`assets/scripts/game/GameRoot.ts`)。 4. **项目** → **项目设置** → **功能裁剪** 无需改动;在 **构建发布** 或工具栏 **预览** 中,将 **Main** 设为启动场景(菜单 **项目 → 场景设置** 将 Main 拖入「启动场景」)。 5. 点击 **预览** 运行。 ## 操作说明 - 首次进入会弹出 **玩法说明**(在首帧之后延迟一帧再显示,并强制置于最上层,避免被其它 UI 挡住);也可随时点击 **玩法说明** 查看。关闭后写入本地存储键 `wasteland_mvp_help_v2`(若曾用过旧版 `v1` 会自动迁移为已读,不再弹窗)。 - **能量泵**:空地建造,**仅消耗光能**(`ENERGY_PUMP_BUILD_LIGHT_COST`);白天**通电**时按 **4 光能 : 1 AP** 从全局池转化,转化速率见 `ENERGY_PUMP_CONVERSIONS_PER_SEC`。 - **失落节点**:开局在四个象限边缘各生成一处遗迹(远古中继器 / 自动化工厂 / 休眠防御核 等),**不可拆除**、不受怪物伤害;需用电网接通。**远古中继器(保守)**:通电时视野半径 `LOST_RELAY_VISION_RADIUS`、全局电线杆连接 **+`LOST_RELAY_LINK_BONUS`**(仅计一座);**自动化工厂**:每夜结束若通电发放 `LOST_FACTORY_NIGHT_AP` 点 AP;**休眠防御核**:夜晚每隔 `LOST_CORE_LASER_INTERVAL_SEC` 秒对 **射程内最近** 一只可见怪造成伤害(`LOST_CORE_RANGE` / `LOST_CORE_LASER_DAMAGE`)。未探索时遗迹格在黑雾中有微弱闪烁提示。 - **矿脉**:仅生成在 **基地初始视野(切比雪夫半径 = VISION_RADIUS)以外**;未探索时在底层显示为平地色,**探索后**才显示土黄色。 - **白天**:点击地图 **空地**(非障碍、无建筑)弹出 **全屏遮罩 + 建造面板**(含机枪、墙、矿机、电线杆及扩展塔:特斯拉线圈、折射棱镜、喷火器、放大器、电容器、引力碑等,见 `buildCatalogTabs`(分类 Tab)与 `BuildingType`)。点击 **已有建筑**(非基地)打开 **拆除面板**,仅工程铲可拆,返还比例见 `DEMOLISH_REFUND_RATIO`。 - **光能**:矿机产出进入全局池;**夜晚**若建筑 **通电** 且受损,会按 `GAME_DEFAULTS` 中 `AUTO_REPAIR_*` 消耗光能自动回血;断电不修复。 - **过载**:**夜晚**点击 **已通电武器塔**(机枪、特斯拉、棱镜、喷火器等),消耗 `OVERLOAD_LIGHT_COST` 光能,在 `OVERLOAD_DURATION_SEC` 内射速 × `OVERLOAD_FIRE_RATE_MUL`(需主网或电容器后备可开火时方可触发)。 - **电网**:建造、拆除等时机重算;**防守阶段**内也会刷新,以便 **食光者** 站在普通电线杆格上时 **掐断该杆后方中继**(该杆不参与 BFS 扩展)。**电容器** 邻接武器在主网断电时可用储备电荷离散开火;**放大器** 邻格提升武器伤害倍率。 - **开始夜晚**:怪物沿 **流场** 与 **引力碑** 拉力混合移动;种类含普通、**食光者**、**灰烬巨兽**、**暗影潜行者**(仅在光亮格可被攻击;黑雾/灰雾中依视野与点燃规则见 `tickTowers` / `drawMonsters`)。**未探索(黑雾)** 格移速 × `BLACK_FOG_SPEED_MUL`;通电机枪等武器射击,断电时依电容器规则可能仍可射击。 - 夜晚结束或清空波次后进入 **清晨奖励**,三选一 Buff;**剩余光能**低于 `REWARD_TIER_LIGHT_BLUE` 为草木卡池,介于蓝阈与金阈之间为花卉卡池,不低于 `REWARD_TIER_LIGHT_GOLD` 为巨树卡池(见 `GAME_DEFAULTS`)。 - **质变卡**:例如 **反击荆棘**(墙受击时耗光反伤)、**超导网络**(电线杆连接半径 +3)、**光合作用**(矿机效率随照亮格数提升,有上限)。 - **胜利(大绽放)**:当夜结算时若 **存活夜数 ≥ `BLOOM_VICTORY_AFTER_NIGHTS`(默认 20)**,或 **全部失落遗迹类建筑均已通电**,则进入 **大绽放**;结算分 = 存活夜×100 + 当前光能×0.5 + 累计净化量×10。点击 **再来一局** 重置地图与资源。 - **失败**:**基地被摧毁** 时弹出 **游戏结束**,显示存活夜数与点亮格比例;关闭后同样可再来一局(与绽放流程衔接见 `openGameOver` / `resetGameAfterBloom`)。 - **灰烬**:`Float32Array` 记录每格污染;怪物经过叠加;**白天**通电电线杆周围净化;**白天**另按 `ASH_DAY_LIGHT_PER_ASH_POINT` 消耗**光能**按比例净化全图(`ASH_DAY_MAX_PURIFY_PER_SEC` 限速);光能不足时 **清欠**记入 `ashCleanupLightDebt`,下一昼夜与矿机产出的光能一起继续扣,直至还清或灰烬被电线杆削完(欠费会随剩余灰烬量封顶)。光能净化时基地旁飘 **「−N 光能 · 净化」**(`DAY_ASH_PURIFY_FLOAT_INTERVAL_SEC` 节流),资源栏显示 **本日净化** 累计;点击「开始夜晚」时结清未飘完的累计并清零本日统计。 更完整的「四阶段」对照见 `docs/ASHES_BLOOM_ROADMAP.md`。 ## 代码结构(对应白皮书模块) | 模块 | 路径 | 说明 | |------|------|------| | 位网格 | `assets/scripts/logic/GridData.ts` | `Uint32Array` + 位段存地形/建筑/通电/探索/句柄 | | 能源链 | `assets/scripts/logic/PowerSystem.ts` | 自基地多源 BFS,切比雪夫半径内连通电线杆 | | 流场寻路 | `assets/scripts/logic/FlowField.ts` | 从基地反向扩展代价场 + 流向量,怪物 O(1) 取样 | | 指令缓冲 | `assets/scripts/logic/CommandBuffer.ts` | 建造指令批量 drain,可扩帧限流 | | 状态机 | `assets/scripts/logic/GameState.ts` | 白天 / 夜晚 / 清晨奖励 / 生命绽放(大绽放结算) | | 资源 | `assets/scripts/logic/ResourceManager.ts` | 光能、AP | | Buff | `assets/scripts/logic/BuffDecorator.ts` | 伤害倍率、电线杆半径加成 | | 表现与循环 | `assets/scripts/game/GameRoot.ts` | Graphics 地图与迷雾、HUD、战斗、飘字伤害、玩法说明面板 | ## 与完整版的差异(刻意保留的 MVP 范围) - **迷雾**:未使用 RenderTexture + Shader,而是用 **按格半透明 Graphics** 模拟「未探索 / 已探索无视野 / 视野内」。 - **供电连线**:未单独画 Graphics 电力线,仅通过格子变暗表示断电建筑。 - **加权 A\***:怪物统一用流场;未实现拆迁型/冲锋型差异化代价。 - **对象池**:怪物与绘制量较小,未强制对象池;上线前可按清单补 **MonsterPool / 飘字池**。 若你希望下一步把 **迷雾 RT + 模糊 Shader** 或 **供电线 Graphics** 接上,可在现有 `GridData` / `PowerSystem.refresh` 回调里挂表现层即可。