Skip to content

About

一个吸血鬼幸存者类型的割草web游戏。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

47 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

史莱姆大暴走 · Slime Rampage

俯视角动作肉鸽(Roguelite)割草游戏:反套路 RPG 剧情——你不再是勇者,而是一只位于食物链最底端的史莱姆。骑士、魔法师、弓箭手组成的勇者大军源源不断涌入地下城,你需要吞噬一切来进化自保。另有独立的三路塔防行动:部署炮塔、识别敌军特性并守住巢心。 战斗视觉元素均由 HTML5 Canvas 纯代码程序化绘制(数学图形 + 渐变);仅突围的环境装饰额外使用随项目发布的 CC0(Kenney)素材位图,加载失败时自动回退到程序化图形。

0.6.0 聚焦元素法术与账号服务:元素史莱姆改为开局选定起始法术、首领核心确定第二系,六种融合反应、法术护盾与传染成长接管旧的元素点与副反应槽;共生史莱姆扩编为四人伙伴小队,空格技能重做为「共生鼓舞」。游玩接入统一账号服务,三种玩法的成绩、记录与排行榜由服务器保存,结算幂等提交并支持断网补交。当前推荐使用最新版 Chrome 或 Edge;移动端触控尚未适配。

操作

首页右上角「关于游戏」提供三种玩法的目标、操作与成长说明,以及按版本整理的更新日志;未登录也可阅读。可通过 #/about 直接打开玩法指南,或通过 #/about/updates 打开更新日志。

关于页的当前版本取自 package.json,历史记录取自 CHANGELOG.md,无需另行维护一份页面文案。后续发版时按现有格式新增版本小节并更新版本号,重新构建即可展示;面向维护者的 Verified 小节不在游戏页面展示。

操作 按键
移动 WASD / 方向键
角色专属技能(主战场)/暴走狂热(突围) Space
吸收元素核心 E
暂停 / 继续 Esc

通用冲刺已移除,F、Shift 不再触发战斗操作。主动技能也可点击 HUD 按钮释放;长按不连发。完整调整及验收见 单主动技能报告。

主战场角色(开局选择史莱姆):角色在开局即确定身份,并绑定自己的技能树(Lv.1~4 只开放本角色技能,Lv.5 自动觉醒为该树主专精,不再四选一):

角色 独占机制 专属技能(Space) 玩法短板
🍽️ 暴食史莱姆 近战咬击与吞噬:残血或咬杀血肉目标直接吞噬,捕食获得短时护甲 暴食重咬(消耗 1 猎食点):近身扇形 4 倍攻击伤害,首领 6 倍 必须靠近敌人,没有远程普攻
🔫 弹射史莱姆 齐射飞弹 +1、弹速 +25% 疾射:8 秒冷却,连续追加 4 轮齐射;移速 +20% 持续 1 秒 开火间隔 ×1.2
🔮 元素史莱姆 可使用元素系统(吸收/融合反应) 原质释放:10 秒冷却,近身冲击并击退、减速普通敌人 生命 −1
🗡️ 暗影史莱姆 闪避率+暴击分身:开局闪避 15%;有效暴击后 60% 概率生影,基础 2 个/4 秒/40% 攻击;技能独立强化概率、伤害、数量与时间 影袭:5 秒冷却,定向穿行首击必暴,指挥已有分身夹击;本体击杀返还一次 0.5 秒影袭冷却 生命 −1、仍需近战走位;分身上限 4,闪避率上限 40%
🐾 共生史莱姆 长期双伙伴:开局岩甲团团,技能解锁优先追击远程的疾风芽芽;独立生命,倒地自动恢复 协同狩猎:7 秒冷却,定向命令伙伴突袭,无目标时回防 本体飞弹伤害 −45%,需照顾伙伴状态

暴食近战循环:开局即可自动发动 110° 扇形咬击(身体边缘外延 48px,前摇 0.12 秒),造成 1.35 倍攻击伤害;咬击将血肉目标打入吞噬线或直接咬杀时衔接吞噬,攻击成长不再损失捕食收益。正常吞噬基础每 5 次获得 1 猎食点,近战普攻命中首领基础每 10 次获得 1 点,最多储存 2 点,满仓冻结进度。空格 暴食重咬消耗 1 点,朝最近的近处目标发动 140° 扇形攻击(外延 68px,前摇 0.16 秒),造成 4 倍攻击伤害,对首领为 6 倍;伤害随攻击、等级和捕食成长,不再按首领最大生命百分比计算。无近处目标时不扣点,起手后目标可在前摇内躲开;首领不可吞噬,护盾优先吸收伤害,魔像和怨灵只能击杀。

近战生存与成长:吞噬或重咬命中首领获得一层抵挡 1 点伤害的护甲,基础持续 1.6 秒,每 2.5 秒最多获得一次。吞噬触发的基因/牧师回血共用 4 秒间隔。深渊胃囊提高吞噬线和充能效率,不降低攻击;硬化甲壳延长护甲并增加生命;腐蚀重碾三级提高重咬伤害 15/30/45%、范围 10/20/30%;胃酸迸发改为 100/110px 近身酸爆,每 0.4 秒最多触发一次;荒古吞噬领主强化咬击外延范围与伤害,并让重咬吞噬命中后半血以下的血肉目标。空格技能及其酸爆引发的自动吞噬均不返充,近战普攻对首领的真实命中才产生首领充能。主专精仍在 Lv.5 自动觉醒。

元素权限:只有 🔮 元素史莱姆与 🫧 原生黏液可以使用元素系统——吸收核心、累积元素等级、触发融合反应。其余四个角色(暴食 / 弹射 / 暗影 / 共生)不会遇到元素核心(精英、Boss、吞噬、地图事件四条产出路径都不生成),E 不进行元素交互,HUD 也不显示元素圆点、吸收提示与副反应槽里程碑。

技能池随权限对齐:候选池不会摆出当前角色拿不到的效果——暴食主树(拿攻击换吞噬线)对无吞噬能力的角色是纯负面,因此 origin 的 Lv.1~4 与 Lv.5 都不出现暴食主树/主专精(origin 保留弹射 / 元素 / 暗影三系的自由构筑);Lv.9 共鸣里「消化代谢」(需吞噬)与「元素共鸣体」(需元素)只在对应权限下进入候选,里程碑面板的共鸣预览也收窄到实际拿得到的那几条。

原生黏液(origin) 保留「自由构筑」:不绑定技能树、不参与吞噬独占、空格释放 8 秒冷却的黏液震荡(120px、1.5 倍攻击、击退普通敌人),但 Lv.1~4 三系技能全开放,Lv.5 仍由玩家三选一决定主专精——并保留完整的元素权限(Lv.5 若选择元素树,那棵树才是活的)。

黑市永久基因是档案级成长,不按当前角色限制购买——玩家可以为还没使用的角色提前投资;只标注适用范围(如「捕食原核」主要适用于暴食史莱姆、「共鸣基因 / 共鸣原核」适用于元素史莱姆与原生黏液)。

早期元素入口:第 2 波(约 30 秒)会在元素史莱姆与原生黏液附近点名放出一只保底精英,它不享受 3× 精英体量但会主动逼近,击杀后按既有规则掉落第一颗元素核心——让元素/融合这条主玩法在第 35~45 秒就能开始,而不是等到第 3 波以后。该保底每局只触发一次,第 3 波之后的精英概率与核心掉率完全不受影响。

突围(Runner):A/D 或左右方向键切换三条车道,Space 释放暴走狂热;普通换道避险,保留完美闪避奖励;沿途拾取武器核心并融合元素武器。提供极速闪击 / 马拉松 / 无尽三种突围类型与独立结算。

塔防(Tower Defense):使用鼠标或触控点击建造位。十种建筑随战役关卡进度解锁(第 1 / 1 / 3 / 7 / 9 / 12 / 17 / 26 / 46 / 61 关),均可升至 Lv.4,Lv.3 二选一专精、共 20 条路线;选中已有炮塔后可切换最前方、最后方、生命高低、支援优先或首领优先等索敌策略。敌军扩展到 16 类,含菌甲再生者、霜原跃袭者、晶盾护卫、熔血狂战士、裂殖母体、暮影潜行者与圣城压制机甲等新兵种,HUD 会预告下一波编成和潜在漏怪伤害,悬停敌人可查看机制特质。战役覆盖五大主题巢域共 99 关,其中 15 关由迷你 Boss 领队;本版本已移除永久天赋树与局内突变抽卡。

塔防热键:1–6 选择塔型、Q 取消选择;倍速通过界面按钮切换(1→2→3 循环)、E 提前召唤下一波(换取额外养分)、T / G 触发两处陷阱。世界地图可进入无尽试炼:沿用已解锁关卡的地图与机关,迎战无限爬坡波次并冲击最高波次纪录。

运行

需要 Node.js 22.16.0+。

npm ci
npm run dev     # 开发(Vite HMR,默认 http://localhost:3013)
npm test        # 全量逻辑与无头引擎回归
npm run build   # 生产构建
npm run preview # 本地预览 dist
npm start       # 构建并启动游戏服务(账号、记录和排行榜)
npm run serve   # 运行已构建的游戏服务

账号、游戏记录与排行榜

游玩需要注册或登录账号;登录状态默认保留七天。首页的「排行榜」对所有访客开放,按玩法、模式和难度分别排名,每个账号展示一条最佳成绩,可分页查看全部玩家和定位自己的排名。塔防战役榜比较已通关的最高关卡与得分,无尽试炼榜比较波次与得分。

主战场成长档案、突围三种模式的成绩、塔防关卡星级与无尽纪录均保存在服务器。首页的「我的记录」可分页查看三种玩法的行动历史。旧账号与原有主战场三槽档案继续可用,档案管理收进账号面板;塔防与突围记录属于账号,不随主战场档案切换或删除。

结算先写入当前浏览器的账号待同步队列,再提交服务器。断网时会显示「等待同步」,联网、重新登录或点击重试后补交;服务器以行动票据幂等结算,避免重复奖励。待同步内容按账号隔离,在同步完成前暂停新开局。无法自动恢复的结算会显示具体错误,可重试或明确确认放弃;浏览器禁止暂存时会提示保持页面打开。补交窗口为三十天。清除浏览器站点数据会移除尚未上传的结算,不影响已保存在服务器的记录。

旧本机存档不会自动覆盖账号记录。在账号面板展开「迁移以前的本机进度」并确认后,可替换当前主战场成长档案、合并塔防最高进度;导入的旧成绩不进入公共榜单。

启动游戏服务

npm start       # 构建并启动,默认端口 8013
npm run serve   # 已有 dist 时直接启动

服务器数据默认保存在项目根目录 data/,可通过 SLIME_DATA_DIR 调整。换设备访问同一个游戏服务,登录后即可恢复记录。局域网只是其中一种部署方式,界面无需切换局域网模式;npm run lan / npm run lan:serve 保留为兼容别名。

开发时,npm run dev 启动前端,另一个终端运行 npm run serve 提供账号接口;门户系统仍会自动启动两者。部署到公网时应让所有玩家访问同一后端,并在反向代理配置 HTTPS。

Windows 防火墙:首次启动会弹出授权框,请选择"允许访问"。若误点取消,其他设备将无法连接,可在管理员终端执行 netsh advfirewall firewall add rule name="SlimeRampage-LAN" dir=in action=allow protocol=TCP localport=8013 放行(端口以 SLIME_PORT 为准)。

门户系统集成

本仓库已登记到 Multi-App Portal System(应用卡片 Slime Rampage,技术栈 Vue.js,前端 3013 / 后端 8013)。 门户只在检测到约定的前后端子目录名时才会"前后端一起启动",因此下面两个文件是结构契约,请勿删除或移动:

  • frontend/package.json — 前端锚点:dev 脚本运行 server/frontend.mjs,在 3013 提供打包资源并代理 /api 到 8013,避免游玩时加载整套开发模块。资源缺失或源码更新时自动构建,期间显示准备状态;已有最新构建时立即复用。真正的源码仍在根目录(index.html、src/)。根目录 npm run dev 继续保留 Vite 热更新供开发使用。
  • server/package.json — 后端锚点:start 脚本为 node index.mjs,依赖复用根 node_modules,数据仍写入根 data/。

门户的启动流程:先起后端 npm start(8013,工作目录 server/),再起前端 npm run dev(3013,工作目录 frontend/);停止时两者一起结束。

端口对应关系:前端端口由门户注入的 VITE_PORT 决定(默认 3013);后端主机只认 SLIME_PORT,其默认值 8013 与门户登记的后端端口一致。若在门户里改动后端端口,需要同步修改 server/index.mjs 的默认值。

门户每次启动还会自动生成下列文件,均非源码、均已被 .gitignore 忽略、可随时删除(下次启动会重新生成):

  • 根目录 .env、.env.local、.env.development、.env.production——VITE_PORT / PORT / VITE_API_BASE_URL 等端口变量。
  • frontend/.env、frontend/.env.local、frontend/.env.development——前端子项目端口变量。
  • server/.env、server/.env.local——后端端口、FRONTEND_URL 与 CORS_ORIGINS。
  • frontend/vite.config.proxy.ts——门户给全栈前端生成的代理配置;本仓库的 Vite 根目录是仓库根目录,实际生效的是根 vite.config.js,此文件不会被加载。

上述 .env 对本项目没有实际影响:src/ 不读取 import.meta.env,server/index.mjs 也不读取 .env(端口只认 SLIME_PORT 与 VITE_PORT 环境变量)。

发布

  • 推送到 main 后,CI 工作流会执行干净安装、全量测试、生产构建、门户启动契约测试,并保存 dist 构建产物。
  • 推送 v* 标签会同时触发两条工作流:Deploy GitHub Pages 重新验证并部署站点,Publish Release 创建 GitHub Release 并把 CHANGELOG.md 对应版本小节作为发布说明(若 Release 已存在则更新说明并保持 Latest 标记)。两者也可在 Actions 页面手动运行。
  • 发版流程:先把 package.json 版本号与 CHANGELOG.md 新版本小节写好并推送到 main,再打标签推送(git tag -a v0.6.0 -m "..." && git push origin v0.6.0)。Release 说明完全取自 CHANGELOG,无需手工维护第二份文案;Publish Release 会在提取不到对应小节时失败,避免发出空说明的 Release。
  • GitHub Pages 只是展示站:静态构建没有后端,而游玩需要账号服务,因此线上 Pages 页面只能阅读「关于游戏」与更新日志,登录、开局和排行榜不可用;完整的线上部署需要让所有玩家访问同一后端并配置 HTTPS。门户启动契约由 npm run test:startup 在构建之后验证(已接入 CI 与 Deploy GitHub Pages 工作流)。
  • 首次部署前,需要在仓库 Settings → Pages 中把 Source 设置为 GitHub Actions。
  • 正式打标签前仍需在桌面 Chrome / Edge 各完成一局人工试玩,检查音频、键盘、暂停和存档。

目录结构与职责边界

src/
├── main.js                    # Vue 入口
├── App.vue                    # 顶层布局:Canvas 游戏层 + HUD + 升级面板桥接
├── styles/
│   └── main.css               # 页面骨架样式(全屏、无滚动)
├── components/
│   ├── GameCanvas.vue         # 【唯一桥梁】Canvas 挂载 + 引擎创建/销毁
│   ├── StartScreen.vue        # 开场剧情序章(点击翻页 → 进入地下城 / 黑市)
│   ├── BlackMarket.vue        # 地下城黑市:掉落物 → 永久基因升级
│   ├── HudOverlay.vue         # 战斗 HUD、目标、Boss 状态与快捷按钮
│   ├── StrainSelect.vue       # 开局血统选择页(六血统共用程序化美术)
│   ├── SlimePortrait.vue      # 血统肖像
│   ├── RunnerHudOverlay.vue   # 突围 HUD:车道、推进距离、狂热与武器状态
│   ├── RunnerResultModal.vue  # 突围独立结算面板
│   ├── TowerDefenseHudOverlay.vue # 塔防波次预览、炮塔属性与专精操作
│   ├── TowerDefenseWorldMapModal.vue # 塔防战役大地图(5 巢域 99 关)
│   ├── TowerDefenseBuildMenu.vue  # 建造菜单:按本关已开放建筑收敛
│   ├── TowerDefenseUpgradePanel.vue # 升级、专精与索敌策略面板
│   ├── TowerDefensePortrait.vue   # 塔与专精肖像
│   ├── TowerDefenseResultModal.vue # 塔防结算统计
│   ├── LevelUpModal.vue       # 升级面板:3 张技能卡片(纯展示 + emit)
│   ├── PauseModal.vue         # 手动暂停面板(继续 / 重新开始)
│   ├── GameOverModal.vue      # 结算面板:统计 + 战利品 + 再来一局/去黑市
│   ├── RunIntroOverlay.vue    # 战前简报
│   ├── ExpeditionRewardModal.vue # 远征关间补给
│   ├── FusionConfirmModal.vue # 首次元素融合确认
│   └── ReactionSwapModal.vue  # 副反应槽替换
└── game/                      # 【游戏层】纯 JS,零 Vue 依赖
    ├── GameEngine.js          # 引擎单例:RAF 主循环 + 升级/结束暂停恢复 + 整局重置 + 基因
    ├── InputManager.js        # 键盘输入(WASD 移动 / Space 主动技能 / E 吸收核心)
    ├── EnemyManager.js        # 敌人管理器:波次驱动 + 边缘生成 + 空间哈希群集分离 + 弹幕
    ├── WeaponSystem.js        # 武器系统:自动索敌 + 多弹齐射 + 特效/元素流派/掉落物结算
    ├── GemManager.js          # 宝石管理器:经验自动磁吸 + 元素核心主动吸收 + 拾取结算
    ├── SkillPool.js           # 技能配置表(12 技能,生物变异语言 + 基因标签)+ 随机抽取
    ├── ElementSystem.js       # 元素系统:标签驱动反应表(组合 → 武器行为/形态/命名)
    ├── GenePool.js            # 基因配置表(5 永久被动)+ applyGenes(黑市局外成长)
    ├── SaveManager.js         # localStorage 存档:掉落物 + 基因等级 + 最高纪录 + 分数榜 + 音效设置
    ├── Species.js             # 物种命名与生态档案(元素/基因 → 结算档案)
    ├── SoundManager.js        # 音效:Web Audio 程序化合成(零音频文件)+ 程序化 BGM + 静音总线
    ├── MapDecor.js            # 地图叙事层:生态装饰、章节地标、巢穴与战场遗迹
    ├── MapFeatureManager.js   # 地图玩法层:巢心守卫、功能地形、可破坏拒马
    ├── gameplay/               # 玩法层:GameplayController 契约 + 按玩法拆分的实现
    │   ├── GameplayController.js # 玩法基类:update/render/HUD 快照/会话生命周期
    │   ├── GameplayFactory.js    # gameplay id → 实例(arena / runner / tower-defense)
    │   ├── ArenaGameplay.js      # 主战场:开放地图割草(默认管线)
    │   ├── RunnerGameplay.js     # 突围:三线推进射击会话
    │   ├── runner/               # RunnerRules 配置 / RunnerDirector 会话 / RunnerRenderer
    │   └── tower-defense/        # 塔防规则、战役关卡、导演、渲染与存档
    ├── core/
    │   └── Entity.js          # 实体基类契约(attach / update / render / destroy)
    ├── entities/
    │   ├── Enemy.js           # 敌人:骑士/法师/弓手三职业(近战/远程弹幕 + 状态 + 精英 + 可吞噬)
    │   ├── Boss.js            # Boss:三王变体(狂暴/连发召唤/散射 + 血条)
    │   ├── EnemyBullet.js     # 敌人弹幕:法师火球 / 弓手箭矢
    │   ├── Projectile.js      # 魔法飞弹:追踪(含追踪强度)+ 多层光晕
    │   ├── Player.js          # 玩家:Q 弹史莱姆 + 元素异变本体 + 软体反馈
    │   └── Gem.js             # 经验宝石(菱形分级)/ 元素核心(四色图标)
    └── effects/
        ├── Particle.js        # 击杀粒子:随机炸裂 + 阻尼衰减
        └── FloatingText.js    # 吞噬提示文本:上浮 + 淡出

架构红线:Vue UI 层 ⇆ Canvas 游戏层严格解耦

方向 通道 频率
UI → 引擎 显式方法调用(start / stop / pause / resume / destroy) 事件驱动
引擎 → UI onStats 回调(引擎内部节流到 ~2Hz);onLevelUp 升级事件 低频 / 事件驱动

禁止事项(性能红线):

  1. 每帧坐标、碰撞、渲染数据严禁进入 Vue 响应式系统(ref / reactive / watch)——GameEngine 与全部实体为原生 JS 对象,主循环 update(dt) → render() 不触碰任何响应式依赖。
  2. Vue 组件中引擎句柄用普通变量持有(见 GameCanvas.vue),不用 ref 包装; 只有 HUD 显示用的低频统计(FPS / 坐标)经节流回调进入响应式系统。
  3. 渲染热路径零分配:渐变对象构建一次复用、输入向量缓存复用、 deltaTime 首帧归零、后台恢复上限 MAX_DT = 0.05s 防物理爆炸。

阶段路线图

  • 阶段一 · MVP:主循环(RAF + deltaTime)、玩家 8 向移动、程序化史莱姆渲染
  • 阶段二 · 敌人群集与追逐 AI:屏幕边缘定时生成(每秒 2~5 个)、atan2 追逐、 空间哈希圆-圆分离(数百敌人保持 60FPS)、死亡回收
  • 阶段三 · 自动射击与伤害结算:最近敌人索敌(距离平方单趟扫描)、 锁定追踪魔法飞弹(多层光晕零 shadowBlur)、圆碰撞递进粗筛、受击白闪 + 击杀粒子
  • 阶段四 · 经验值与升级面板:击杀直接得经验、升级暂停主循环(pause/resume)、 6 技能池不重复抽取 3 选 1、Vue 技能卡片面板(事件驱动桥接,无 Proxy 劫持)
  • 阶段五 · 宝石掉落与磁力吸附:敌人死亡掉落菱形水晶(颜色随经验分级)、 拾取半径磁吸(加速度模型)、分帧检测 + 视口剔除 + swap-pop(数千宝石优化)
  • 阶段六 · 波次、玩家受击与音效:时间驱动波次(属性递增)、敌人贴脸攻击、 玩家生命/无敌帧/死亡结算、GameOver 面板与整局重置、Web Audio 程序化音效
  • 阶段七 · 剧情、职业与元素融合:开场序章(引擎延迟启动)、骑士/法师/弓手三职业 (远程弹幕)、四元素核心吸收(12% 掉落)、两两组合流派(爆炸酸液/全屏麻痹/爆裂/腐蚀)
  • 阶段八 · 黑市局外成长:击杀掉落勇者物品(按职业计数)、结算自动入账 localStorage、 5 种永久基因(分裂/巨大化/再生/迅捷/经验)可叠加局内技能
  • 阶段九 · Boss 战与精英怪:每 5 波三王登场(骑士王狂暴/大法师连发召唤/弓王散射)、 Boss 血条与大爆掉落、10% 精英怪(金色光环)、Boss 登场/阵亡音效与 HUD 警告
  • 阶段十 · 进化可视化(评审改造):残血吞噬系统(吸入溶解 + 职业素材 + 浮动文本)、 史莱姆本体元素异变(火泡/电弧/毒滴/水纹/组合内核)、软体反馈(膨胀/波纹/急停抖动/酸液拖尾)、 物种命名与生态档案(威胁等级)、波次叙事(勇者实习团 → 世界级灾害)
  • 阶段十一 · Vertical Slice 深化(评审第二轮):标签驱动反应表(ElementSystem 取代组合硬编码)、 元素等级化积累(💧2 ⚡3)+ 进化事件全屏演出、双 Build 行为差异(雷水连锁导电 / 火毒酸液池引爆)、 升级卡生物变异语言 + 基因标签、物种档案代表行为(最长连锁/引爆次数)
  • 阶段十二 · 分数榜与音效增强:无尽模式分数榜(SaveManager.pushScore Top 8 入榜 + 结算面板「勇者通缉榜」+ 主菜单 Top 5 迷你榜)、音效增强(master 音量总线 + 静音开关持久化、 程序化 BGM 循环、UI/购买/技能确认/新纪录/元素升级音、连杀音高爬升)、 试玩打磨(修复 DOT 致死漏结算、黑市→重开「亡灵挂机」软锁、重开视觉状态残留)、 升级面板数值透明化(等级角标 + 实际生效值「当前 → 升级后」,含基因/等级加成)、 等级攻击力成长(每级自动 ×1.08,与技能叠加独立相乘,HUD 显示实际攻击力)
  • 阶段十三 · 数值化与稳定性(评审第三轮):元素等级数值化(单元素附魔:每级叠加 命中状态概率;反应强度随组合最低等级缩放:连锁跳数/麻痹率/酸液池半径与跳伤/暴击加成/DOT 倍率)、 吞噬中敌人免伤 + 击杀结算唯一汇聚点去重(防奖励双发)、暂停锁失效修复(进化演出期间手动暂停 不再被自动恢复顶掉)、死亡帧残差结算防护(升级面板/击杀/掉落快照污染)、BGM 接续播放 (升级面板开合不再从头重播)、飞弹碰撞空间哈希(复用分离网格)+ 敌人渲染视口剔除 + 浮动文本零 shadowBlur + 元素反应缓存零分配(_mutation/hasReaction 热路径)
  • 阶段十三 · 玩法深挖(评审第三轮追加):6/6 两两组合反应补齐(火+水=蒸汽迷雾减速云雾、 毒+雷=毒雷风暴全屏毒雷)、精英词缀系统(迅捷/护盾/自爆/召唤,虚线环标识 + 死亡特效, 吞噬是克制自爆/召唤的手段)、Boss 召唤小兵波次成长、玩家冲刺主动技能(Space/Shift, 0.25s 无敌帧 + 残影)、音效主总线动态压缩防削波、相机运动方向预判 70px、 分离算法世界边界夹取、经验宝石同位置自动合并(空间哈希分桶,缓解长局膨胀)
  • 阶段十四 · 元素成长调优(试玩反馈):元素 DOT 跳伤随武器伤害成长(不再固定 1 点, 等级/技能/暴击同步放大元素收益)、DOT 跳伤彩色浮动数字可视化(橙火/绿毒)、 元素核心掉率上调(精英必掉/法师 40%/普通 15%)、反应阈值提前(酸液/毒雷/爆裂/腐蚀 低等级即可见成长)、附魔概率上调(火10%/水8%/毒10%/雷7%)、伤害数字浮点尾数修复
  • 阶段十五 · 视觉设计(设计层 + 修饰层,纯程序化):设计层——玩家 11 种元素形态剪影 差异化(火焰尖/水袋/毒泡/雷刺/微波/放射爆裂/雾霭不规则等,剪影即身份)、敌人体型即职业 (骑士重装宽厚带肩甲/法师悬浮瘦长/弓手轻装带披风)、精英词缀装备化(护盾弧/发光自爆核心/ 残影速度线/漂浮紫符石)、濒死白旗投降姿态(与吞噬玩法呼应)、第 8 波起进阶梯队造型 (红缨/金带/羽饰,波次叙事在造型上可见);修饰层——随机眨眼、元素氛围粒子、柔光描边、 软阴影、吞噬张口、走路弹跳+出生弹入、三职业攻击动画、头顶状态图标、精英光环脉动、 Boss 气场光环、屏幕震动系统、击杀扩散环、宝石星光闪烁
  • 阶段十五 · 融合进化可读性(试玩反馈):修复多反应同帧激活导致的暂停锁叠加软锁 (进化演出合并为一次)、进化演出携带效果说明文案、进化瞬间场上反馈(粒子爆发+扩散环+微震)、 元素核心吸收头顶文本(💧 水流 +1)、HUD 常驻反应徽章(悬停看效果)、元素圆点悬停显示 组合配方、飞弹辉光随反应/元素变色(武器行为可视化)、主形态锁定(首个融合的反应 = 物种身份,外形/飞弹色/物种名稳定;后续反应为副反应叠加生效,HUD ★ 标识 + 结算档案列出)
  • 阶段十六 · 融合经济重设计(试玩反馈):元素核心回归「狩猎精英/Boss」战利品定位 (击杀仅精英必掉 + Boss 大爆 3 个,吞噬路径保留为技巧型来源)、主形态 1 个(锁定物种身份)、 副反应槽位经济(默认 2 个,黑市「共鸣基因」每级 +1 槽)、槽满触发替换面板 (选择替换现有副反应或放弃——稀缺掉落 + 有限槽位 = 硬决策)、HUD 副反应计数 N/M、 结算档案仅列已入槽副反应、元素核心吃前确认(首颗元素:预览全部可融合方向; 首次融合:主形态锁定警告——「永久改变身体」的时刻各确认一次;所有核心均需靠近按 E 主动吸收)
  • 地图事件与遭遇导演(本轮优化):大地图加入讨伐队猎营、勇者传送信标、污染黏液池三类 风险目标(场内地标 + HUD 方向/距离/期限/奖励指引),完成事件获得元素核心、王级秘籍、经验或恢复; 每波按集结/围攻/冲刺三段节拍调节增援(波末压力最大),并以场上数量和生命状态做有限压力保护;结算分数拆分为 击杀、吞噬、精英、Boss、地图事件和波次推进,移除存活秒数与波次的重复计分并兼容迁移旧榜单
  • 地图叙事与功能地形(本轮优化):远征从史莱姆巢界的巢心苏醒,章节切换时按剧情迁移出生点; 第四章改为巢心守卫战,敌军分路进攻且巢心拥有独立耐久与失败条件;各章加入猎营、城门缺口、王座、 圣坛和封印碑等强识别地标,地图事件结束后保留营火、残池等战斗痕迹;新增加速黏液脉、减速泥地、 可由冲刺击破的拒马,并为地图切换、巢心受击/守住和障碍破坏补充程序化音效反馈
  • 永久基因路线化(本轮优化):黑市重组为捕食体、疾射体、共鸣体三条成长路线,阶段节点带 前置投入;新增捕食原核、动能原核、共鸣原核三枚互斥终点,分别强化吞噬恢复与经验、冲刺与 全弹体穿透、元素反应与副反应容量;旧存档已购节点继续生效,购买与应用层共同校验终点互斥
  • 可玩性与交互 P0 修复(评审第四轮):键盘输入挂起机制(引擎主循环停止时 InputManager 不再劫持 Space/E/方向键——面板按钮键盘可达 + 消除「幽灵冲刺/吸核」)、 暂停守卫统一为 isModalOpen(修复副反应/首融面板可叠加暂停锁)、黑市支持 Esc 关闭; 操作价值重塑(受击无敌帧 1.0s→0.5s 站撸不再最优、Boss 箭雨 0.22rad 弹缝远距离可钻)、 机枪×元素协同打通(分裂弹按 50% 继承母弹暴击/附魔概率)、暴食冲撞附带元素附魔 + 随等级成长 + 统一击杀结算(修复冲撞击杀漏掉宝石/计数)、 开局配置收敛为难度与血统,角色血统在 Lv.5 自动觉醒对应主专精,原生黏液保留 Lv.5 自由四选一, 不再预选或附赠 T1, 保留自由探索期的临场构筑空间;验证脚本 verify-changes.mjs)
  • 可玩性与性能 P1 批次(评审第四轮续):resize 世界背景防抖(高频拖动合并为 一次重建,首建保持同步)、冲刺 CD / Boss 施法条独立 10Hz 冷却通道(HUD 连续条 不再随 2Hz 快照跳变)、模态框 ARIA 对话框语义 + 静音按钮 aria-label、删除 fps 死字段; 波末「喘息」改为「冲刺」(每波以最高压力收尾,消除清场后的 4~5 秒死时间)、 前期经验阈值 20→28(升级打断减少 40%,后期曲线不变)、通用池新增「肾上腺素」 (受击转 3 秒移速爆发,配合无敌帧缩短的走位玩法)、Capstone 解锁门槛后移至 Lv.14 / 第 10 波(后半局保留质变点)、技能池耗尽的升级转化为治愈 + 浮字反馈 (验证脚本 verify-p1.mjs)
  • 前端工程与黑市平衡 P2 批次(评审第四轮续二):App.vue 1533→439 行——HUD 整体拆出 HudOverlay.vue(模板/派生计算/样式随走,含进度条样式合并与小字号对比度提升)、 stats 改 shallowRef + 引擎导出 createDefaultStats(坐标扁平化后 UI 直接整树赋值, 消除 40 字段手工双写;verify-p2 以契约测试锁定形状)、战利品六类求和抽 sumDrops() 统一结算与展示口径、全部面板 Transition 淡入淡出;黑市捕食原核新增独有滚雪球机制 (每次吞噬攻击永久 +3%、封顶 +100%,飞弹/冲撞/HUD 攻击力同步成长)—— 捕食体路线从纯数值变为机制驱动
  • 独立塔防行动(内容优化):十波组合编队、八类敌军与护甲/护盾/支援/分裂/Boss 二阶段机制; 三种基础塔采用四级成长并提供六个专精分支、六种索敌策略;HUD 显示敌军预告、漏怪风险、DPS 与实际效果, 专项 smoke 和确定性长局模拟覆盖机制与通关曲线
  • 阶段十七:移动端适配、无尽模式试玩打磨(平衡性调优)

About

一个吸血鬼幸存者类型的割草web游戏。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages