Skip to content
KUPworksPublic

About

An VS-like unofficial Kamitsubaki game developed with AI-Agents. 神椿二创平面游戏。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

99 Commits

Folders and files

Repository files navigation

神椿市浄化中。Kamitsubaki City Under Purification (K.U.P.)

非官方同人致敬作品 —— 基于 KAMITSUBAKI STUDIO「神椿市」世界观的吸血鬼幸存者 like 游戏。 灵感来自《神椿市建設中。》动画与《神椿市協奏中。》音游。与官方无任何关联。 当前版本以 js/config.js 的 KUP.CONFIG.VERSION 为准(v0.21 起派生(合并)武器——两把武器按中等几率合成一把、释放一个武器槽;v0.20.6 起第一体 Boss=官方名「笛卡尔」、〈観測〉改名〈走査〉、攻击预警跟随 Boss;v0.20.5 起敌袭统一警报 UI+射弹 Boss〈弾片〉;v0.20.4 起升级四选一;v0.20.2 起破维魔按体型=参数原型分类;v0.20 起武器/模组/模组族三层命名;v0.19 起数据层按域拆分)· 零依赖 · 零构建 · 纯 HTML5 Canvas。

⚠️ 本作目前是 DEMO(可玩原型)阶段。 核心循环已经能玩通,但内容、数值、存档格式都仍会变(存档 schema 已多次迁移)。 ⇒ 请把它当作能跑的样品,而不是完成品:功能会增删、平衡会重调、旧存档可能失效。 已实现/待实现清单见 DESIGN.md(§0 版本史、§6.8 下一步方向)。

![类型](https://img.shields.io/badge/genre-生存 roguelite-7a4dd8) ![引擎](https://img.shields.io/badge/engine-纯 HTML5 Canvas-4ee6ff) 依赖 许可

文档导航

我想要… 看
装起来玩、看懂玩法、想改点东西 本文件
知道已经做了什么、接下来要做什么 DESIGN.md
查世界观设定(考据、术语、出处) docs/lore/README.md

一、运行方式(部署)

零依赖、无构建。 两种方式:

# 方式 A:直接双击 index.html 即可游玩
#   (WebAudio 需要一次点击激活 —— 进游戏点「开始净化」即可)

# 方式 B:本地静态服务器(推荐)
python -m http.server 8080
# 浏览器打开 http://localhost:8080
  • 部署到静态托管(GitHub Pages / 任意 web 服务器):把仓库根目录整个上传即可,没有构建步骤、没有环境变量、没有后端。
  • 唯一要求:现代浏览器(用到 Canvas 2D、WebAudio、localStorage、ES2018+)。
  • 没有 localStorage 也能玩(会退化成内存档并在界面提示)。

二、怎么玩

一局 5 分钟,局与局之间构成元进度循环。

2.1 一局的时间轴

时间 事件
0:00 横幅「『Q』発生」(关卡=番街,章节名取自动画各话副标题;治安战没有章节名,不会出现「治安戦 · 治安戦」这类重复)
0:00–1:30 基本型/鸟型/人形杂兵混编涌来,发育、拾取「片段(フラグメント)」(经验)
1:30 / 2:30 / 3:30 破维魔(強化型) 出现,掉落回复 ♥
4:00 大テセラクター(Boss)接近(陸番街提前至 3:30)
5:00 Boss 暴走(移速 ×1.8,攻击更密)—— 暴走后击破同样是普通胜利(v0.15.2 起不再区分「惨胜」)

胜利:击破 Boss(画面显示「浄化完了」)。失败:生命归零。

破维魔的「体型」(v0.20.2)

破维魔按体型分成八形。体型只决定参数原型(快/慢/硬/大/转向灵),不是另一套画法—— 场上仍是同一套多边形故障体,靠颜色、边数、大小与速度区分(v0.20.1 的剪影绘制已按人类要求回退)。

体型 谁是这个体型 手感
球型 基本型、笛卡尔 基线,所有数值居中
鸟型 鸟型(新杂兵)、〈爆塵〉 快一点、脆一点
人形(杂兵) 人形・杂兵(新杂兵)、〈弾片〉(治安战) 慢一点、硬一点、更疼
鱼形 高速型、〈誘惑〉 最快、血最少、转向最灵
爬行类 巨躯型、〈再生〉 慢、硬、撞击疼
人形 強化型(精英)、〈緘黙〉 血厚、稳、压迫感强
虫型 〈走査〉 敏捷(目前只有 Boss)
植物形 〈枯死〉 最慢、最大、靠散播占场
  • 新增的鸟型与人形・杂兵只是把基本型的刷怪权重拆出来(70 : 15 : 15),总刷怪率不变,不会更难。
  • Boss 是"先选体型、再单独调参":体型给手感(鱼/虫/鸟更灵、植物/爬行更重),血量与伤害按关卡顺序单独写, 不继承同体型杂兵的数值。
  • 体型是设计分类,不是阵营:与魔女结盟的使魔(眷魔/ファミリア)是另一层,不会作为敌人出现。

不可解空間(v0.18)

Boss 出现时,有 35% 概率进入一处「不可解空間」——空间会把这一场 Boss 战的规则临时改写(横幅 + 顶部常驻「空间名 + 规则原文」;v0.20.5 起规则不再只靠横幅一闪而过):

空間 规则变化
過密空間 刷怪更密、敌人更脆、掉落更多
深霧空間 视野被浓雾吞没;拾取与经验提高
硬直空間 玩家移速下降;冷却缩短、伤害提高
静音空間 伤害提高,但浄化の歌被封印(充能条置灰)
豊穣空間 拾取与经验大增;敌人更快
高熱空間 双方伤害同时提高
錯乱空間 每 25 秒随机改写为另一条空间
  • 空間持续到这场 Boss 战结束(场上所有 Boss 都被击破),随后规则回归(横幅提示)。
  • 治安战多体 Boss 并存时不会叠加:同一时间只允许一处空间;触发体先被击破、但另一体还在时,空间不会提前退出(规则要等整场 Boss 战结束才回退)。
  • 治安战每体 Boss 出现时都会尝试掷骰;若当前已有空间(或正在延迟展开)则跳过——所以一处空间结束后,下一体 Boss 仍可能再触发。
  • 効果不是只作用于新刷的怪:进入/退出时,场上活着的敌人会按比例同步速度/伤害/血量。

2.2 操作

操作 按键 触屏/鼠标
移动 WASD / 方向键 按住画面(魔女朝指针移动)
冲刺(位移 + 0.4s 无敌帧) Shift HUD 的 » 按钮
角色大招(充能满 100 + 冷却结束;每个角色不同,见 §2.3) Space HUD 大招条(显示当前大招名与冷却)
切换瞄准模式 V HUD 瞄准按钮(◎ 自动/✛ 鼠标/➙ 移动)
升级四选一 1 / 2 / 3 / 4 点卡片
重掷(3 次/局,与「排除」共用) R 「⟳ 重掷」按钮
排除某张卡(本局不再出现;消耗 1 次重掷,该格作废、不补新卡) B 进排除模式后按 1/2/3/4 卡片右上角 ✕
暂停 / 静音 Esc / M HUD 按钮

攻击全自动 —— 你只需要走位。武器由「歌声」具象化,拾取片段升级。

2.3 成长

  • 升级:拾取片段累积经验 → 四选一(新武器 / 武器升级 / 被动强化 / 回复 / 觉醒)。

    • 四张卡走四桶保底(觉醒优先 → 武器/被动/道具各一 → 补足 → heal 兜底),位置随机;
    • 血线 <45% 时道具占 2 格且优先;
    • 「系谱之心」升级时最大生命 +25% 并回满;「魔女的休息」回复 40%;回复片段 ♥ 回复 30%。
  • 覚醒:初期武装满级后再次选中 → 觉醒演出,武器化为乐曲名进化形态(如「私論理 -theory-」)。

  • 派生(合并)卡(v0.21):手里同时有两把能配对的武器时,升级四选一里会按中等几率(约 45%)出现一张「派生」卡——不是每次都有。选中后两把武器合成一把、释放 1 个武器槽,等级取两把里较低的那把;合并武器强于其中任意一把、弱于两把叠加,而且不是两把效果的简单相加——每一把都是一件有自己机制的新武器。用掉的两把本局不会再回到卡池(有了魔法就不会再抽到私論理/食虫植物)。曲名取自 V.W.P《繁殖》里这两位角色真实存在的对唱曲:

    • 魔法 = 私論理(追踪)× 食虫植物(环绕)——一片追着玩家走的小范围音符雨:冷却很长(3.4–5.4 秒),但音符密集落下、单枚很痛;因为会跟着你跑,半径比固定雨区更小(88→140),是那种轻快又噼里啪啦砸下来的曲子(花譜×理芽)
    • 深淵 = 過去を喰らう(吞噬)× シリウスの心臓(光束)——加强版吞噬:范围更大的一片领域一直向内收缩,越收越紧、边缘持续掉血,收到底整片塌陷;没有光束(花譜×ヰ世界情緒)
    • 本懐 = 法螺話(击退)× 台風の子(重弹)——一枚蛇行的巨弹,沿途不断甩出风压环,风道跟着弹走(理芽×春猿火)
    • 古傷 = Terra(冲击环)× 白昼夢(空爆)——旧伤在四周同时裂开:数道圆心偏移的冲击环朝不同方向炸出去(春猿火×幸祜)
    • 刻印 = the last bullet(穿透枪)× ヰ世界の宝石譚(宝光)——不再是一枪一角,而是给敌人刻印:被刻印者受伤 +30%,印记到期或宿主被击破时爆裂(按期间累计伤害结算)并传染给旁边的敌人(幸祜×ヰ世界情緒)

    这一批先做 V.W.P 五人这 5 条做手感验证(花譜的第三武装「不可解」暂不参与);《繁殖》另外 15 首对应的是后续批次的配对。

  • 武器(v0.21:26 把 / 20 种行为):武器 id=歌与武装(数据)、模组 id=行为实现、模组族=大模组,三层互不重名(如武器 note=私論理,behavior 是模组 homing,属于大模组 projectile)。可招募角色的专属武器需先招募才会入池(v0.11);近战挥刀「斩音太刀」以扇形角度与刀长为参数,圆形波(テラ・ドロップ等)亦可配角度变成定向扇形冲击波——两者都在 js/data/weapon.js 的等级表里用 arc(度)/len(px)调节。弹道大模组 projectile 含 homing(追踪)、sniper(贯通)、machinegun(弹夹 mag+换弹 reload)、shotgun(总散布角 spread)、typhoon(巨大重弹);另外 devour(聚怪群伤)、chain(最近怪连锁)、summon(召唤幻影)各自成系;合奏系 duet 只服务派生(合并)武装。

  • 「范围」对所有武器都有效(v0.13.1):角色/形态/被动「電脳領域」带来的范围加成,会成比例放大每把武器的作用尺寸——环绕音球的球体体积与环绕半径、太刀刀长、冲击环与冲击波的半径、光束长度、音符与音枪的命中半径、投掷距离与滞留区半径、空爆与地雷的作用半径。哪些参数放大、哪些刻意不变(如光束宽度、音符飞行距离)全部写在 KUP.WEAPON_MODULES[*].area 里。

  • 环绕音球(食虫植物,v0.15.1):判定是球体本身碰到敌人(不是「玩家到球的那条线」),球体贴着玩家转(环绕半径 Lv1 46 → Lv5 54 → 覚醒 58)。转速按「半圈律」标定:普通破维魔走过球体直径的这段时间里,武器恰好转半圈,它会在接触窗口里吃到 2–3 次命中——所以能被打死(开局 10 血、4 分钟后 23 血都测得穿)。为了不吃亏,它的球体更大(11→19…24)、单发更痛(Lv5 17→22、覚醒 20→28),实测实战输出与上一版持平。

  • 音之地雷(v0.15.1):地上只画很小的一枚(显示缩放 0.32,面积约 1/10)+一圈淡虚线的触发圈;破维魔踏进触发圈(半径 = 爆炸半径 ×0.6)才起爆,爆炸按更大的击杀半径结算——起爆瞬间会推出向外扩散的圆(先到触发半径、再到击杀半径),把真实范围一次性"摊"给你看。

  • 記憶の卵(v0.17:局内「現象」卡):极低概率在升级四选一里出现,和普通卡一样占一格、固定第 4 张(番街一局最多出现一次;治安战在充能耗掉后可再次抽到)。选中=用这次升级换 1 次復活:生命归零时自动回 50% 生命、释放小范围冲击波(伤害+击退,半径 240)、并获得 2.5 秒无敌帧。不产出任何局外进度(旧版图鉴/復興率 +1% 已移除);胜利结算后不能再復活。

  • 角色大招(v0.14:每个角色都不同):击破充能满 100 → Space 释放 → 清零并进入冷却(各角色时长不同)。效果全部由 js/data/char.js 的 KUP.ULTIMATES 定义:

    角色 大招 效果
    森先化歩 双极谐振 双重反相冲击环横扫全场(伤害 ×3.2 / ×2.4),冲散全部敌袭
    谷置狸眼 静止帧 全场怪异冻结 3.2s(Boss 减免)+ 回血 15% + 冲散敌袭
    朝主派流(春猿火) 九龍噴火 朝瞄准方向喷 160° 扇形烈焰(×4.5,最高单发伤害),小火回血
    夜河世界 星海陷落 全场减速至 35% 持续 10 秒 + 留下 4 处星屑滞留区(控场型)
    輪廻此処 终结弹幕 向 12 个方向同时打出贯穿光束(各 ×1.6)
    天祢亜留 救済の聖歌 回复 40% 最大生命 + 3 秒无敌(支援型)
    地邑阿栖 終楽章・箭雨 16 方向放射贯穿箭雨(各 ×1.3)
  • 会心(暴击,v0.18.3/v0.18.4):所有玩家伤害都有机会「会心」,倍率与概率按角色不同,期望增伤都被压在 1.08~1.10(谁的数值都不白给),差别在「打得勤但单发小」还是「偶尔一发爆炸」:

    角色 会心率 会心倍率 期望增伤
    森先化歩 12% ×1.75 +9%
    谷置狸眼 18% ×1.55 +9.9%
    朝主派流 8% ×2.10 +8.8%
    夜河世界 15% ×1.65 +9.8%
    輪廻此処 22% ×1.45 +9.9%
    天祢亜留 10% ×1.80 +8%
    地邑阿栖 14% ×1.60 +8.4%
    • 会心率不常驻 HUD:初始值写在魔女介绍里(出击界面选中角色后显示「初始会心 12% · 会心伤害 ×1.75」),局内想看完整状态请按 Esc 暂停(见下)。
    • 会心伤害显示为金色「会心 N」;结算屏记「✦ 次数 · 最高单发」。
    • Boss 的会心倍率 ×0.85(Boss 血厚、一场打很久,避免"会心就是唯一解");会心率上限 60%、倍率上限 3.0。
    • 成长卡:「鋭音」会心率 +4%/级、「重音」会心伤害 +0.20/级——两张都只加一项,期望分别约 +3%/级 与 +2.4%/级,低于标准「力量 +12%」;互相放大但同受上限约束。
    • 特殊触发(v0.18.4 起暂时注释):v0.18.3 的七种按角色会心特效已整体停用,代码保留在 game.onCrit 里备后续重做。
  • 暂停界面(v0.18.4):Esc 暂停时显示本局当前完整状态——生命、护盾耐久/上限与当前减伤、回避率、会心率与会心伤害、等级、所持武器(含等级/覚醒)、是否持有記憶の卵。

  • 瞄准规则(v0.14):投掷型(残留音块)会分别投向最近的两个敌人(每个音块各自追向自己那个目标);激光双光束分射最近的两个敌人,只有一个敌人时前后对穿;射弹类(追唱之矢/音枪)的夹角变小到约 5°,能拿到不同目标时各打一个。

  • 护盾(v0.20.3:耐久与保护效率分开,耐久 > 0 就一直减伤):护盾不吸收"血量",而是按受击类型给你减伤——贴靠最高 95%、音波 85%、毒区 75%、轰炸 70%、光束 50%。

    • 耐久:「防音护盾」每级 +20 耐久(20/40/60/80/100),挡下的伤害会消耗耐久;只要耐久 > 0 就一直有减伤,耐久打空才暂时失去减伤。
    • 保护效率:1~4 级一律 88(贴靠 89%,相当于原来的第四级),第 5 级才升到 100(贴靠 95%)——等级先加"能扛多久",满级再加"挡得多好"。
    • 恢复:脱战 3 秒后,在 1.5 秒内自动回满(期间再受伤则重新计时)。HUD 显示 盾 当前/上限 · 近身减伤 %,残盾时整行变暗。
    • 防音の符:+60 耐久、并额外 +12 保护效率(封顶 100;没有被动护盾时也能单独挡)。
    • 唯一规则:只要耐久 > 0,任何伤害类型都照常减伤,耐久归零才失去(v0.20.3 起删除了"挡一次后失效""被光束/轰炸打穿后失灵"两个窗口)。

2.4 局内道具(七种「符」,可重复选,不占被动槽)

道具 效果
防音の符 30 秒内 +60 耐久、+12 保护效率(不是回血;没有被动护盾时也能单独挡)
無傷の符 15 秒内 MISS(完全回避)率 +25%
治癒の符 立即回复 45% 最大生命
余韵の符 20 秒内每秒回复 4 生命
磁石の符(v0.11) 8 秒内全场片段被吸向魔女(回复 ♥ 同样被吸引;可叠加续时)
凍結の符(v0.13) 全场怪异 2.6 秒僵直(冷冻):不动、不攻击、无接触伤害(Boss 减免 50%、精英 75%)
鈍足の符(v0.13) 全场怪异 8 秒减速至 50%(与滞留音场减速叠加,取最强)

状态异常机制(v0.13):敌人有僵直(冷冻)与减速两种状态—— 冷冻=完全停止(含 Boss 的行动计时器一起冻结),减速=速度乘倍率(取最强来源、时间取最长)。 两个状态都会在敌人身上显示(冰晶覆盖/蓝色光环),施加入口为 game.applyFreeze / game.applySlow。

MISS 是全局机制:任何敌对伤害(近身、音波环、光束、毒区、轰炸)都会先判定回避,成功则显示 MISS 且完全不掉血(上限 85%)。

片段的掉落配额与存活期(v0.18.1):击杀掉落按空间格配额——每 240px 方格最多 160 个, 同一格满了之后不再生成新片段,而是把经验合并进该格已有的片段(优先并进经验片段, 不会因为场上恰好有回复 ♥ 就吞掉经验)。片段 5 分钟内没被拾取会直接消失(不结算经验)。 全局另有 480 的兜底上限,防止长期不捡导致实体堆积。参数在 js/config.js: GEM_CELL / GEM_CELL_CAP / GEM_LIFE / MAX_GEMS。

2.5 躲避敌方攻击

所有敌袭都有预警期,预警期间只示警、不结算伤害:

Boss 攻击 预警
笛卡尔 音波环 + 召唤 0.5s
〈緘黙〉 冲锋 + 沿途滞留带 0.45s
〈誘惑〉 三段音波环(错开成"缝隙") 0.42 / 0.72 / 1.02s
〈枯死〉 毒区(周期伤害) 0.9s
〈走査〉 指向玩家的光束(前摇 0.6s 内只慢速微调,约 0.35 rad/s;两发间有 ≥1.0s 后摇;暴走时双光束夹角约 29°) 0.6s
〈爆塵〉 轰炸压在玩家附近(含预判点)+ 视野遮蔽 0.95–1.15s
〈再生〉 阶段1 音波环/阶段2 轰炸 + 精英 0.5s / 1.05s
〈弾片〉(治安战第 8 体,v0.20.5) 射弹:5 发扇形齐射(暴走 7 发)+ 单发重弹;弹丸有飞行时间、会被楼体挡住 0.55s / 0.8s

所有 Boss 攻击共用同一套「警报」UI(v0.20.5):近黑底 + 黄色斜纹 + 红色虚线硬边 + 白色「!」+ 收缩倒计时。 颜色不随 Boss 变——看到红色斜纹和「!」就是"这里会伤到你",与玩家武器的青/金柔光完全区分开。 v0.20.6:Boss 被击退时,瞄准线会跟着 Boss 走(不再钉在原来的位置);轰炸/毒区仍留在地面坐标。 预警期间只示警、不结算伤害;有未生效敌袭贴近时,HUD 显示「⚠ 危険 —— 回避せよ」并加强屏幕红晕。


三、局外循环(復興率 · 现金 · 市民票 · 瓦利斯 · 招募)

3.1 復興率 —— 主进度

一局结束即结算,达阈值解锁下一番街:

来源 復興率
首次通关某番街 +12%
重复通关 +2%
败北 +1%

解锁阈值:壱番街 8% → 弐番街 20% → 参番街 32% → 肆番街 45% → 伍番街 58% → 陸番街 70%。

3.2 现金 —— 局外主货币(v0.16)

每局结束都会发钱(通关或败北、治安战都发):

来源 数量
净化数 每 10 体 +4 元
通关 / 败北 +60 / +12 元
首次通关某番街 额外 +40 元
番街深度 番街序号 ×8 元
  • 瓦利斯的一切消费都用现金(元):局外强化、支援物品解锁。
  • 市民票不再直接发放,而是由现金按小比例兑换:瓦利斯页头「兑换市民票(100 元 → 1 张)」按钮,一次换 1 张。
  • 一张市民票即可招募一名魔女候補/同伴(门槛仍是「通关某番街」或「復興率达到某值」)。

节奏参考:通关一局约 120–200 元(≈ 1.5–2 张票的兑换量);瓦利斯一级强化 32–88 元,支援物品 400 元。

3.3 瓦利斯(商店)—— VALIS 的饭店

主菜单 →「🍜 瓦利斯(商店)」。出处:REGENERATE 官方页「弐番街 歌と中華料理の店・瓦利欺」(VALIS 六人店员)【官方】。 表记约定:日语保留官方当て字「瓦利欺」,中文写作「瓦利斯」,英文用 VALIS。

① 局外强化(小幅永久强化,共 10 项,价格随等级递增)

品项 效果/级 上限
中华馒头 最大生命 +3% 5
糖醋里脊 全部伤害 +2% 5
杏仁豆腐 拾取范围 +6% 5
饺子 移动速度 +2% 5
绍兴酒 全部冷却 −2% 5
回转台 经验 +4% 5
瓦利斯招牌 开局大招充能 +15% 3
老主顾席位 开局等级 +1 3
薬膳スープ 每秒回血 +0.5 3
常連の勘 MISS(完全回避)率 +3% 3

后两项(薬膳スープ/常連の勘)是 v0.9 追加的生存向强化,与局内道具叠加:局外永久小幅,局内即时/限时。

② 培养・招募(招募用 1 张市民票;支援物品用现金)

对象 分类 门槛 费用
天祢 亜留 可操作角色(魔女候補) 通关参番街 1 张市民票
地邑 阿栖 可操作角色(魔女候補) 復興率 55% 1 张市民票
冰淇淋/巧克力/糖果/泡芙/炸年糕果子 支援物品(v0.13.3 起取代同伴层) 无(随时可买) 各 400 元

⚠️ 条件达成 ≠ 自动加入 —— 门槛满足后进入"可招募"状态,仍需1 张市民票(在页头用现金兑换)。 (支援物品没有门槛:现金够就能解锁,解锁后在出击界面选一件携带。)

3.4 瓦利斯的生存向强化(v0.9 追加)

薬膳スープ(每秒回血 +0.5/级)、常連の勘(MISS 率 +3%/级)—— 见 §3.3 ① 表末两行。 与局内道具叠加:局外永久小幅,局内即时/限时。


四、出击配置

出撃前依次选择:番街 → 角色 → 皮肤 → 支援物品。选择会记入当前槽位,并作为下次「再次净化」的默认配置。

4.1 魔女之子(主角五人)

★ 角色 ≠ 声优。游戏内一律显示角色名;括号里的「声 — ○○」是声之担当(现实侧艺人),只作 CAST 标注。

魔女之子 读音 声 居住番街 初期武装 第二武装 特性
森先 化歩 モリサキ カフ 花譜 零番街(下町) 私論理(私論理) 過去を喰らう/不可解 攻撃 ×1.15,均衡
谷置 狸眼 タニオキ リメ 理芽 壱番街(办公区) 食虫植物 法螺話 拾取 ×1.5、经验 ×1.25,脆皮
朝主 派流 アサヌシ ハル 春猿火 弐番街(欢乐街) テラ 台風の子 HP ×1.35、范围 ×1.2,重装
夜河 世界 ヨルカワ セカイ ヰ世界情緒 参番街(农园地区) シリウスの心臓 ヰ世界の宝石譚 冷却 ×0.85
輪廻 此処 リンネ ココ 幸祜 肆番街(科学研究特区) the last bullet 白昼夢 攻撃 ×1.25,连射稍迟

4.2 可招募角色(魔女候補)

角色 声 阵营/阶位 初期武装 第二武装 招募条件
天祢 亜留 存流 ヰ世界救済教団 · 教徒兼魔女候補 あおいゆめ さよなら 通关参番街
地邑 阿栖 明透 ヰ世界救済教団 · 教徒兼魔女候補(亜留的妹分) オレンジ 虚言 復興率 55%

阶位:魔女候補 → 魔女的资质者 → 魔女之子 → 覚醒。「魔女候補」低于魔女之子,故作为招募式追加可操作角色层。

武装解锁(v0.11):招募对应角色前,其专属武器(あおいゆめ/オレンジ)不会出现在升级卡池;招募后立即入池。魔女之子的初期武装不受此限(角色恒可选用)。

同模组、两种性格(v0.21.3):Terra(テラ)与「湛蓝之梦」(あおいゆめ)共用同一个「圆形波」模组,但手感完全分开——Terra 重(冷却 2.7–3.4 秒、半径 150–220、单发 24–47、击退强),湛蓝之梦 轻(冷却 1.4–2.2 秒、半径 125–180、单发 15–26、命中附加减速)。武器 id 与模组 id 是两层:换手感只改等级表,不用动行为代码。

4.3 支援物品(原「同伴」层,v0.13.3 改定)

v0.13.3 起彩季 詩得先退出(数据与 JK 皮肤保留,只是暂不登场);同行支援改由支援物品承担。 每局出击可携带一件支援物品:先在瓦利斯(培养・招募页)花现金(元)解锁,再在出击界面选。

支援物品 顺序对应(暂只作记录) 效果 解锁
冰淇淋 花譜 支援:拾取 +20%、经验 +15% 400 元
巧克力 理芽 同上 400 元
糖果 異世界情緒 同上 400 元
泡芙 春猿火 同上 400 元
炸年糕果子(arare) 幸祜 同上 400 元

先不做差异化:五件支援物品当前数值完全相同(顺序与五人的对应关系已写进数据表 owner 字段,以后要做出区别只改各自那条 perk)。

4.4 皮肤(特殊歌唱用形態)—— 全量形态(v0.13.5)

采集稿里有名有姓的形态全部做了出来(其中一批按人类要求注释保留、暂不上线):当前生效 38 条魔女形态,按系列组织(出击界面用一行「系列按钮」切换,卡片自动换行,全在同一屏内、无滚动条)。

v0.18.2 取消「通常形態」:出击时每位魔女之子直接使用自己系列的第一件形态——化歩=雏鸟/狸眼=Nightwings/派流=纏 其ノ壱 -丹頂-/世界=AnemoneⅠ/此処=type-1st Bellatrix;魔女候補(天祢亜留/地邑阿栖)统一用白。换角色即回到该角色的第一形态,之后仍可自由改选。

系列 持有人 条数 例(形态名) 带数值的「覚醒/戦闘形態」
特殊歌唱用形態 化歩 11 雛鳥・星鴉・瑠璃鶲・青雀・隼・金糸雀・燕・雉・雷鳥・犀鳥・梟(雛鳥黑/青雀黑/金鸡/军鸡/扇鸠按人类要求注释保留) 青雀 攻击 +10%/范围 +6%/生命 −5%
Metamorphose 狸眼 7 Nightwings・幼年期の終わり・The Cosmic Puppets・The Crack in Space・Counter-Clock World・Dr.Futurity・UBIK 幼年期の終わり 拾取 +25%/经验 +10%/速度 +5%/生命 −8%
纏 与 新衣装 派流 8 纏 其ノ壱 -丹頂-・其ノ弐 -浅黄-・其ノ特 -九紋龍-・其ノ参 -落葉-・其ノ肆 -昭和三色-・其ノ特 -五色-・銀兜・金兜 九紋龍 生命 +15%/范围 +8%/速度 −5%
普遍体・変異体 世界 5 AnemoneⅠ・NemophiraⅠ・Heliotrope・Calla lily・「parallel canvas」衣装 Heliotrope 冷却 −10%/范围 +8%/生命 −5%
type- 此処 4 type-1st Bellatrix・type-real Alnair・type-2nd ζ Capricorni・type-real Betelgeuse アルナイル 速度 +12%/攻击 +6%/冷却 +4%
魔女特殊歌唱用形態 五人共用 3 花魁鳥・八咫烏・姬連雀(花魁鳥 Revolutions 注释保留) 花魁鳥 范围 +15%/冷却 −8%/生命 −8%;Revolutions 范围 +18%/冷却 −10%/生命 −12%;八咫烏 攻击 +8%/范围 +10%/生命 −8%;姬連雀 速度 +12%/拾取 +20%/经验 +8%/攻击 −5%
魔女候補 亜留/阿栖 2 黑/白 黑:攻击 +6%;白:拾取 +15%
同伴(暂不登场) 彩季詩得 2 JK制服・夏服/冬服 夏服:拾取 +10%/速度 +5%;冬服:生命 +6%/冷却 −3%

UI 取舍(人类 2026-10-17):形态一多就不能"进几次页面"或"一屏堆一堵墙"。所以出击界面只用同一屏: 皮肤一栏上方是系列按钮(默认停在该角色自己的系列,例如选化歩就是「化歩 17」),下面只画当前系列的卡片, 卡片自动换行(没有横向滚动条);另有「共用/全部」按钮(「自创」系列目前为空,故不显示),三个系列按钮都可点击并会在当前分组内高亮选中项。跨角色形态会被拒并回落到该角色的默认形态(第一形态/白)。

全尺寸自适应(v0.13.7):间距/字号/卡片宽全部用 clamp(vmin) 归一化,角色卡改 auto-fit 网格 (宽屏一排多列、窄屏自动减列),长描述做行数钳制 ⇒ 1920×1080 到 800×600 都不出现滚动条。

两条取舍(人类 2026-10-17):① 花魁鳥・八咫烏・姬連雀算五人共用(只列一次,五位都能穿;姬連雀=V.W.P 4th ONE-MAN LIVE「現象Ⅳ-反転運命-」的官方形态名,2026-10-21 更正); ② 仅用数字或括号区分的变体不做——燕(壊)/燕(想)/軍鶏(想)/雉(怪)/花魁鳥(戒)/八咫烏(解)/梟(巡)/AnemoneⅡ/NemophiraⅡ 等一律跳过。 数值从简(同上):只有「覚醒/戦闘形態」(上表最后一列)带数值,其余形态纯外观。

出处:形态名=官方(花譜公式 WORDS 全表/官方 VR 曲目表/官方 FINDME STORE 商品页)或非公式 wiki 整理(各项带名称出典); 服装设计(配色/部件/纹样)为本作自创。采集稿标「名称不明」的照原样保留、不替它取名。 详见 docs/lore/research/vwp_forms_and_mascots.md(§2.1 官方全表/§2.2 衣装一览/§2.5 FINDME STORE 穷举/§3.0 觉醒名印证)。

皮肤=调色板 + 轮廓配件(羽饰 plume/冠羽 crest/面纱 veil/光晕 halo/水手领 sailor/西装外套 blazer/青雀翼羽 sparrow_wing/银环 star_ring/鲤纹带 koi_sash/花冠 flower_crown/星冕 star_tiara/羽根 bird_plume/尾羽 bird_tail/SF バイザー sf_visor/鲤鳞 koi_scales/花面纱 flower_veil/星轨 star_orbit) —— 有意做成「颜色之外还有轮廓差异」。三类皮肤互不串用。


五、关卡(番街 + 治安战)

5.1 番街(主线七区)

前五区按 REGENERATE 官方页定位命名;伍・陸番街官方未给定位,本作沿用 NARRATIVE 侧分区并显式标注。

番街 官方定位 魔女之子 势力 Boss(笛卡尔=官方名;其余★本作二创)
零番街 下町 森先 化歩 観統衿架(化歩的姐姐/養育者) 笛卡尔
壱番街 办公区 谷置 狸眼 谷置家/谷置 制磁(室長) 〈緘黙〉
弐番街 欢乐街 朝主 派流 台風眼 〈誘惑〉
参番街 农园区 夜河 世界 ヰ世界救済教団(崇巫教团) 〈枯死〉
肆番街 科学研究特区 輪廻 此処 復興課 〈走査〉
伍番街 ※官方网页未给(沿用 NARRATIVE 侧=工业/工场地区,旧・眼裏町) — — 〈爆塵〉
陸番街 ※官方网页未给(沿用 NARRATIVE 侧=立入禁止区画) — — 〈再生〉

⚠️ 伍・陸番街的定位不是本作自创:它们来自 NARRATIVE(TRPG)的 CITYGUIDE,出处记在代码的 AREAS[].src 与注释里(界面上不显示)。Boss 名中只有零番街「笛卡尔」是官方 REGENERATE 敌人名,其余 7 体称号才是本作二创(见 DESIGN.md §6.4)。 ★ 英文界面沿用官方英文:前五区=**Area 0〜Area 4**+Downtown/Office District/Entertainment District/Agricultural Area/Science Research Zone(官方 VIRTUAL REALITY EN 页);中文界面与官方中文一致,区名保留「○番街」不译。

  • 每区独立波次表、章节演出事件与地图主题: 壱「悪意」增援潮/弐「欲望」増殖/参「ファミリア」巨躯群/肆「現象」高速群/伍「ブラックアウト」视野遮蔽/陸「再生」终盘。
  • 地图主题:温室田垄/烟囱/锈迹骨架/残骸等。
  • 建筑实体(v0.11):楼体按道路网格布局(每格至多一栋、格间必有 ≥80px 通路), 是角色与敌人不可通过的实体——走位要贴墙绕行,敌人也会被楼体挡住; 弹幕不受影响(歌=魔法,掠过楼顶);Boss 碾压建筑。?solid=0 可关闭对比。
  • 敌人会绕楼(v0.13.1):敌人不再傻撞墙——被楼体挡住时把「朝你」的方向投影到可走路径上 沿墙绕行,朝向再以角速度上限转向(js/data/enemy.js 的敌人表 turn,度/秒:巨躯型转得慢、 高速型转得快),所以绕弯是弧线;躲在楼后不再能无限放风筝。手感参数在 js/config.js 的 C.NAV。
  • Boss 血量随番街递增(2000 → 3600);陸番街 Boss 3:30 提前出现。

5.2 治安战(无尽关卡 · v0.13)

番街选择里的第 8 张卡(∞ 治安战,恒可出击、不占復興率解锁链)。

「最佳成绩」只显示治安战(v0.15.2):主菜单的成绩行只保留治安战的最高记录;番街(主线)的战绩不再单独记录/显示——主线的进度看「復興率」与各番街的通关次数就够。

规则 说明
无尽 波次每 30 秒推进(横幅提示),刷怪率与怪种逐波升级;每 45 秒一体精英;Boss 首次 4 分钟出现,之后每 2 分钟一体(7 体轮换,第 n 体血量 ×(1+n×0.35))
多体 Boss 并存 前一体还没打完又到点,就同时存在多体——各自独立行动、各自暴走;屏幕上方每个 Boss 一行血条依次排列(暴走的那条变橙色),击破其中一体只少一行、不会影响其余(旧版:只显示最新一体,且击破任一体血条整块消失)
没有败北 HP 归零只表示「战斗结束」——界面不写失败,也不写「信号消失」
击破 Boss ≠ 结束 击破 Boss 会清场并继续下一轮(不是通关)
成绩独立 点数 = 净化数×10 + 存活秒数×2 + 波次×100,记入治安战最高记录(主菜单唯一显示的成绩、结算屏单独展示);不发復興率;記憶の卵改为局内現象卡——充能耗掉后可再次抽到,因此一场可復活多次(概率依旧极低)
收入 现金照常按净化数结算(市民票由现金兑换)

相关按钮/文案:结算标题「战斗结束。」、按钮「再战一场 ▶」、HUD 常驻 WAVE N。


六、三语界面(中 / EN / 日)

主菜单「中文 / EN / 日本語」按钮即时切换(或 ?lang=zh|en|ja),覆盖全部界面文本与数据表文本。缺词自动回退中文;字体栈按语言自动切换。

不译项:角色名与其读音、声之担当名、武器代表曲名、SingSong(); 母题。


七、存档与观测记录

主菜单「💾 存档 / 观测记录」→ 多槽位管理。

  • 槽位:新建 / 改名 / 复制 / 删除(二次确认,始终保留至少一个)/ 选用切换。
  • 导入导出:导出为一段 base64 文本(同时尝试写入剪贴板);导入一律作为新槽位加入,绝不覆盖现有档。
  • 安全设计:写入是两阶段提交(先写 .tmp 回读校验,再提交并回读),配额爆/隐私模式不会破坏盘上旧值;解析失败的档会被隔离(kup.corrupt.*)而不是静默清零。
  • 不静默失败:localStorage 不可用时退化为内存档并提示「本次进度仅在内存中」;写入失败会在存档界面显示原因。
  • 多标签页:另一标签页写入时自动重载并提示,避免互相覆盖。
  • 旧档升级:kup_meta / kup_best / kup_vol / kup_lang 启动时一次性升级进 s1 槽与全局设置。

技术细节(键结构、schema、幂等结算)见 DESIGN.md §6.0 的「存档层」与「结算幂等」两行。


八、调试与作弊参数(URL)

index.html?t=235&lv=12&god=1&char=kaf&skip=1&xp=10&mv=1&hurt=0.5&pick=heart&gem=heal&lang=ja&area=area5&seed=777
参数 作用
?t= ?lv= 起始时间(秒)/初始等级
?god=1 无敌
?char= 直接选角色:魔女之子 kaf/rim/harusaruhi/isekaijoucho/koko;招募角色 aru/asu(未招募时仅提示)
?skip=1 跳过菜单直接开局
?xp= ?mv=1 ?hurt=0.5 立即获得经验(触发升级)/自动向上行走/初始损失 50% HP
?dmg=3 玩家伤害倍率(默认 1,仅调试用)
?pick=heart,heal,ward 强制指定升级四选一(被动/武器/道具/派生武器 id 或 heal)
?egg=1 v0.17:下一次升级必出「記憶の卵」現象卡(验证抽卡/復活;仍受"番街一局一次"限制)
?derived=1 v0.21:必出派生卡(验证合并手感;仍需手里同时有两把能配对的武器,可配 ?w=note,orbit)
?revive=1 v0.17:开局带 1 次卵復活充能(验证復活手感:回血/小 AOE/无敌帧)
?auto=first|last 自动采升级卡(总选第 1/第 4 张;验证被动叠层、护盾 HUD、大招充能等需要频繁升级的效果)
?reroll=N 本局重掷/排除次数(默认 3,两者共用;0 验证耗尽置灰)
?solid=0 关闭建筑实体(楼体退回纯装饰,用于对比/回退;默认开启)
?gem=heal 周期生成回复/经验片段
?ult=1 开局即充满大招(v0.14 起大招按角色不同,见 §2.3;HUD 大招条会显示当前角色的名字)
?w=toss,bomb,mine,slash 追加初始武器(最多带 5 把;slash=近战挥刀)
?recruit=1 ?tickets=300 临时解锁全部招募/临时发放市民票(仅内存,不落盘)· ?cash=1200 临时发放现金
?form= 皮肤(特殊歌唱用形態):按系列组织(当前生效 40 条=38 条魔女形态+黑/白;其余注释保留,v0.18.2 起没有「通常形態」)(?form=fukurou 枭、?form=ubik、?form=matoi_goshiki、?form=betelgeuse…)。跨角色形态会被拒并回落通常形態;kuro/shiro(魔女候補)
?companion=ciel ?cform= 同伴/同伴皮肤(jk_summer/jk_winter;同伴层 v0.13.3 起暂不登场)
?support=icecream 支援物品(icecream/chocolate/candy/puff/arare;需先在瓦利斯解锁,否则不带)
?lang= ?aim=auto|mouse|move 界面语言/瞄准模式
?seed= ?area= ?mod= 随机种子(同 seed + 同区 = 同一局,可复现)/番街 area0〜area6/规则修正(当前仅 none)
?space=off / ?space=1 / ?space=<id> v0.18:Boss 战「不可解空間」——off 关闭、1 必进但随机、<id> 指定(dense/fog/stiff/mute/bloom/heat/chaos)
?boss=<id> v0.20.5:强制本局 Boss(如 ?boss=boss7 直接看射弹 Boss〈弾片〉;缺省按番街表)
?slot=s2 切到指定槽位后再执行其余调试
?reset=1 ?wipe=1 重置当前槽进度/删除全部槽位(危险)

一局(run)由 { char, area, mod, seed, companion, form, support } 七个字段完整描述 —— 凑齐即可复现任意一局。


九、想魔改?去动什么

零构建意味着改完刷新即可生效(浏览器缓存顽固时用 Ctrl+F5)。

数据层(v0.19 起):js/data/ 一个玩法概念一个文件—— char(角色/会心/大招)· weapon(模组+武器)· passive · item · enemy(含 7 体 Boss)· skin(形態)· support(支援物品/同伴)· shop。加载顺序的唯一真值是 js/data/manifest.js:加数据域=建域文件+在 manifest 加一条+在 index.html 补一行 <script>(node tools/check-html.js 会核对三者是否一致)。 跨域引用(角色↔武器↔形态↔支援↔Boss↔商店)由 KUP.DATA.audit() 在启动时统一校验; node tools/inventory.js 会打印模块清单与 audit 结果。域文件之间不要互相引用。

我想改… 动这个文件 说明
数值平衡(角色/武器/被动/敌人/Boss 血量) js/data/*.js(按域) 纯数据表,全部三语 {zh,en,ja}。改完跑 node tools/inventory.js 看计数与 audit
破维魔的体型/新增杂兵 js/data/enemy.js(shape)+ js/config.js(波次权重) 八形=参数原型(KUP.ENEMY_SHAPES,三语名+参数方向,见 DESIGN §4.1)。加杂兵=数据加一条并写 shape(必须命中八形之一);观感只靠 hp/speed/dmg/r/sides/color/turn 这些参数,不要另写绘制分支(v0.20.1 的剪影方案已回退)。新杂兵要接入波次:把对应基本型的权重拆出去(当前的拆法是 70 : 15 : 15),rate 不要提高
难度曲线、波次表、番街配置、规则修正 js/config.js KUP.CONFIG / KUP.AREAS(七区的定位·势力·Boss·waves·events·theme)/ KUP.MODIFIERS
加角色 / 加武器 / 加被动 js/data/char.js / weapon.js / passive.js → js/entities.js → js/game.js 数据表加条目,实体加行为,主循环加接线。加武器要向 game.js 的武器分派注册;新域还要登记 manifest.js
武器形状参数(扇形角度 / 刀长 / 圆形波角度) js/data/weapon.js 等级表里 arc=扇形角度(度)、len=刀长(px)——见武器 slash(近战挥刀,模组 cleave)与 bass(圆形波,模组 shock,arc<360 即定向扇形冲击波)
武器模组(行为)与「范围」生效面 js/data/weapon.js → KUP.WEAPON_MODULES / KUP.WEAPON_FAMILIES 三层命名:武器 id=歌(数据)、模组 id=行为、模组族=大模组(projectile 含 homing/sniper/machinegun/shotgun)。一个模组可被多把武器共用(shock=テラ・ドロップ+法螺話+あおいゆめ、sniper=the last bullet)。模组里写清 family、base(模组级基准值)、params(等级表可用参数键,写错键名会被回归测试当场拦下)、area(哪些参数随「范围」放大)。加武器=数据表加一条并指向模组;验证:KUP.MODULE_OF('bass') / KUP.WEAPONS_OF('shock') / KUP.FAMILY_OF('note')
模组族/模组/武器三层的总览 node tools/inventory.js(打印整棵树)+ DESIGN.md §6.16 族→模组→武器的唯一真值是 WEAPONS[*].behavior 与 WEAPON_MODULES[*].family;KUP.FAMILY_TREE() 把两者拼成树,文档/盘点/audit 都从它取
界面文案(三语) js/i18n.js 必须三语齐全,缺词静默回落中文
皮肤(特殊歌唱用形態) js/data/skin.js → KUP.FORM_SERIES + KUP.FORMS + js/entities.js Player._accent 系列承载共同字段(三语说明/配色/轮廓配件/出处),每条形态只写一行差异({ id, series, name, note?, mods? }),载入后自动补齐;加形态=加一行。kinds 决定谁能用、char 决定专属某位魔女之子(无 char=共用)、accent 决定轮廓配件、mods 决定数值(政策:只有覚醒/戦闘形態带数值)。UI 分组用 KUP.formGroups(kind, charId)。不要改已有 id(已写入存档 run.form)
支援物品(一局带一件) js/data/support.js → KUP.SUPPORTS 五件支援物(冰淇淋/巧克力/糖果/泡芙/炸年糕果子)顺序对应五位魔女之子(owner 字段),但先不做差异化(各自 perk 数值相同)。改效果=改那条 perk;改价钱=改 unlock.cost;解锁状态存在存档 supports/support 字段(js/meta.js)
界面结构 / 新增屏幕 index.html + js/ui.js 静态文本用 data-i18n 标注,不要内联硬编码中文
视觉(配色 / 霓虹 / 字体栈) css/style.css 只改样式别动结构
画法 / 背景 / 特效 js/render.js ⚠️ 渲染路径禁止调用随机数(否则同 seed 不可复现)
卡顿 / 掉帧 先读 DESIGN.md §6.0 的「性能」一条 三个已知大坑:① 菜单/选择屏上的全屏 backdrop-filter: blur()(v0.13.6 已删,别再给 .screen 加)② 全屏 mix-blend-mode 层(已去)③ 每个弹体各自设 ctx.shadowBlur(已按密度自适应,阈值 140)。两条常备纪律:弹幕碰撞走 game.enemyIndex()(别写回 O(弹体×敌人) 双循环);非游玩状态不要每帧 game.render()(主循环已限 ~20fps)
敌人 AI / 敌袭模式 js/director.js 按 pattern 分派;生成逻辑须走同一随机流
敌人绕楼寻路 / 楼体碰撞与空间索引 js/game.js + js/config.js steerCity(局部避障转向)+ cityIndex/_near(分桶查询);可调参数在 C.NAV。⚠️ 改完建议跑 node tools/path-cmp.cjs 对比绕楼质量
手感(移动 / 冲刺 / 碰撞 / 大招) js/entities.js + js/game.js 改完务必实机验证
存档结构 js/store.js + js/meta.js ⚠️ 改它必须跑 node tests/save.test.cjs,并考虑 schema 迁移
加 URL 调试参数 js/main.js 记得同步更新本文件第八节

三条不能碰的(会破坏可复现性或协作约定):

  1. 不要在渲染/UI 路径里用随机数 —— 一律走模拟路径的随机流(KUP.U.rng),否则同 seed 复现不出来。
  2. 不要把官方素材(图片/音频)放进仓库 —— 官方 GUIDELINES 禁止直接使用官方素材;本项目的程序化绘制/合成是刻意为之(见 docs/lore/worldview.md §13)。
  3. 不要引入 npm / 打包器 / 框架 —— 零依赖是项目核心约束。新增运行时依赖属于破坏性设计决定,必须先确认。

改完提交前跑一遍:node tests/save.test.cjs(存档)+ node tools/verify-run.js(玩法)+ node tools/check-html.js(HTML 结构)+ node tools/inventory.js(数据计数)。


十、世界观出处

游戏里用到的官方设定、术语统一表、以及「哪些是官方 / 哪些是本作自创」,全部整理在 docs/lore/:

  • docs/lore/README.md —— 一页总览:三条铁律、世界观骨架 10 条、用了/没用什么、查询速查表
  • docs/lore/worldview.md —— 主世界观详录(术语统一表、世界线总图、13 话副标题表、REGENERATE CAST、交叉核对 42 行、玩法映射、二创合规)
  • docs/lore/related-settings.md —— 周边考据(官方年表、角色读音全表、术语词典、官方小说章目)
  • docs/lore/legacy-research-2025.md —— ⚠️ 2025 年早期调研,多处结论已被推翻,勿当依据

许可(License)

  • 源代码:MIT —— 可自由使用、修改、再发布,保留版权与许可声明即可。
  • 同人内容(角色名、世界观引用、曲名等):不属于本许可范围,权利归原权利方;本项目按官方二次創作ガイドライン以非商业同人方式发布。
  • 不含官方素材:所有图像与音效均为程序化生成(Canvas 绘制 + WebAudio 合成),仓库内没有任何官方图片/音频。

一句话:代码随便用,神椿的 IP 请按官方规矩用。


免责声明

本作品为非商业、非官方同人作品,仅供学习交流。原始作品《神椿市建設中。》《神椿市協奏中。》及「KAMITSUBAKI STUDIO」「V.W.P」等名称、角色、世界观的权利归 KAMITSUBAKI STUDIO/THINKR Inc./orange inc./SINKA ANIMATION PROJECT 等原权利方所有。请支持官方作品。

About

An VS-like unofficial Kamitsubaki game developed with AI-Agents. 神椿二创平面游戏。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages