{"success": true, "data": {"status": "completed", "entries": [{"type": "progress", "id": "call_cfb299b68dde4a74bfe58bba", "tool": "todo_create", "status": "running", "args": {"overview": "调研弹幕射击游戏敌方弹幕模式并生成结构化调研报告", "tasks": [{"title": "检索项目记忆与检查交付目录结构"}, {"title": "网络搜索经典弹幕模式分类信息"}, {"title": "网络搜索Boss战弹幕设计与东方Project符卡"}, {"title": "网络搜索弹幕数学原理与实现、像素风格视觉设计"}, {"title": "整理生成 bullet_pattern_research.md 调研报告"}]}, "ts": 1787459395610}, {"type": "progress", "id": "call_cfb299b68dde4a74bfe58bba", "tool": "todo_create", "status": "completed", "args": {"overview": "调研弹幕射击游戏敌方弹幕模式并生成结构化调研报告", "tasks": [{"title": "检索项目记忆与检查交付目录结构"}, {"title": "网络搜索经典弹幕模式分类信息"}, {"title": "网络搜索Boss战弹幕设计与东方Project符卡"}, {"title": "网络搜索弹幕数学原理与实现、像素风格视觉设计"}, {"title": "整理生成 bullet_pattern_research.md 调研报告"}]}, "ts": 1787459395610}, {"type": "progress", "id": "call_ab623264136e48809599bf5b", "tool": "search_project_memory", "status": "running", "args": {"keywords": ["弹幕", "bullet hell", "STG", "符卡", "射击游戏"]}, "ts": 1787459395611}, {"type": "progress", "id": "call_ab623264136e48809599bf5b", "tool": "search_project_memory", "status": "completed", "args": {"keywords": ["弹幕", "bullet hell", "STG", "符卡", "射击游戏"]}, "ts": 1787459395613}, {"type": "progress", "id": "call_9a0e3d20ffd24ad8bf328c1f", "tool": "run_command", "status": "running", "args": {"command": "ls -la /Users/demo/starraid/ 2>/dev/null; echo \"---\"; ls -la /Users/demo/starraid/research/ 2>/dev/null; echo \"---\"; ls -la /Users/demo/starraid/research/bullet_patterns/ 2>/dev/null", "timeout": 30}, "ts": 1787459395614}, {"type": "progress", "id": "call_9a0e3d20ffd24ad8bf328c1f", "tool": "run_command", "status": "completed", "args": {"command": "ls -la /Users/demo/starraid/ 2>/dev/null; echo \"---\"; ls -la /Users/demo/starraid/research/ 2>/dev/null; echo \"---\"; ls -la /Users/demo/starraid/research/bullet_patterns/ 2>/dev/null", "timeout": 30}, "ts": 1787459395655}, {"type": "progress", "id": "call_9b9b4ee0cd984f2ba4727017", "tool": "web_search", "status": "running", "args": {"query": "bullet hell danmaku pattern design ring spiral fan patterns tutorial", "max_results": 8}, "ts": 1787459398723}, {"type": "progress", "id": "call_9b9b4ee0cd984f2ba4727017", "tool": "web_search", "status": "completed", "args": {"query": "bullet hell danmaku pattern design ring spiral fan patterns tutorial", "max_results": 8}, "ts": 1787459402243}, {"type": "progress", "id": "call_17b3177663a345848673cc5e", "tool": "web_search", "status": "running", "args": {"query": "东方Project 符卡系统 Spell Card 设计 弹幕", "max_results": 8}, "ts": 1787459402244}, {"type": "progress", "id": "call_17b3177663a345848673cc5e", "tool": "web_search", "status": "completed", "args": {"query": "东方Project 符卡系统 Spell Card 设计 弹幕", "max_results": 8}, "ts": 1787459407839}, {"type": "progress", "id": "call_59a10e058db24223b9289abc", "tool": "web_search", "status": "running", "args": {"query": "STG bullet hell boss pattern design safe zone spell card phases", "max_results": 8}, "ts": 1787459407842}, {"type": "progress", "id": "call_59a10e058db24223b9289abc", "tool": "web_search", "status": "completed", "args": {"query": "STG bullet hell boss pattern design safe zone spell card phases", "max_results": 8}, "ts": 1787459414145}, {"type": "progress", "id": "call_e7310866f9084952b71c96c3", "tool": "extract_webpage", "status": "running", "args": {"mode": "read", "url": "https://note.com/npaka/n/n5d38b7d84173?hl=en"}, "ts": 1787459418076}, {"type": "progress", "id": "call_e7310866f9084952b71c96c3", "tool": "extract_webpage", "status": "completed", "args": {"mode": "read", "url": "https://note.com/npaka/n/n5d38b7d84173?hl=en"}, "ts": 1787459419644}, {"type": "progress", "id": "call_bb3045de87664f97a67f4214", "tool": "extract_webpage", "status": "running", "args": {"mode": "read", "url": "https://sparen.github.io/ph3tutorials/ddsga2.html"}, "ts": 1787459419649}, {"type": "progress", "id": "call_bb3045de87664f97a67f4214", "tool": "extract_webpage", "status": "completed", "args": {"mode": "read", "url": "https://sparen.github.io/ph3tutorials/ddsga2.html"}, "ts": 1787459421081}, {"type": "progress", "id": "call_b0e393bf872f4f91a80bcf83", "tool": "web_search", "status": "running", "args": {"max_results": 8, "query": "bullet hell bullet movement math angle speed acceleration curved bullets implementation tutorial"}, "ts": 1787459421085}, {"type": "progress", "id": "call_b0e393bf872f4f91a80bcf83", "tool": "web_search", "status": "completed", "args": {"max_results": 8, "query": "bullet hell bullet movement math angle speed acceleration curved bullets implementation tutorial"}, "ts": 1787459427682}, {"type": "progress", "id": "call_476f023ddc4546089e39867d", "tool": "extract_webpage", "status": "running", "args": {"mode": "read", "url": "https://dmk.bagoum.com/docs/articles/t06.html"}, "ts": 1787459432747}, {"type": "progress", "id": "call_476f023ddc4546089e39867d", "tool": "extract_webpage", "status": "completed", "args": {"mode": "read", "url": "https://dmk.bagoum.com/docs/articles/t06.html"}, "ts": 1787459434192}, {"type": "progress", "id": "call_3b00045226594af1ac8b841c", "tool": "web_search", "status": "running", "args": {"max_results": 8, "query": "pixel art bullet design shmup bullet shapes readability color coding hitbox"}, "ts": 1787459434196}, {"type": "progress", "id": "call_3b00045226594af1ac8b841c", "tool": "web_search", "status": "completed", "args": {"max_results": 8, "query": "pixel art bullet design shmup bullet shapes readability color coding hitbox"}, "ts": 1787459438062}, {"type": "progress", "id": "call_0f5194dad6614e369cad6d30", "tool": "web_search", "status": "running", "args": {"max_results": 8, "query": "Touhou bullet types pellet star knife orb tama danmaku bullet graphics"}, "ts": 1787459438066}, {"type": "progress", "id": "call_0f5194dad6614e369cad6d30", "tool": "web_search", "status": "completed", "args": {"max_results": 8, "query": "Touhou bullet types pellet star knife orb tama danmaku bullet graphics"}, "ts": 1787459443104}, {"type": "progress", "id": "call_126797b4564045079c9e273f", "tool": "extract_webpage", "status": "running", "args": {"mode": "read", "url": "https://www.slynyrd.com/blog/2020/12/14/pixelblog-31-shmup-sprite-design"}, "ts": 1787459446601}, {"type": "progress", "id": "call_126797b4564045079c9e273f", "tool": "extract_webpage", "status": "completed", "args": {"mode": "read", "url": "https://www.slynyrd.com/blog/2020/12/14/pixelblog-31-shmup-sprite-design"}, "ts": 1787459448476}, {"type": "progress", "id": "call_107e79f15560482196aa6d4a", "tool": "extract_webpage", "status": "running", "args": {"mode": "read", "url": "https://touhou.fandom.com/wiki/Touhou_Danmakufu:_Bullets"}, "ts": 1787459448482}, {"type": "progress", "id": "call_107e79f15560482196aa6d4a", "tool": "extract_webpage", "status": "completed", "args": {"mode": "read", "url": "https://touhou.fandom.com/wiki/Touhou_Danmakufu:_Bullets"}, "ts": 1787459450129}, {"type": "progress", "id": "call_968d7e3352034f479e45e023", "tool": "web_search", "status": "running", "args": {"max_results": 8, "query": "shmup boss phase design pattern escalation rhythm light heavy phase spell card survival card"}, "ts": 1787459450136}, {"type": "progress", "id": "call_968d7e3352034f479e45e023", "tool": "web_search", "status": "completed", "args": {"max_results": 8, "query": "shmup boss phase design pattern escalation rhythm light heavy phase spell card survival card"}, "ts": 1787459455165}, {"type": "progress", "id": "call_c4229bb8ffb54b61998b8367", "tool": "extract_webpage", "status": "running", "args": {"mode": "read", "url": "https://www.gamedeveloper.com/design/video-game-boss-design-for-shmups"}, "ts": 1787459459458}, {"type": "progress", "id": "call_c4229bb8ffb54b61998b8367", "tool": "extract_webpage", "status": "completed", "args": {"mode": "read", "url": "https://www.gamedeveloper.com/design/video-game-boss-design-for-shmups"}, "ts": 1787459461213}, {"type": "progress", "id": "call_2934c9ba32d0416aa497fca2", "tool": "extract_webpage", "status": "running", "args": {"mode": "read", "url": "https://zhuanlan.zhihu.com/p/37282998"}, "ts": 1787459461220}, {"type": "progress", "id": "call_2934c9ba32d0416aa497fca2", "tool": "extract_webpage", "status": "completed", "args": {"mode": "read", "url": "https://zhuanlan.zhihu.com/p/37282998"}, "ts": 1787459463340}, {"type": "progress", "id": "call_0bec51e442e7459bb1052633", "tool": "extract_webpage", "status": "running", "args": {"mode": "read", "url": "https://raw.githubusercontent.com/nickschuetz/o3de-diorama/main/Docs/howto/24-bullet-patterns.md"}, "ts": 1787459471280}, {"type": "progress", "id": "call_0bec51e442e7459bb1052633", "tool": "extract_webpage", "status": "completed", "args": {"mode": "read", "url": "https://raw.githubusercontent.com/nickschuetz/o3de-diorama/main/Docs/howto/24-bullet-patterns.md"}, "ts": 1787459473022}, {"type": "progress", "id": "call_c2f251df800740a78a8665c6", "tool": "web_search", "status": "running", "args": {"max_results": 8, "query": "东方 弹幕 子弹图形 小玉 中玉 大玉 针弹 刀弹 激光 种类"}, "ts": 1787459473027}, {"type": "progress", "id": "call_c2f251df800740a78a8665c6", "tool": "web_search", "status": "completed", "args": {"max_results": 8, "query": "东方 弹幕 子弹图形 小玉 中玉 大玉 针弹 刀弹 激光 种类"}, "ts": 1787459477934}, {"type": "progress", "id": "call_84737b8b5a16471b86d12727", "tool": "web_search", "status": "running", "args": {"max_results": 8, "query": "danmaku pattern safe spot routing macro dodge micro dodge stream pattern design"}, "ts": 1787459477940}, {"type": "progress", "id": "call_84737b8b5a16471b86d12727", "tool": "web_search", "status": "completed", "args": {"max_results": 8, "query": "danmaku pattern safe spot routing macro dodge micro dodge stream pattern design"}, "ts": 1787459484039}, {"type": "progress", "id": "call_f1ebaba62f454ec59804c5d6", "tool": "extract_webpage", "status": "running", "args": {"mode": "read", "url": "https://old.reddit.com/r/shmupdev/comments/13w730k/bullet_hell_shmup_design_101_bullet_patterns/"}, "ts": 1787459491121}, {"type": "progress", "id": "call_f1ebaba62f454ec59804c5d6", "tool": "extract_webpage", "status": "completed", "args": {"mode": "read", "url": "https://old.reddit.com/r/shmupdev/comments/13w730k/bullet_hell_shmup_design_101_bullet_patterns/"}, "ts": 1787459493861}, {"type": "progress", "id": "call_61e2abeec97f4ddcb26c7a6c", "tool": "extract_webpage", "status": "running", "args": {"mode": "read", "url": "https://tig.fandom.com/wiki/Danmaku"}, "ts": 1787459493867}, {"type": "progress", "id": "call_61e2abeec97f4ddcb26c7a6c", "tool": "extract_webpage", "status": "completed", "args": {"mode": "read", "url": "https://tig.fandom.com/wiki/Danmaku"}, "ts": 1787459495749}, {"type": "progress", "id": "call_040e7861b94e4ca4a127bbf3", "tool": "web_search", "status": "running", "args": {"max_results": 8, "query": "DoDonPachi Ketsui Mushihimesama bullet patterns design Cave shmups famous patterns"}, "ts": 1787459499225}, {"type": "progress", "id": "call_040e7861b94e4ca4a127bbf3", "tool": "web_search", "status": "completed", "args": {"max_results": 8, "query": "DoDonPachi Ketsui Mushihimesama bullet patterns design Cave shmups famous patterns"}, "ts": 1787459503921}, {"type": "progress", "id": "call_722e3b8c9f504c5382e76d1b", "tool": "todo_update_task", "status": "running", "args": {"completed": true, "task_indices": [1, 2, 3, 4]}, "ts": 1787459530962}, {"type": "progress", "id": "call_722e3b8c9f504c5382e76d1b", "tool": "todo_update_task", "status": "completed", "args": {"completed": true, "task_indices": [1, 2, 3, 4]}, "ts": 1787459530963}, {"type": "progress", "id": "call_221c64a46fc24b6eb696fcd8", "tool": "write_file", "status": "running", "args": {"file_path": "research/bullet_patterns/bullet_pattern_research.md", "content": "# 弹幕射击游戏(STG / Bullet Hell)敌方弹幕模式调研报告\n\n> **调研目的**:为像素风格的弹幕射击游戏(STG / Bullet Hell)提供敌方弹幕(bullet pattern)设计的系统性参考。\n> **调研方式**:网络搜索 + 网页资料提取(来源见第 7 章)。\n> **调研时间**:2026-08-23\n> **交付目录**:`research/bullet_patterns/`\n\n---\n\n## 0. 摘要(TL;DR)\n\n- 弹幕(danmaku / 弾幕,字面义\"弹幕幕帘\",西方称 bullet hell / curtain fire)与普通 STG 的本质区别**不是子弹数量**,而是\"**整个屏幕都是弹幕的舞台**\"——大量子弹不是为了全部命中玩家,而是组成可观赏、可读、有图案(pattern)的\"幕帘\",玩家在其中寻找缝隙穿行。多数子弹在诞生之初就注定打不到玩家(Sparen's Danmaku Design Studio, Guide A2)。\n- 经典弹幕模式可用\"**规律 + 微扰**\"统一描述:先排布几何图案(环形、螺旋、扇形、直线、激光、网格等),再叠加少量可控随机(角度/速度抖动),并始终**以\"设计缝隙\"为核心**,而不是\"设计密度\"。\n- Boss 战的核心设计杠杆:**阶段(Phase/符卡)转换、节奏(轻/重交替与紧张-释放)、密度控制(难度曲线)、安全路径/安全点(safe zone/safespot/routing)、公平性信号(预警 telegraph)**。\n- 实现上只靠 5 个基础参数即可组合出绝大多数模式:**发射角度、子弹数量、发射间隔、子弹速度、加速度(角速度)**;曲线弹幕依赖角速度转向、极坐标/参数方程(如螺旋 `r=a·t, θ=b·t`)、贝塞尔曲线或正弦扰动。\n- 像素风格下,弹幕可读性(readability)压倒一切:**高饱和颜色 + 描边(尤其双层描边)+ 闪烁/呼吸动画 + 明确的子弹形状语义 + 绘制层级(敌方子弹永远最上层)**;并让判定(hitbox)远小于视觉尺寸。\n\n---\n\n## 1. 背景认知:弹幕射击与普通 STG 的区别\n\n| 维度 | 普通 STG | 弹幕射击(Bullet Hell) |\n|---|---|---|\n| 子弹目的 | 命中玩家 | 大量子弹作\"装饰 + 制造缝隙谜题\",很多子弹故意不打玩家 |\n| 屏幕利用 | 子弹从上方来袭 | 全屏都是舞台,子弹可从任何方向/任何规律出现 |\n| 判定 | 机体整体判定 | 微型判定点(hitbox),东方等游戏中判定远小于机绘大小 |\n| 玩家速度 | 较快 | 有\"低速聚焦模式\"(focus/slow mode)用于精确微调 |\n| 美学 | 战场感 | \"弹幕舞蹈\",图案本身有独立观赏价值 |\n\n关键概念:\n\n- **幕帘火(Curtain fire)**:'curtain fire'精确描述了弹幕的本质——用弹幕填满一片空间形成\"幕帘\",玩家面对的是\"图案\",而不是\"几发子弹\"(Sparen Guide A2)。\n- **判定点(Hitbox)**:子弹只有碰到自机中心的微小判定点才算命中。Cave 的《虫姬后传》《怒首领蜂大复活》甚至有 1 像素判定;DoDonPachi 系列子弹判定通常只占子弹直径约 20%(来源:TimeExtension CAVE 历史长文、Shmups Wiki CAVE 词条)。\n- **擦弹(Graze)**:子弹掠过判定点外围的\"擦弹判定圈\"得分,鼓励玩家贴着子弹走(Summer Engine、maribelhearn 术语表)。\n- **心理过滤(Mental filtering)**:高手玩家会自动忽略大量\"注定打不中自己\"的子弹(例如环形弹幕中飞向两侧/上方的子弹),只对逼近自己的弹道做出反应——这是弹幕\"装饰性子弹\"能成立的心理学基础(Sparen Guide A2)。\n\n---\n\n## 2. 经典弹幕模式分类\n\n> 本节以任务要求的 9 类为主干(2.1–2.9),然后在 2.10 补充调研中发现的其它常用模式。每个模式给出:**名称 / 视觉描述 / 数学与实现要点 / 经典游戏例子 / 像素风格设计建议**。\n> 注:任务要求的 9 类与社区常用分类(如 note.com 归纳的 15 种模式)并非一一对应,本报告将两类分类体系做了映射与合并。\n> 经典例子部分,凡未在本轮调研资料中明确出现的,均标注为\"常识(通用认知)\",置信度说明见第 7 章。\n\n### 2.1 环形弹幕(Ring / Circle Burst,日语\"轮弾/円形弾\")\n\n- **视觉描述**:从中心点向 360° 均匀放射一圈子弹,呈涟漪/烟花/魔法阵状。变化包括:扩展环(从小半径环向外扩)、收缩环、多重同心环、旋转环、分裂环(飞到中途爆成更多子弹)。(note.com 2-8 Rings)\n- **数学与实现要点**:\n ```\n n = 子弹数; base = 基准角\n for i in 0..n-1:\n angle = base + i * (360° / n)\n vx = speed * cos(angle); vy = speed * sin(angle)\n ```\n 若每帧/每次发射让 `base` 增加固定角,环就\"旋转/缭乱\"起来。(o3de-diorama 文档:Ring 参数含 Count、Aim、Speed、Fire Rate、Spin Per Shot;Ted Lim / GameMaker 论坛同款公式)\n- **经典游戏例子**:东方系列几乎所有 Boss 都有环弹(常识);琪露诺的冰符「Icicle Fall -Easy-」的冰柱环是知名的入门环弹(Sparen Guide A2 以其为例讲述固定角);环形常用作 Boss 战开场或\"轻阶段\"的通用压迫弹(note.com 入门 Boss 组合)。\n- **像素风格设计建议**:环弹数量多且对称,适合用**小尺寸圆形弹**(6–8px)保证低视觉占用;用\"带圈的小玉\"(外圈描边)区分装饰环和危险环;旋转环可给子弹加 1–2 帧的旋转动画增强\"轮转感\"。\n\n### 2.2 螺旋弹幕(Spiral)\n\n- **视觉描述**:发射角连续旋转,子弹留下螺旋尾迹,像银河/风车/玫瑰。变体:单螺旋、多螺旋、顺逆时针双螺旋交叉、不同色相/速度的螺旋。(note.com 2-2 Spiral)\n- **数学与实现要点**:\n - 离散式:每次发射一个环,环的基准角 += 每发旋转角(Spin Per Shot),即\"每发转一点\"(o3de-diorama)。\n - 参数方程(连续式):极坐标 `r = a·t`、`θ = b·t`,则 `x = cx + r·cos(θ)`,`y = cy + r·sin(θ)`(来源:Danmokou Tutorial 6 的螺旋示例 `polar(2*t, 80*t)`)。\n - 替代实现:让发射器父对象缓慢旋转(Ted Lim——\"空对象 + 3 个子发射点 + 旋转父对象即可做出螺旋\")。\n- **经典游戏例子**:螺旋是弹幕最经典的高性价比模式,\"低子弹数也能很华丽\"(note.com);东方各作螺旋遍地(常识),双反向螺旋常作中后期难度(YouTube Week 25 Boss 设计演示了\"顺+逆双螺旋\"Boss 阶段)。\n- **像素风格设计建议**:螺旋强调\"轨迹\",适合用**细长子弹(针弹/米弹/箭弹)**来勾勒弧线;或给圆形弹加方向性贴图(箭头形)让旋转方向可读(Sparen Guide A2 说明了\"有方向性的子弹图形\"对旋转/转向弹幕的可读性价值)。\n\n### 2.3 扇形弹幕(Fan / Wedge)\n\n- **视觉描述**:在一个方向张开成扇面。窄扇高压、宽扇适合场景演出;朝玩家发射时进攻性强(\"瞄准开火\"的观感),固定方向发射则可控、适合道中演出。(note.com 2-3 Fan)\n- **数学与实现要点**:\n ```\n n = 子弹数; spread = 扇形总张角; aim = 瞄准角\n step = spread / (n - 1)\n start = aim - spread / 2\n for i in 0..n-1:\n angle = start + i * step\n ```\n (来源:Unity 教程(Unity Discussions 搜索片段)与 Ted Lim 的扇面公式——\"startAngle = target - halfSpread / 2,endAngle = target + halfSpread/2,逐颗递增 step\")\n- **经典游戏例子**:几乎所有 STG 的追踪射击采用\"瞄准玩家的扇\"(aimed fan);东方道中妖精惯用(常识);DoDonPachi 等 Cave 游戏的\"concentrated fire\"即窄/快扇(来源:Zen of the SHMUP 对 Cave 的归类)。\n- **像素风格设计建议**:扇弹适合 7–11 颗一组的中型子弹(如 10px 小玉),发射瞬间用**同一色系**表示同一波;窄扇用暖色(红/橙)暗示高风险,宽装饰扇用冷色。\n\n### 2.4 直线弹幕(Line / Stream / Wall)\n\n- **视觉描述**:\n - **流弹(Stream)**:从一处连续射出单发子弹,形成一条密集弹流,玩家\"引弹\"时可把它带成一条可利用的空隙带(maribelhearn 术语:streaming / 引弹)。\n - **墙(Wall)**:同排/同列子弹连成不可穿越的\"墙\",迫使玩家整体绕过(宏闪避)或在墙隙中微闪避。Sparen Guide A3 的定义:\"墙 = 玩家无法从中间穿过的子弹群/编队\"。\n- **数学与实现要点**:连续发射(fire rate 控制密度)+ 固定方向;若每发角度做正弦微扰,直线流会变成\"S 形波流\"(Unity 论坛示例:0°→180° 递增、180°→360° 递减即正弦半波)。\n- **经典游戏例子**:东方\"针山/米弹雨\"类密集直线(常识);Sparen 用 Utsuho(地灵殿 阿空)的符卡组合说明微/宏闪避结合的动态弹幕(Sparen Guide A3)。\n- **像素风格设计建议**:直线弹适合**针弹/米弹/箭弹**(细长、方向明确);流弹用同色细弹,墙用同色+同速保证\"墙\"的视觉连续性;给子弹加方向性贴图可让玩家立即读出弹道(Sparen Guide A2)。\n\n### 2.5 随机散射(Random Spread)\n\n- **视觉描述**:子弹角度/速度在随机范围内散射,像火花、星尘、碎片。纯随机易显得\"无设计\"且不公平,优秀做法是给角度、速度、密度赋予\"范围与偏置\"(bias),即受控随机。(note.com 2-12 Particles;Sparen Guide A2 对随机角的负面评价)\n- **数学与实现要点**:\n - 在固定规律上叠加小随机:\"受控随机看起来更像弹幕\"(note.com 3-1):\n ```\n angle = base + i * even_angle + sin(t) * 波动幅度 # 规律性\n speed = base_speed + random(-0.2, 0.2) # 微扰\n ```\n - 随机角度也可用作\"种子角度\":例如连续发射环形弹时,每轮用一个随机初始角,避免盲区/避免每轮覆盖完全相同的路径(Sparen Guide A2)。\n- **经典游戏例子**:东方的\"小虫型符卡\"(《魔理沙的魔法书》分类,子弹细碎、颜色丰富,多为弱妖怪用,来源:Wikipedia 符卡)与妖精群随机弹(常识);Cave 的 Mushihimesama 强调\"更快、更集中\"的火力,其随机感更强(来源:Zen of the SHMUP / Reddit 讨论)。\n- **像素风格设计建议**:随机弹适合**点弹/星弹/米粒弹**等小尺寸,配合\"闪烁\"动画强调危险性;随机弹颜色可用亮白/黄等\"危险信号色\";注意与背景对比度(slynyrd)。\n\n### 2.6 追踪弹幕(Homing / Aimed)\n\n- **视觉描述**:\n - **瞄准弹(Aimed)**:开火瞬间朝玩家当前位置瞄准(可加扇形成\"瞄准扇/散弹\"),考验玩家\"引弹\"(misdirection)能力(note.com 2-4、maribelhearn 术语)。\n - **追踪弹(Homing)**:飞行中持续转向玩家。转向性能越弱越容易躲,追求\"稍微弯曲\"而非\"全程咬死\",反而更美观(note.com 2-13)。\n- **数学与实现要点**:\n ```\n desired = atan2(player.y - bullet.y, player.x - bullet.x)\n turn = clamp(desired - bullet.angle, -maxTurnRate*dt, +maxTurnRate*dt)\n bullet.angle += turn # 限速转向(turning performance)\n # 可选:加速度朝玩家、停顿后重新加速、分裂后重新锁定(note.com 2-13 变体)\n ```\n- **经典游戏例子**:瞄准弹是 Cave\"concentrated fire / tracking\"风格的基石(来源:SHMUP Workshop 03 YouTube——\"tracking and spread gates, 经典 CAVE 做法\");东方 Boss 的瞄准时间差/瞄准散弹(常识)。追踪弹在 DoDonPachi 的\"自爆弹\"(suicide bullets,击破敌人释放的追踪自机弹)中大量出现(来源:TimeExtension)。\n- **像素风格设计建议**:追踪弹要用**明显的方向性贴图**(箭头/小刀/蝴蝶等)且贴图随角度旋转,否则玩家读不出它在转弯(Sparen Guide A2:\"无方向性贴图的圆弹不传达转向\")。用发光/描边强调\"这只子弹会追我\"。\n\n### 2.7 反弹弹幕(Bounce / Ricochet)\n\n- **视觉描述**:子弹撞到屏幕边缘/墙壁后反弹继续飞行,轨迹呈折线。属于\"轨迹型\"弹幕中较少见的一类。\n- **数学与实现要点**:碰撞边缘时反射角度:`angle = π - angle`(左右边)或 `angle = -angle`(上下边),或对速度向量做分量取反;可加转数上限让子弹弹几次后消失。\n- **经典游戏例子**:相比东方式纵版弹幕(子弹通常出屏即消),反弹弹更常见于街机/横版与部分同人弹幕(如某些 Cave 之外的 STG);东方中近乎**没有**常规反弹弹(常识判断,未见调研资料佐证其广泛存在)。⚠️ 这属于\"相对少见\"的类型,若要在本项目中使用,建议作为特色武器或 Boss 特殊阶段引入,而非基础词库。\n- **像素风格设计建议**:反弹弹适合圆润的**圆形/椭弹**(避免方向性贴图在反弹瞬间的旋转跳变违和);反弹瞬间加 1–2 帧\"压缩-回弹\"动画或火花粒子,强化物理感;用预警或颜色提示\"它会弹\"。\n\n### 2.8 滞留弹幕(Static / Lingering)\n\n- **视觉描述**:子弹停留在场上形成持续障碍,或极慢速移动封锁区域。包括:静止弹墙、悬浮使魔、地面/空中持续存在的弹(laser 也可视为线状滞留)。作用是**区域封锁(area denial)**:封住一部分屏幕,为后续弹幕做铺垫,或堵住之前的逃逸路线(SHMUP Workshop 03:area denial patterns 的定义;Boghog:bullet sealing、ceasefire zone 等反挫败机制)。\n- **数学与实现要点**:寿命(lifespan)拉长 + 速度降到 ~0;或通过\"分裂条件=凝固\"实现\"飞行到某点后停住\"。可让滞留弹周期性闪烁(半透明 + 呼吸)提示\"仍在威胁中\"。\n- **经典游戏例子**:东方\"压迫型符卡\"(《魔理沙的魔法书》:限制自机移动范围的符卡,来源 Wikipedia,如灵梦的梦符「二重结界」以弹幕构成双重结界限制移动——B 站文章以它为例);激光墙封路也是常见形式(note.com 2-14,激光\"clearly block off parts of the screen\")。\n- **像素风格设计建议**:滞留弹必须与\"会动的危险弹\"在视觉上区分——建议**低频闪烁 + 半透明 + 固定描边**;或用\"发光的柱子/结界\"图形(如结界/棱镜形状)表示区域阻碍物。静止弹用冷色系(蓝/紫),活动弹用暖色系,形成语义分离。\n\n### 2.9 组合弹幕(Compound Patterns)\n\n- **视觉描述**:把多个模式叠加。例如\"螺旋铺满屏 + 瞄准弹逼玩家移动\",或\"展开环 + 中途分裂 + 激光堵路\"。(note.com 2-15 Composite)\n- **设计原则**(note.com 3-2 / 2-15):\n - 组合时**指定一个主模式**,其余为伴奏,避免信息过载。\n - 元素越多,越要依赖颜色编码、预警、缝隙设计来保证可读性。\n - 组合要形成\"分工\":背景压迫 + 前景逼迫(如中间难度组合:旋转全向弹 + 上方落雨 + 周期性瞄准弹)。\n- **经典游戏例子**:东方高阶符卡几乎都是组合(常识,如多层螺旋+分裂环+预警激光即 note.com 高级 Boss 推荐组合);阿空(地灵殿)的符卡是微/宏闪避结合的著名组合(Sparen Guide A3)。\n- **像素风格设计建议**:组合弹幕在像素风下最容易\"糊成一团\"。建议:每个模式用**不同主色**;不同模式用**不同子弹形状**(圆=压迫、针=直线、星=装饰/特殊);层与层之间拉开速度差,让玩家能分层读取。\n\n### 2.10 调研补充的常用模式\n\n以下模式来自 note.com 的《15 种经典弹幕模式》与 Sparen 指南,按需并入本项目词库:\n\n| 模式 | 视觉/玩法特征 | 要点 | 像素建议 |\n|---|---|---|---|\n| **波型/幕帘(Wave/Curtain)** | 正弦波排列的子弹带,像波浪/极光/瀑布,容易与 BGM 节奏联动 | 重点是\"缝隙的流动感\"而非子弹本身;`y = a·sin(ωt + φ)` 排布 | 用细长米弹/针弹沿正弦排布,同色系渐变 |\n| **网格(Grid)** | 横竖规则排列,钻石/晶体状,几何美且缝隙可读;纯网格易单调,加大小的速度差/局部缺口 | 强规律、易读、密度↑难度↑ | 用规则小圆弹 + 网格闪烁/错位动画 |\n| **花状(Floral)** | 对称花瓣排列(5/6/8 瓣),华丽,适合符卡演出 | 对称越高越精致;过度均匀会单调,周期性转相位 | 花瓣用两类颜色交替(瓣=亮、蕊=暗)强化图案 |\n| **星形/多边形(Star)** | 强调特定顶点(5/6/8 向)的星形放射 | 少弹星形也醒目,适合元素/性格表达 | 用星形贴图子弹 + 旋转动画 |\n| **交叉(Intersection)** | 多股弹流交叉如编织/光流;视觉美但缝隙易被切断 | 关注\"玩家可走的路径\"而非交点;调速度/密度/交叉角 | 两条交叉流用互补色(如青 vs 品红)|\n| **落雨(Rain)** | 自上而下倾泻,天然适合道中演出 | 全随机易不公平,保持一定规律美观 | 竖直方向子弹用垂直长条贴图或水滴形 |\n| **粒子(Particles)** | 火花/星尘式散落,适合爆炸、花瓣、魔法粒子、Boss 登场 | 给角度/速度/密度一个\"范围+偏置\" | 小尺寸 + 闪烁,可叠加在其他弹幕上做纹理 |\n| **激光(Laser)** | 线/带状攻击,视觉冲击强,可明确封路 | 发射前先给**细预警线(telegraph)**最公平;有固定/旋转/弯曲/网格激光 | 预警线细→粗的 2 帧过渡动画;激光主体用高亮+描边 |\n| **分裂弹(Split)** | 飞行中途/定时/到距离后爆成子弹(如 1→3),常伴随\"先停顿\"预警 | 分裂条件:时间/距离/位置;分裂后子弹可重新锁定玩家(note.com 2-13) | 母弹大而亮(告知\"会爆\"),子弹小一号;停顿帧加\"蓄力闪光\" |\n\n---\n\n## 3. Boss 战弹幕设计\n\n### 3.1 阶段转换与东方Project符卡系统(Spell Card)\n\n**东方Project 的符卡系统**(来源:Wikipedia《符卡》、百度百科、PIXNET 东方介绍):\n\n- **来源与规则**:符卡(Spell Card,スペルカード)由《东方红魔乡》首次引入(ZUN 自述为\"比其它系统更早面世\"而开发本作)。符卡规则 = \"给绝技命名并宣言\"的决斗规则:宣言、约定符卡张数、击破对方全部符卡即胜。\n- **敌方符卡流程**:\n 1. **非符(nonspell)**:Boss 的普通攻击,一般耐久条分格为单位;\n 2. **符卡宣言**:血量削到阈值时 Boss \"念符\"(宣言),画面切换为该角色专属 Spell Card 背景,进入符卡攻击;\n 3. **符卡红利(Spell Card Bonus, SCB)**:无 Miss 无 Bomb 击破符卡可获得额外分数,随时间递减;擦弹可增加红利;\n 4. **时间限制**:每张符卡有残余时间显示,超时 Boss 自动进入下一波(此时无法收取符卡)。\n- **符卡变体**:\n - **增强型符卡**:随血量削减,弹幕密度/速度逐渐增加,越到后面越难(强化难度的天然手段);\n - **时效型/时限型符卡**:耐久无法直接削减,玩家必须\"死守到时间结束\"才能收取(生存符卡 survival card;如《永夜抄》部分符卡);\n - **Last Spell / Last Word / Overdrive**:残机为零或特定条件下的最终符卡(Extra/隐藏挑战用)。\n- **难度变化**:同一符卡在 Easy/Normal 与 Hard/Lunatic 下常有**不同名字**(Higher 难度名字更华丽),弹幕排列与颜色也会变化(Wikipedia)。\n- **《魔理沙的魔法书》对符卡的分类**(Wikipedia):演剧型(重视觉效果、大量非瞄准装饰弹)、奴隶型(用使魔/人偶/式神攻击)、小虫型(细碎多彩、弱妖怪)、压迫型(限制自机移动范围)、兴奋剂型(强化自身)。\n\n**对本项目的启示**:阶段(Phase)不必按血量硬切,可以模仿\"非符→符卡宣言→符卡\"的节奏:普通阶段保持低密度教学,宣言瞬间清场 + 特效 + 显示符卡名,制造\"仪式感\";生存符卡(时限型)能复用已有图案、只改目标(熬过 X 秒),开发成本低、演出效果好。\n\n### 3.2 弹幕密度控制\n\n- **密度不是越多越好**:'curtain fire'不等于无限堆弹;密度阈值之后,可读性(readability)崩坏,玩家感到\"不公平\"而非\"华丽\"(note.com 3-2:设计缝隙而非密度)。\n- **难度曲线**:\n - 报告参考\"轻/重阶段交替\"(Danmaku Unlimited 3 采用东方式 light/heavy 交替:轻阶段让玩家喘息与移动,重阶段密集压迫,来源 Forgotten Worlds 采访);\n - 每个 Boss 阶段内\"缓慢升级\":起点是玩家已见过的简单变体,随后逐次加大子弹量/缩小缝隙/提高速度(SHMUP Workshop 03:slow escalation)。\n - 不同难度等级通过\"同一图案改密度/速度/名字\"来分层(东方难度差异,Wikipedia)。\n- **可控变量**(可做成运行时调参工具):子弹数、速度、发射间隔、扇形张角、环形偏转、随机种子、加层数。\n- **Cave 的 rank 系统**:根据玩家当前表现(残机/雷/击破率)动态调整弹幕强度——可选的高级机制(来源:TimeExtension;Boghog 亦建议用\"credit feed 降 rank\"来练习 Boss)。\n\n### 3.3 安全路径设计(Safe Zones / 缝隙 / 路线)\n\n弹幕的本质是\"缝隙谜题\",安全路径是设计对象而非巧合:\n\n- **微闪避(micrododging)**:在密集子弹的缝隙间小幅移动穿行(Sparen A3 / maribelhearn / Boghog);\n- **宏闪避(macrododging)**:对整个弹幕编队进行大幅度绕行、找到整块安全区(safe spot / safespot——\"内部完全不会被击中(或近于)的点/区域\",maribelhearn 术语);东方中 BOWAP、咲夜道中非符等是经典 safespot(maribelhearn Beginner Guide / jargon);\n- **引弹(streaming / misdirection)**:瞄准弹只有在玩家\"把弹流引到别处\"时才安全——设计上,持续的瞄准弹迫使玩家移动并制造\"下一波更难\"的位置压力(SHMUP Workshop 03:被满屏引导到尴尬位置会削弱后续应对;maribelhearn:misdirection 常在数秒空隙内完成);\n- **路线(routing)**:玩家在静态/半静态弹幕中规划的具体移动路径,是\"设计缝隙\"的最终产物;\n- **设计检查表**(综合 note.com 3-2 与 SHMUP Workshop 03):\n 1. 画图时刻意留下**可见的缝隙**(gap width > 判定点 + 子弹判定 + 误差余量);\n 2. 区分\"安全点型\"(原地不动即可)与\"移动型\"(需要持续引弹)两类安全路径,交替使用;\n 3. 用瞄准弹/区域封锁弹**主动关闭**上一轮的安全点,防止玩家蹲坑(area denial,SHMUP Workshop 03;以及\"anti-camping:避免玩家龟缩\"的 Boss 设计目标);\n 4. 每次重复图案时用随机种子旋转相位,避免出现固定盲区(Sparen A2)。\n\n### 3.4 时间限制与弹幕压力\n\n- **时限符卡**:上面已述(生存符卡)。在设计上,时限 = \"不需要 DPS 检验,纯粹考验躲避\",适合放在 Boss 战中段作为节奏变化点(东方文花帖/弹幕天邪鬼等衍生作品以\"时限+道具\"为核心玩法)。\n- **压力节奏(tension-release loop)**:\n - 每个波次设计\"入口压力→主压力→释放\"三段式:先预警(低压力、可读),再高压(核心躲避),最后 1–2 秒\"突然变简单\"给玩家胜利快感(Boss Up YouTube:survive 之后的那 1 秒喘息极具成瘾性);\n - 压力来源可以分层:视觉压力(满屏)、逻辑压力(瞄准)、时间压力(超时/残机消耗)。\n- **Boss 战的五个设计要素**(来源:Game Developer《Video Game Boss Design for Shmups》):\n 1. **难度 Difficulty**:首关 Boss 必须让\"认真玩的人\"能过;Boss 攻击应与关卡已有敌人/道具主题连贯(\"进化\"而非\"空降\");\n 2. **多样性 Variety**:Boss 血量条分段显示图案边界;同一段血内可循环多个攻击,且每次攻击要求不同的躲避/输出策略;\n 3. **时长 Length**:Boss 战时长与关卡时长成比例;中 Boss 不应比关底 Boss 长;把\"信息不对等的假 Boss → 真 Boss\"当一次性惊喜;\n 4. **回报 Pay-off**:Boss 战末尾(濒死前)往往\"倾泻所有弹幕\"制造最终高潮(Mushihimesama、ESPGaluda2、Ikaruga 第 3 章 Boss 都是例子);好回报 = 节奏铺垫 + 假危机;\n 5. **角色 Character**:爆炸方式、受击反馈、蓄力/宣言动画、音效都要符合角色性格——这是\"为什么这个 Boss 挡在这里\"的叙事答案。\n\n### 3.5 东方式 Boss 战结构参考(综合)\n\n1. 开战:非符 1(轻、教学、环/扇)\n2. 符卡宣言(换背景、念符名)→ 符卡 1(主题图案,时间限制,收取奖励)\n3. 非符 2(中压,引入瞄准/引弹)\n4. 符卡 2(组合图案,增强型:随血量变密)→ ……\n5. 濒死:Last Spell / 最终符卡(最强+最华丽)→ 消弹演出(击破瞬间子弹变道具)\n6. (挑战层)隐藏:Extra 时限符卡 / 弹幕天邪鬼式\"看似不可能\"组合\n\n---\n\n## 4. 数学原理与实现\n\n### 4.1 基础参数体系\n\n任何一个弹幕模式都可由以下参数组合生成(来源:note.com 第 4 章;o3de-diorama 参数表):\n\n| 参数 | 作用 | 备注 |\n|---|---|---|\n| 发射位置 | 敌中心/屏幕边缘/多炮塔 | 决定子弹出生点阵型 |\n| **发射角度** | 固定 / 旋转 / 瞄准 / 随机 | 最易出效果 |\n| 子弹数量 | 密度 | 环形=一圈数量、扇形=扇内数量 |\n| 发射间隔 | 节奏 | 决定\"流\"还是\"波\" |\n| 子弹速度 | 难度与观感 | 快=危险、慢=可读 |\n| 加速度 | 节奏与曲线 | 减速弹、加速弹 |\n| 角速度 | 螺旋、转向弹 | 曲线弹的核心 |\n| 寿命 | 消失时机 | 滞留弹=长寿命 |\n| 分裂条件 | 时间/距离/位置 | 分裂弹 |\n| 颜色/大小 | 可读性与美观 | 颜色=属性编码 |\n\n### 4.2 角度与排列公式(常用)\n\n- **环形**:`angle_i = base + i·360/n`,`v = speed·(cos, sin)`(2.1 节)\n- **扇形**:`angle_i = aim - spread/2 + i·spread/(n-1)`(2.3 节)\n- **瞄准**:`angle = atan2(py - ey, px - ex) + 偏移`(瞄准扇 = 在其两侧均匀分布)\n- **网格**:对 `(i,j)` 行列给固定 x/y 间距\n- **正弦波**:`x 或 y += A·sin(ω·t + φ)`(2.10 波型)\n- **花瓣/星形**:`angle_i = base + i·(360/petal) + 相位`,再由花瓣内多颗子弹构成瓣形\n- **规律+微扰**:`angle = base + i·even + sin(t)·fluct`,`speed = base + random(-δ,δ)`(note.com 3-1)\n- **周期循环**:如\"每 60 帧一波大浪、每 15 帧小弹、每 4 发反转角度\"制造音乐性节奏(note.com 3-4)\n\n### 4.3 速度变化(加速/减速弹幕)\n\nDanmokou(DMK 引擎)归纳的常见运动(来源:Danmokou Tutorial 6):\n\n1. 恒定速度直线(默认)\n2. **直线加速**(`v(t) = v0 + a·t`,可正可负:赶人弹/诱导弹)\n3. 速度在慢/快之间周期切换\n4. 两位置间往返\n5. 极坐标运动(径向+角速度)\n6. 波浪线(squiggly)\n7. 旋转运动方向(追踪/转向)\n8. 相对另一运动物体运动(随从弹/母舰子机)\n9. 任意参数方程轨迹\n\n工程提示:DMK 把运动建模为**函数**(`rvelocity(px(3 + sine(4, 0.6, t)))`),而不是\"速度/加速度两个标量\",从而任意轨迹即插即用;其子弹更新循环一次函数调用即可支撑 10 万以上子弹 @4K 120FPS(DMK 官方数据)。\n\n### 4.4 曲线弹幕(转向 / 极坐标 / 贝塞尔)\n\n- **限速转向(追踪弹)**:每帧把朝向转向上限内的目标方向(2.6 节公式);\"转向弱一点更好躲也更好看\"(note.com 2-13)。\n- **极坐标螺旋**:`r(t)=a·t, θ(t)=b·t` → 直角坐标 `x = cx + r·cosθ, y = cy + r·sinθ`(DMK 示例 `polar(2*t, 80*t)`)。注意极坐标绕圈时转速均匀性需要弧长参数化,DMK 作者自述\"没有闭式解,需迭代求解\"。\n- **贝塞尔曲线(弯曲弹)**:二次贝塞尔 `B(t) = (1-t)²·P0 + 2(1-t)·t·P1 + t²·P2`,每帧采样 t∈[0,1] 作为下一位置(通用图形学做法,非本次调研单一来源;用于\"弧形弹道/水漂弹\")。三次贝塞尔 `C(t)` 用于更复杂的 S 形弹道。\n- **正弦扰动**:在固定方向上叠加正弦横向偏移,成为\"S 形\"弹(Unity 论坛实现示例)。\n- **角度退化/曲线激光**:东方中存在\"准激光\"(弧形激光、曲线灵弹),判定比直线激光大(thwiki 弹型介绍)——曲线弹道要么给足预警,要么减小判定。\n\n### 4.5 性能实现建议\n\n- **对象池(object pool)**:固定容量池 + 硬上限,防止无限生成(o3de-diorama 的 `Max Bullets` 硬上限设计)。\n- **批量渲染**:同一纹理的整组子弹一次 draw call(sprite batch / 合批)。\n- **碰撞**:每颗活子弹对目标碰撞层做一次重叠查询,目标层只放玩家/护盾几个碰撞体,几百颗子弹也便宜(o3de-diorama)。\n- **功能分层**:发射器(emitter)只管几何与碰撞,伤害/计分留在游戏侧(o3de-diorama 的分工建议)。\n\n---\n\n## 5. 像素风格下的弹幕视觉设计\n\n### 5.1 子弹形状库\n\n**核心原则**:'shmup 最核心的是弹幕的可读性(visibility)——在任何背景下都能被读出'(slynyrd Pixelblog 31)。形状即语义:**形状要匹配行为**(Sparen Guide A2 / Pixelblog 32:箭形弹配直线飞行才合理;追踪弹要旋转指向的运动方向)。\n\n**东方参考形状清单**(来源:thwiki《东方全弹型介绍与中弹判定分析》、maribelhearn 子弹类型表、Steam Touhou Bullets Model Pack):\n\n| 类别 | 形状 | 用途/特点 | 像素建议 |\n|---|---|---|---|\n| 圆形系 | 小玉(带圈/不带圈)、中玉、大玉(空心) | 通用基础弹;大玉实际判定仅中心空洞 | 6–10px 圆 + 描边;大玉用\"中空环\"贴图配透明中心 |\n| 粒状 | 点弹、米弹 | 点弹最小(<判定点),米弹为最高发弹量弹型之一 | 3–4px 点、8×4 米粒;米弹风速后有变短/判定变大差异 |\n| 尖形 | 针弹/箭弹/晶弹 | 速度感、方向感最强 | 长 8–14px 的三角/箭头,尖端高亮 |\n| 刀剑形 | 刀弹、剑弹、苦无 | 角色辨识度高(如咲夜/蕾米) | 剑身+尖端高光;前端无判定所以略细 |\n| 星光形 | 星弹(大/小)、光弹 | 华丽、魔法感;光弹判定偏大 | 4 角/5 角星 + 旋转动画 |\n| 特殊形 | 蝶弹、心弹、音符弹、钱弹、鳞弹(带\"翼\") | 角色主题、装饰 | 2 帧扇翅/跳动动画;鳞弹判定仅中心点 |\n| 火焰/流体 | 炎弹、水滴/滴弹 | 不规则 | 2–3 帧沸腾动画,\"躲前端\"语义 |\n| 激光 | 线段激光/射线激光、弧形激光 | 封路、视觉冲击 | 预警线(细)→ 实体(粗)2 帧过渡;线身描边 |\n\n**东方判定参考**(thwiki):多数弹\"判定 < 视觉\":大玉只有中心空洞有效、鳞弹只有中心点、剑弹前端无判定、激光靠预警线判定;当\"准激光/粥弹/核弹\"等判定欺诈弹出现时,需要玩家另行学习——像素风下**不要滥用判定欺诈**,默认\"所见即所判\"更公平。\n\n### 5.2 颜色编码\n\n- **基础原则**:子弹是屏幕上最鲜艳的元素;用高饱和色与背景拉开对比;颜色可传达属性/机制语义(slynyrd;note.com 3-3)。\n- **按属性/危险度编码**示例:\n - 红/橙 = 高速、致命、普通攻击;\n - 蓝/青 = 特殊判定、特殊移动(如反弹/曲线/激光);\n - 紫/白 = 装饰弹、非致命、演出用;\n - 绿 = 通常用于玩家/友方,避免敌方子弹大量用绿(语义混淆)。\n - (以上为常见实践惯例,属综合常识,非单一文献结论。)\n- **注意**:颜色要与背景/特效区分(note.com 3-3);考虑红绿色盲——**不要只靠红/绿区分要害**,同时用形状/大小/闪烁区分。\n- **同波同色**:同一次发射的子弹用同一色系,方便玩家把\"一波子弹\"当整体读(note.com 3-3:子弹类型或危险度不同则换色)。\n\n### 5.3 子弹大小与可躲避性\n\n- **判定点 vs 视觉**:自机 hitbox 远小于机绘(Cave 1px hitbox、DoDonPachi 子弹判定约直径 20%,来源 TimeExtension/Shmups Wiki);聚焦模式时在判定点处显示小红点让玩家能\"穿缝\"。\n- **子弹尺寸**:越大越可见但占屏;太小(<判定点)会\"消失\"且威胁感弱。建议子弹视觉 6–16px 常见、点弹 3–4px、激光不限长(slynyrd:子弹应大小多样,通常越大伤害越高)。\n- **缝隙设计**:安全缝隙宽度 = 玩家判定 + 子弹判定 + 玩家操作误差(微闪避用低速聚焦移动保证精度);设计时给缝隙留 ≥2–3px 冗余(工程经验法则)。\n- **密度 vs 大小**:子弹越小越能密(给留出视觉通道);同屏密度高时,小弹+弱判定(空心大玉)是\"看起来吓人、实际可穿\"的经典手法(thwiki 大玉示例)。\n\n### 5.4 发光/粒子效果在像素风格中的处理\n\n- **描边(outline)**:几乎必备,最好**双层描边**(亮色外圈+暗色内圈)以保证任何背景下可读;pixel 风格常用白描边与其它精灵(深描边)区分(slynyrd)。\n- **闪烁/双帧动画**:两帧交替即可做出\"呼吸/危险脉冲\";对比度越大越激烈,但太强会难以追踪快速弹(slynyrd)。\n- **发光**:像素风发光 = 亮色核心 + 1 层半透明同色光晕(加色混合 additive)或\"外扩 1px 亮描边\";避免真实 bloom 破坏像素感。\n- **粒子**:爆炸/火花/花瓣用\"范围+偏置\"的受控随机(note.com 2-12);粒子可叠加在弹幕上做纹理而不是独立威胁。\n- **脉冲缩放**:呼吸/脉动(expanding-contracting)可让呆滞的圆弹\"活起来\"(slynyrd 的 rotation/motion 建议)。\n- **消弹特效**:Boss 符卡击破瞬间,全屏子弹转为道具/星点,是东方色的标志性演出(Touhou Wiki Items:子弹在 Boss 攻击结束/未超时被打掉时转为星道具;消弹 cancel 亦为计分要素,maribelhearn 术语)。\n\n### 5.5 弹幕层级的视觉优先级\n\n绘制顺序(从底层到顶层,工程惯例 + Reddit shmupdev 设计 101 摘要:\"敌方子弹永远画在其它对象之上\"):\n\n1. 背景/场景层\n2. 地面敌人/可破坏物\n3. 道具、点数\n4. 玩家射击、爆炸特效(半透明)\n5. **敌方子弹(最高优先级之一,必须覆盖玩家机绘)**\n6. 玩家机绘 + 判定点指示(聚焦时)\n7. UI(血量/符卡名/时间)\n\n理由:玩家需要\"先读弹,再读自己\";若子弹被机绘/特效遮挡,就会产生\"判定杀(clipdeath)\"的挫败感(maribelhearn 术语)。\n\n### 5.6 像素风格弹幕设计清单(落地用)\n\n- [ ] 每种模式指定**1 个主色 + 1 种子弹形状**(勿两种都在变);\n- [ ] 危险弹用暖色+闪光,装饰弹用冷色/暗色调;\n- [ ] 所有敌方子弹带描边(建议双层),且在玩家机绘之上绘制;\n- [ ] 直线/追踪/曲线弹使用**方向性贴图**(箭头/针/刀)并随角度旋转;\n- [ ] 预警:激光先细线→粗线;分裂弹先停顿+蓄力闪光;大威力攻击让 Boss 本体发光(note.com 3-5);\n- [ ] 判定 < 视觉:默认简化判定(圆/椭圆),为\"大玉/鳞弹\"这类特殊判定做贴图注释(空心=可穿);\n- [ ] 像素分辨率建议在 320×180~640×360 区间定基准(slynyrd 建议 480×270),保证单个子弹仍有足够像素表达细节;\n- [ ] 每张符卡/阶段限定子弹色彩数(建议 2–3 色),避免像素噪点化。\n\n---\n\n## 6. 对本项目(像素风弹幕游戏)的落地建议汇总\n\n1. **词库起步**:环形 / 螺旋 / 扇形 / 直线(流+墙)/ 瞄准扇 / 受控随机 / 分裂弹 / 激光(带预警)/ 滞留结界,共 9 个基础模式,先用\"参数化发射器\"(Count/Aim/Spread/Spin/Speed/FireRate/Lifetime)实现(参照 o3de-diorama 的参数表),Boss 脚本只做\"模式序列 + 转场\",成本最低。\n2. **难度曲线**:按\"非符(轻)→ 符卡(重)→ 非符 → 符卡 …\"排布;每张符卡 = 1 主题图案 + 增强型变密 + 时限生存变体(一套图案三种玩法)。\n3. **公平性**:所有危险性一定要有预警(telegraph);缝隙 > 判定 + 冗余;颜色+形状双通道编码。\n4. **像素视觉**:双层描边 + 双帧闪烁 + 加色发光小光晕 + 同波同色 2–3 色限制 + 子弹层级最高。\n5. **性能**:对象池 + 合批 + 简化碰撞层(目标只放玩家/护盾),确保几百到几千颗子弹稳定 60FPS。\n\n---\n\n## 7. 信息来源与置信度说明\n\n按信息诚实原则,对所有关键结论标注来源与置信度:\n\n**(A)本轮调研直接引用的网页来源(置信度高,可复核):**\n\n1. npaka,《A Summary of 15 Beautiful Bullet Hell Patterns in Danmaku Shooters》(note.com)——15 种模式分类、组合配方、参数与设计 tips:https://note.com/npaka/n/n5d38b7d84173?hl=en\n2. Sparen's Danmaku Design Studio,Guide A2(角度类型、方向性子弹、心理过滤、danmaku vs 普通 STG)、Guide A3(墙的定义、微/宏闪避、Utsuho 例子):https://sparen.github.io/ph3tutorials/ddsga2.html 、ddsga3.html\n3. Danmokou(DMK 引擎)Tutorial 6(函数式运动系统、极坐标螺旋公式、性能数据、贝塞尔/参数方程讨论):https://dmk.bagoum.com/docs/articles/t06.html\n4. Wikipedia《符卡》(符卡规则、宣言、红利、时效/增强型、Last Spell/Last Word/Overdrive、难度差异、魔理沙魔法书分类):https://zh.wikipedia.org/zh-hans/符卡\n5. thwiki/东方吧Wiki《东方全弹型介绍与中弹判定分析》(小玉/米弹/点弹/大玉/光弹/针弹/鳞弹/剑弹/炎弹/激光/核弹/粥弹及判定细则):https://touhou8.thwiki.cc/index.php?edition-view-1281-1.html=\n6. maribelhearn 《Touhou Community Jargon》(子弹类型表、micro/macro dodge、safespot、streaming、misdirection、routing、cancel、clipdeath 等术语):https://maribelhearn.com/faq/jargon(含中文版)\n7. maribelhearn Beginner Guide(微/宏闪避、流弹引弹、safespot 举例 BOWAP 等):https://wiki.maribelhearn.com/wiki/Beginner_Guide\n8. slynyrd Pixelblog 31《Shmup Design Part 1》(像素子弹设计:颜色/大小/形状/描边/闪烁/旋转、分辨率建议);Pixelblog 32(外观与行为匹配):https://www.slynyrd.com/blog/2020/12/14/pixelblog-31-shmup-sprite-design\n9. Game Developer《Video Game Boss Design For Shmups》(Boss 五要素:难度/多样性/时长/回报/角色;健康条分段;Cave 例子):https://www.gamedeveloper.com/design/video-game-boss-design-for-shmups\n10. SHMUP Workshop 03《Bullet Pattern Design》(模式角色:警告/位移/区域封锁/最终引导;slow escalation;微宏闪避;CAVE tracking 做法;Boss 设计目标):YouTube ArZRZSYICLo\n11. TimeExtension《CAVE Story: The History of DonPachi》(命中率 20% 判定、自爆弹、rank 系统、1px hitbox);Shmups Wiki《CAVE》词条(1px 判定、游戏清单):https://www.timeextension.com/features/cave-story-the-history-of-donpachi-the-shmup-series-that-changed-everything\n12. Forgotten Worlds《A guide to Danmaku Unlimited 3》(脚本化弹幕、Touhou 式轻/重阶段交替):https://www.forgottenworlds.net/bullet-hell-danmaku\n13. Zen of the SHMUP(DonPachi 系列=图案+记忆、Mushihimesama=快速集中火、Cave 组合):https://richardschupp.wordpress.com/tag/the-zen-of-the-shmup\n14. o3de-diorama《24-bullet-patterns.md》(Ring/Fan/Spiral 参数表、对象池、合批、碰撞层设计):https://github.com/nickschuetz/o3de-diorama/blob/main/Docs/howto/24-bullet-patterns.md\n15. Boghog's bullet hell shmup 101(bullet sealing、micro/macro dodge 补充):https://shmups.wiki/library/Boghog%27s_bullet_hell_shmup_101\n16. Reddit r/shmupdev《BULLET HELL SHMUP DESIGN 101》(\"敌方子弹永远绘制在其他对象之上\"等原则,仅经搜索摘要获取,置信度中):https://www.reddit.com/r/shmupdev/comments/13w730k/\n17. 其它:Summer Engine(判定点/聚焦/擦弹术语)、Touhou Wiki Items(消弹转星道具)、Steam Touhou Bullets Model Pack(子弹形状清单)、Ted Lim《Day 49》(sin/cos 扇面公式)等。\n\n**(B)置信度说明:**\n\n- 上述 (A) 列来源中的具体论断:**我很确定**它们出自对应来源(可直接复核)。\n- \"经典游戏例子\"中标注为\"常识\"的条目(如\"东方各作螺旋遍地\"\"雅雅…\"),来自模型通用知识,**没有在本轮调研中逐条核实**,读者如需引用请自行在对应游戏攻略中确认。\n- \"像素建议\"\"设计检查表\"\"落地建议\"等小节为**基于上述来源的综合工程建议**(合理推断,非文献原文),置信度中上,请结合游戏实测调整。\n- 反弹弹(2.7)在东方系纵版弹幕中近乎缺席是**常识判断**;调研资料中未找到专门文献,如要使用建议先做原型验证。\n\n---\n\n## 附录 A:参考链接汇总\n\n- https://note.com/npaka/n/n5d38b7d84173?hl=en (15 种弹幕模式)\n- https://sparen.github.io/ph3tutorials/ddsga2.html / ddsga3.html (弹幕设计工作室指南)\n- https://dmk.bagoum.com/docs/articles/t06.html (Danmokou 运动函数哲学)\n- https://zh.wikipedia.org/zh-hans/符卡 (符卡系统)\n- https://touhou8.thwiki.cc/index.php?edition-view-1281-1.html= (东方全弹型介绍与判定分析)\n- https://maribelhearn.com/faq/jargon (东方社区术语与子弹类型)\n- https://wiki.maribelhearn.com/wiki/Beginner_Guide (躲避策略入门:微/宏闪避、引弹、安全点)\n- https://www.slynyrd.com/blog/2020/12/14/pixelblog-31-shmup-sprite-design (像素弹幕设计)\n- https://www.gamedeveloper.com/design/video-game-boss-design-for-shmups (STG Boss 设计)\n- https://shmups.wiki/library/CAVE (CAVE 公司与其游戏)\n- https://www.timeextension.com/features/cave-story-the-history-of-donpachi-the-shmup-series-that-changed-everything (DonPachi 历史)\n- https://richardschupp.wordpress.com/tag/the-zen-of-the-shmup (Cave 弹幕风格对比)\n- https://www.forgottenworlds.net/bullet-hell-danmaku (Danmaku Unlimited 3 访谈)\n- https://github.com/nickschuetz/o3de-diorama/blob/main/Docs/howto/24-bullet-patterns.md (发射器实现与参数)\n- https://shmups.wiki/library/Boghog%27s_bullet_hell_shmup_101 (bullet hell 设计 101)\n- https://www.youtube.com/watch?v=ArZRZSYICLo (SHMUP Workshop 03 弹幕模式设计)\n- https://www.youtube.com/watch?v=zEPgFaIpa6o (Boss 设计 Week 25:螺旋/双螺旋实现)\n- https://www.youtube.com/watch?v=To5rOl6pn08 (Boss 战设计:攻击前摇、防龟缩)\n- https://tedlim-65557.medium.com/day-49-bullet-hell-pattern-2d-space-shooter-series-c91e4eccad7c (sin/cos 扇面数学)\n- https://www.summerengine.com/ai-bullet-hell-maker (判定点/聚焦/擦弹/密度调参)\n\n*报告完*"}, "ts": 1787459605714}, {"type": "progress", "id": "call_221c64a46fc24b6eb696fcd8", "tool": "write_file", "status": "completed", "args": {"file_path": "research/bullet_patterns/bullet_pattern_research.md", "content": "# 弹幕射击游戏(STG / Bullet Hell)敌方弹幕模式调研报告\n\n> **调研目的**:为像素风格的弹幕射击游戏(STG / Bullet Hell)提供敌方弹幕(bullet pattern)设计的系统性参考。\n> **调研方式**:网络搜索 + 网页资料提取(来源见第 7 章)。\n> **调研时间**:2026-08-23\n> **交付目录**:`research/bullet_patterns/`\n\n---\n\n## 0. 摘要(TL;DR)\n\n- 弹幕(danmaku / 弾幕,字面义\"弹幕幕帘\",西方称 bullet hell / curtain fire)与普通 STG 的本质区别**不是子弹数量**,而是\"**整个屏幕都是弹幕的舞台**\"——大量子弹不是为了全部命中玩家,而是组成可观赏、可读、有图案(pattern)的\"幕帘\",玩家在其中寻找缝隙穿行。多数子弹在诞生之初就注定打不到玩家(Sparen's Danmaku Design Studio, Guide A2)。\n- 经典弹幕模式可用\"**规律 + 微扰**\"统一描述:先排布几何图案(环形、螺旋、扇形、直线、激光、网格等),再叠加少量可控随机(角度/速度抖动),并始终**以\"设计缝隙\"为核心**,而不是\"设计密度\"。\n- Boss 战的核心设计杠杆:**阶段(Phase/符卡)转换、节奏(轻/重交替与紧张-释放)、密度控制(难度曲线)、安全路径/安全点(safe zone/safespot/routing)、公平性信号(预警 telegraph)**。\n- 实现上只靠 5 个基础参数即可组合出绝大多数模式:**发射角度、子弹数量、发射间隔、子弹速度、加速度(角速度)**;曲线弹幕依赖角速度转向、极坐标/参数方程(如螺旋 `r=a·t, θ=b·t`)、贝塞尔曲线或正弦扰动。\n- 像素风格下,弹幕可读性(readability)压倒一切:**高饱和颜色 + 描边(尤其双层描边)+ 闪烁/呼吸动画 + 明确的子弹形状语义 + 绘制层级(敌方子弹永远最上层)**;并让判定(hitbox)远小于视觉尺寸。\n\n---\n\n## 1. 背景认知:弹幕射击与普通 STG 的区别\n\n| 维度 | 普通 STG | 弹幕射击(Bullet Hell) |\n|---|---|---|\n| 子弹目的 | 命中玩家 | 大量子弹作\"装饰 + 制造缝隙谜题\",很多子弹故意不打玩家 |\n| 屏幕利用 | 子弹从上方来袭 | 全屏都是舞台,子弹可从任何方向/任何规律出现 |\n| 判定 | 机体整体判定 | 微型判定点(hitbox),东方等游戏中判定远小于机绘大小 |\n| 玩家速度 | 较快 | 有\"低速聚焦模式\"(focus/slow mode)用于精确微调 |\n| 美学 | 战场感 | \"弹幕舞蹈\",图案本身有独立观赏价值 |\n\n关键概念:\n\n- **幕帘火(Curtain fire)**:'curtain fire'精确描述了弹幕的本质——用弹幕填满一片空间形成\"幕帘\",玩家面对的是\"图案\",而不是\"几发子弹\"(Sparen Guide A2)。\n- **判定点(Hitbox)**:子弹只有碰到自机中心的微小判定点才算命中。Cave 的《虫姬后传》《怒首领蜂大复活》甚至有 1 像素判定;DoDonPachi 系列子弹判定通常只占子弹直径约 20%(来源:TimeExtension CAVE 历史长文、Shmups Wiki CAVE 词条)。\n- **擦弹(Graze)**:子弹掠过判定点外围的\"擦弹判定圈\"得分,鼓励玩家贴着子弹走(Summer Engine、maribelhearn 术语表)。\n- **心理过滤(Mental filtering)**:高手玩家会自动忽略大量\"注定打不中自己\"的子弹(例如环形弹幕中飞向两侧/上方的子弹),只对逼近自己的弹道做出反应——这是弹幕\"装饰性子弹\"能成立的心理学基础(Sparen Guide A2)。\n\n---\n\n## 2. 经典弹幕模式分类\n\n> 本节以任务要求的 9 类为主干(2.1–2.9),然后在 2.10 补充调研中发现的其它常用模式。每个模式给出:**名称 / 视觉描述 / 数学与实现要点 / 经典游戏例子 / 像素风格设计建议**。\n> 注:任务要求的 9 类与社区常用分类(如 note.com 归纳的 15 种模式)并非一一对应,本报告将两类分类体系做了映射与合并。\n> 经典例子部分,凡未在本轮调研资料中明确出现的,均标注为\"常识(通用认知)\",置信度说明见第 7 章。\n\n### 2.1 环形弹幕(Ring / Circle Burst,日语\"轮弾/円形弾\")\n\n- **视觉描述**:从中心点向 360° 均匀放射一圈子弹,呈涟漪/烟花/魔法阵状。变化包括:扩展环(从小半径环向外扩)、收缩环、多重同心环、旋转环、分裂环(飞到中途爆成更多子弹)。(note.com 2-8 Rings)\n- **数学与实现要点**:\n ```\n n = 子弹数; base = 基准角\n for i in 0..n-1:\n angle = base + i * (360° / n)\n vx = speed * cos(angle); vy = speed * sin(angle)\n ```\n 若每帧/每次发射让 `base` 增加固定角,环就\"旋转/缭乱\"起来。(o3de-diorama 文档:Ring 参数含 Count、Aim、Speed、Fire Rate、Spin Per Shot;Ted Lim / GameMaker 论坛同款公式)\n- **经典游戏例子**:东方系列几乎所有 Boss 都有环弹(常识);琪露诺的冰符「Icicle Fall -Easy-」的冰柱环是知名的入门环弹(Sparen Guide A2 以其为例讲述固定角);环形常用作 Boss 战开场或\"轻阶段\"的通用压迫弹(note.com 入门 Boss 组合)。\n- **像素风格设计建议**:环弹数量多且对称,适合用**小尺寸圆形弹**(6–8px)保证低视觉占用;用\"带圈的小玉\"(外圈描边)区分装饰环和危险环;旋转环可给子弹加 1–2 帧的旋转动画增强\"轮转感\"。\n\n### 2.2 螺旋弹幕(Spiral)\n\n- **视觉描述**:发射角连续旋转,子弹留下螺旋尾迹,像银河/风车/玫瑰。变体:单螺旋、多螺旋、顺逆时针双螺旋交叉、不同色相/速度的螺旋。(note.com 2-2 Spiral)\n- **数学与实现要点**:\n - 离散式:每次发射一个环,环的基准角 += 每发旋转角(Spin Per Shot),即\"每发转一点\"(o3de-diorama)。\n - 参数方程(连续式):极坐标 `r = a·t`、`θ = b·t`,则 `x = cx + r·cos(θ)`,`y = cy + r·sin(θ)`(来源:Danmokou Tutorial 6 的螺旋示例 `polar(2*t, 80*t)`)。\n - 替代实现:让发射器父对象缓慢旋转(Ted Lim——\"空对象 + 3 个子发射点 + 旋转父对象即可做出螺旋\")。\n- **经典游戏例子**:螺旋是弹幕最经典的高性价比模式,\"低子弹数也能很华丽\"(note.com);东方各作螺旋遍地(常识),双反向螺旋常作中后期难度(YouTube Week 25 Boss 设计演示了\"顺+逆双螺旋\"Boss 阶段)。\n- **像素风格设计建议**:螺旋强调\"轨迹\",适合用**细长子弹(针弹/米弹/箭弹)**来勾勒弧线;或给圆形弹加方向性贴图(箭头形)让旋转方向可读(Sparen Guide A2 说明了\"有方向性的子弹图形\"对旋转/转向弹幕的可读性价值)。\n\n### 2.3 扇形弹幕(Fan / Wedge)\n\n- **视觉描述**:在一个方向张开成扇面。窄扇高压、宽扇适合场景演出;朝玩家发射时进攻性强(\"瞄准开火\"的观感),固定方向发射则可控、适合道中演出。(note.com 2-3 Fan)\n- **数学与实现要点**:\n ```\n n = 子弹数; spread = 扇形总张角; aim = 瞄准角\n step = spread / (n - 1)\n start = aim - spread / 2\n for i in 0..n-1:\n angle = start + i * step\n ```\n (来源:Unity 教程(Unity Discussions 搜索片段)与 Ted Lim 的扇面公式——\"startAngle = target - halfSpread / 2,endAngle = target + halfSpread/2,逐颗递增 step\")\n- **经典游戏例子**:几乎所有 STG 的追踪射击采用\"瞄准玩家的扇\"(aimed fan);东方道中妖精惯用(常识);DoDonPachi 等 Cave 游戏的\"concentrated fire\"即窄/快扇(来源:Zen of the SHMUP 对 Cave 的归类)。\n- **像素风格设计建议**:扇弹适合 7–11 颗一组的中型子弹(如 10px 小玉),发射瞬间用**同一色系**表示同一波;窄扇用暖色(红/橙)暗示高风险,宽装饰扇用冷色。\n\n### 2.4 直线弹幕(Line / Stream / Wall)\n\n- **视觉描述**:\n - **流弹(Stream)**:从一处连续射出单发子弹,形成一条密集弹流,玩家\"引弹\"时可把它带成一条可利用的空隙带(maribelhearn 术语:streaming / 引弹)。\n - **墙(Wall)**:同排/同列子弹连成不可穿越的\"墙\",迫使玩家整体绕过(宏闪避)或在墙隙中微闪避。Sparen Guide A3 的定义:\"墙 = 玩家无法从中间穿过的子弹群/编队\"。\n- **数学与实现要点**:连续发射(fire rate 控制密度)+ 固定方向;若每发角度做正弦微扰,直线流会变成\"S 形波流\"(Unity 论坛示例:0°→180° 递增、180°→360° 递减即正弦半波)。\n- **经典游戏例子**:东方\"针山/米弹雨\"类密集直线(常识);Sparen 用 Utsuho(地灵殿 阿空)的符卡组合说明微/宏闪避结合的动态弹幕(Sparen Guide A3)。\n- **像素风格设计建议**:直线弹适合**针弹/米弹/箭弹**(细长、方向明确);流弹用同色细弹,墙用同色+同速保证\"墙\"的视觉连续性;给子弹加方向性贴图可让玩家立即读出弹道(Sparen Guide A2)。\n\n### 2.5 随机散射(Random Spread)\n\n- **视觉描述**:子弹角度/速度在随机范围内散射,像火花、星尘、碎片。纯随机易显得\"无设计\"且不公平,优秀做法是给角度、速度、密度赋予\"范围与偏置\"(bias),即受控随机。(note.com 2-12 Particles;Sparen Guide A2 对随机角的负面评价)\n- **数学与实现要点**:\n - 在固定规律上叠加小随机:\"受控随机看起来更像弹幕\"(note.com 3-1):\n ```\n angle = base + i * even_angle + sin(t) * 波动幅度 # 规律性\n speed = base_speed + random(-0.2, 0.2) # 微扰\n ```\n - 随机角度也可用作\"种子角度\":例如连续发射环形弹时,每轮用一个随机初始角,避免盲区/避免每轮覆盖完全相同的路径(Sparen Guide A2)。\n- **经典游戏例子**:东方的\"小虫型符卡\"(《魔理沙的魔法书》分类,子弹细碎、颜色丰富,多为弱妖怪用,来源:Wikipedia 符卡)与妖精群随机弹(常识);Cave 的 Mushihimesama 强调\"更快、更集中\"的火力,其随机感更强(来源:Zen of the SHMUP / Reddit 讨论)。\n- **像素风格设计建议**:随机弹适合**点弹/星弹/米粒弹**等小尺寸,配合\"闪烁\"动画强调危险性;随机弹颜色可用亮白/黄等\"危险信号色\";注意与背景对比度(slynyrd)。\n\n### 2.6 追踪弹幕(Homing / Aimed)\n\n- **视觉描述**:\n - **瞄准弹(Aimed)**:开火瞬间朝玩家当前位置瞄准(可加扇形成\"瞄准扇/散弹\"),考验玩家\"引弹\"(misdirection)能力(note.com 2-4、maribelhearn 术语)。\n - **追踪弹(Homing)**:飞行中持续转向玩家。转向性能越弱越容易躲,追求\"稍微弯曲\"而非\"全程咬死\",反而更美观(note.com 2-13)。\n- **数学与实现要点**:\n ```\n desired = atan2(player.y - bullet.y, player.x - bullet.x)\n turn = clamp(desired - bullet.angle, -maxTurnRate*dt, +maxTurnRate*dt)\n bullet.angle += turn # 限速转向(turning performance)\n # 可选:加速度朝玩家、停顿后重新加速、分裂后重新锁定(note.com 2-13 变体)\n ```\n- **经典游戏例子**:瞄准弹是 Cave\"concentrated fire / tracking\"风格的基石(来源:SHMUP Workshop 03 YouTube——\"tracking and spread gates, 经典 CAVE 做法\");东方 Boss 的瞄准时间差/瞄准散弹(常识)。追踪弹在 DoDonPachi 的\"自爆弹\"(suicide bullets,击破敌人释放的追踪自机弹)中大量出现(来源:TimeExtension)。\n- **像素风格设计建议**:追踪弹要用**明显的方向性贴图**(箭头/小刀/蝴蝶等)且贴图随角度旋转,否则玩家读不出它在转弯(Sparen Guide A2:\"无方向性贴图的圆弹不传达转向\")。用发光/描边强调\"这只子弹会追我\"。\n\n### 2.7 反弹弹幕(Bounce / Ricochet)\n\n- **视觉描述**:子弹撞到屏幕边缘/墙壁后反弹继续飞行,轨迹呈折线。属于\"轨迹型\"弹幕中较少见的一类。\n- **数学与实现要点**:碰撞边缘时反射角度:`angle = π - angle`(左右边)或 `angle = -angle`(上下边),或对速度向量做分量取反;可加转数上限让子弹弹几次后消失。\n- **经典游戏例子**:相比东方式纵版弹幕(子弹通常出屏即消),反弹弹更常见于街机/横版与部分同人弹幕(如某些 Cave 之外的 STG);东方中近乎**没有**常规反弹弹(常识判断,未见调研资料佐证其广泛存在)。⚠️ 这属于\"相对少见\"的类型,若要在本项目中使用,建议作为特色武器或 Boss 特殊阶段引入,而非基础词库。\n- **像素风格设计建议**:反弹弹适合圆润的**圆形/椭弹**(避免方向性贴图在反弹瞬间的旋转跳变违和);反弹瞬间加 1–2 帧\"压缩-回弹\"动画或火花粒子,强化物理感;用预警或颜色提示\"它会弹\"。\n\n### 2.8 滞留弹幕(Static / Lingering)\n\n- **视觉描述**:子弹停留在场上形成持续障碍,或极慢速移动封锁区域。包括:静止弹墙、悬浮使魔、地面/空中持续存在的弹(laser 也可视为线状滞留)。作用是**区域封锁(area denial)**:封住一部分屏幕,为后续弹幕做铺垫,或堵住之前的逃逸路线(SHMUP Workshop 03:area denial patterns 的定义;Boghog:bullet sealing、ceasefire zone 等反挫败机制)。\n- **数学与实现要点**:寿命(lifespan)拉长 + 速度降到 ~0;或通过\"分裂条件=凝固\"实现\"飞行到某点后停住\"。可让滞留弹周期性闪烁(半透明 + 呼吸)提示\"仍在威胁中\"。\n- **经典游戏例子**:东方\"压迫型符卡\"(《魔理沙的魔法书》:限制自机移动范围的符卡,来源 Wikipedia,如灵梦的梦符「二重结界」以弹幕构成双重结界限制移动——B 站文章以它为例);激光墙封路也是常见形式(note.com 2-14,激光\"clearly block off parts of the screen\")。\n- **像素风格设计建议**:滞留弹必须与\"会动的危险弹\"在视觉上区分——建议**低频闪烁 + 半透明 + 固定描边**;或用\"发光的柱子/结界\"图形(如结界/棱镜形状)表示区域阻碍物。静止弹用冷色系(蓝/紫),活动弹用暖色系,形成语义分离。\n\n### 2.9 组合弹幕(Compound Patterns)\n\n- **视觉描述**:把多个模式叠加。例如\"螺旋铺满屏 + 瞄准弹逼玩家移动\",或\"展开环 + 中途分裂 + 激光堵路\"。(note.com 2-15 Composite)\n- **设计原则**(note.com 3-2 / 2-15):\n - 组合时**指定一个主模式**,其余为伴奏,避免信息过载。\n - 元素越多,越要依赖颜色编码、预警、缝隙设计来保证可读性。\n - 组合要形成\"分工\":背景压迫 + 前景逼迫(如中间难度组合:旋转全向弹 + 上方落雨 + 周期性瞄准弹)。\n- **经典游戏例子**:东方高阶符卡几乎都是组合(常识,如多层螺旋+分裂环+预警激光即 note.com 高级 Boss 推荐组合);阿空(地灵殿)的符卡是微/宏闪避结合的著名组合(Sparen Guide A3)。\n- **像素风格设计建议**:组合弹幕在像素风下最容易\"糊成一团\"。建议:每个模式用**不同主色**;不同模式用**不同子弹形状**(圆=压迫、针=直线、星=装饰/特殊);层与层之间拉开速度差,让玩家能分层读取。\n\n### 2.10 调研补充的常用模式\n\n以下模式来自 note.com 的《15 种经典弹幕模式》与 Sparen 指南,按需并入本项目词库:\n\n| 模式 | 视觉/玩法特征 | 要点 | 像素建议 |\n|---|---|---|---|\n| **波型/幕帘(Wave/Curtain)** | 正弦波排列的子弹带,像波浪/极光/瀑布,容易与 BGM 节奏联动 | 重点是\"缝隙的流动感\"而非子弹本身;`y = a·sin(ωt + φ)` 排布 | 用细长米弹/针弹沿正弦排布,同色系渐变 |\n| **网格(Grid)** | 横竖规则排列,钻石/晶体状,几何美且缝隙可读;纯网格易单调,加大小的速度差/局部缺口 | 强规律、易读、密度↑难度↑ | 用规则小圆弹 + 网格闪烁/错位动画 |\n| **花状(Floral)** | 对称花瓣排列(5/6/8 瓣),华丽,适合符卡演出 | 对称越高越精致;过度均匀会单调,周期性转相位 | 花瓣用两类颜色交替(瓣=亮、蕊=暗)强化图案 |\n| **星形/多边形(Star)** | 强调特定顶点(5/6/8 向)的星形放射 | 少弹星形也醒目,适合元素/性格表达 | 用星形贴图子弹 + 旋转动画 |\n| **交叉(Intersection)** | 多股弹流交叉如编织/光流;视觉美但缝隙易被切断 | 关注\"玩家可走的路径\"而非交点;调速度/密度/交叉角 | 两条交叉流用互补色(如青 vs 品红)|\n| **落雨(Rain)** | 自上而下倾泻,天然适合道中演出 | 全随机易不公平,保持一定规律美观 | 竖直方向子弹用垂直长条贴图或水滴形 |\n| **粒子(Particles)** | 火花/星尘式散落,适合爆炸、花瓣、魔法粒子、Boss 登场 | 给角度/速度/密度一个\"范围+偏置\" | 小尺寸 + 闪烁,可叠加在其他弹幕上做纹理 |\n| **激光(Laser)** | 线/带状攻击,视觉冲击强,可明确封路 | 发射前先给**细预警线(telegraph)**最公平;有固定/旋转/弯曲/网格激光 | 预警线细→粗的 2 帧过渡动画;激光主体用高亮+描边 |\n| **分裂弹(Split)** | 飞行中途/定时/到距离后爆成子弹(如 1→3),常伴随\"先停顿\"预警 | 分裂条件:时间/距离/位置;分裂后子弹可重新锁定玩家(note.com 2-13) | 母弹大而亮(告知\"会爆\"),子弹小一号;停顿帧加\"蓄力闪光\" |\n\n---\n\n## 3. Boss 战弹幕设计\n\n### 3.1 阶段转换与东方Project符卡系统(Spell Card)\n\n**东方Project 的符卡系统**(来源:Wikipedia《符卡》、百度百科、PIXNET 东方介绍):\n\n- **来源与规则**:符卡(Spell Card,スペルカード)由《东方红魔乡》首次引入(ZUN 自述为\"比其它系统更早面世\"而开发本作)。符卡规则 = \"给绝技命名并宣言\"的决斗规则:宣言、约定符卡张数、击破对方全部符卡即胜。\n- **敌方符卡流程**:\n 1. **非符(nonspell)**:Boss 的普通攻击,一般耐久条分格为单位;\n 2. **符卡宣言**:血量削到阈值时 Boss \"念符\"(宣言),画面切换为该角色专属 Spell Card 背景,进入符卡攻击;\n 3. **符卡红利(Spell Card Bonus, SCB)**:无 Miss 无 Bomb 击破符卡可获得额外分数,随时间递减;擦弹可增加红利;\n 4. **时间限制**:每张符卡有残余时间显示,超时 Boss 自动进入下一波(此时无法收取符卡)。\n- **符卡变体**:\n - **增强型符卡**:随血量削减,弹幕密度/速度逐渐增加,越到后面越难(强化难度的天然手段);\n - **时效型/时限型符卡**:耐久无法直接削减,玩家必须\"死守到时间结束\"才能收取(生存符卡 survival card;如《永夜抄》部分符卡);\n - **Last Spell / Last Word / Overdrive**:残机为零或特定条件下的最终符卡(Extra/隐藏挑战用)。\n- **难度变化**:同一符卡在 Easy/Normal 与 Hard/Lunatic 下常有**不同名字**(Higher 难度名字更华丽),弹幕排列与颜色也会变化(Wikipedia)。\n- **《魔理沙的魔法书》对符卡的分类**(Wikipedia):演剧型(重视觉效果、大量非瞄准装饰弹)、奴隶型(用使魔/人偶/式神攻击)、小虫型(细碎多彩、弱妖怪)、压迫型(限制自机移动范围)、兴奋剂型(强化自身)。\n\n**对本项目的启示**:阶段(Phase)不必按血量硬切,可以模仿\"非符→符卡宣言→符卡\"的节奏:普通阶段保持低密度教学,宣言瞬间清场 + 特效 + 显示符卡名,制造\"仪式感\";生存符卡(时限型)能复用已有图案、只改目标(熬过 X 秒),开发成本低、演出效果好。\n\n### 3.2 弹幕密度控制\n\n- **密度不是越多越好**:'curtain fire'不等于无限堆弹;密度阈值之后,可读性(readability)崩坏,玩家感到\"不公平\"而非\"华丽\"(note.com 3-2:设计缝隙而非密度)。\n- **难度曲线**:\n - 报告参考\"轻/重阶段交替\"(Danmaku Unlimited 3 采用东方式 light/heavy 交替:轻阶段让玩家喘息与移动,重阶段密集压迫,来源 Forgotten Worlds 采访);\n - 每个 Boss 阶段内\"缓慢升级\":起点是玩家已见过的简单变体,随后逐次加大子弹量/缩小缝隙/提高速度(SHMUP Workshop 03:slow escalation)。\n - 不同难度等级通过\"同一图案改密度/速度/名字\"来分层(东方难度差异,Wikipedia)。\n- **可控变量**(可做成运行时调参工具):子弹数、速度、发射间隔、扇形张角、环形偏转、随机种子、加层数。\n- **Cave 的 rank 系统**:根据玩家当前表现(残机/雷/击破率)动态调整弹幕强度——可选的高级机制(来源:TimeExtension;Boghog 亦建议用\"credit feed 降 rank\"来练习 Boss)。\n\n### 3.3 安全路径设计(Safe Zones / 缝隙 / 路线)\n\n弹幕的本质是\"缝隙谜题\",安全路径是设计对象而非巧合:\n\n- **微闪避(micrododging)**:在密集子弹的缝隙间小幅移动穿行(Sparen A3 / maribelhearn / Boghog);\n- **宏闪避(macrododging)**:对整个弹幕编队进行大幅度绕行、找到整块安全区(safe spot / safespot——\"内部完全不会被击中(或近于)的点/区域\",maribelhearn 术语);东方中 BOWAP、咲夜道中非符等是经典 safespot(maribelhearn Beginner Guide / jargon);\n- **引弹(streaming / misdirection)**:瞄准弹只有在玩家\"把弹流引到别处\"时才安全——设计上,持续的瞄准弹迫使玩家移动并制造\"下一波更难\"的位置压力(SHMUP Workshop 03:被满屏引导到尴尬位置会削弱后续应对;maribelhearn:misdirection 常在数秒空隙内完成);\n- **路线(routing)**:玩家在静态/半静态弹幕中规划的具体移动路径,是\"设计缝隙\"的最终产物;\n- **设计检查表**(综合 note.com 3-2 与 SHMUP Workshop 03):\n 1. 画图时刻意留下**可见的缝隙**(gap width > 判定点 + 子弹判定 + 误差余量);\n 2. 区分\"安全点型\"(原地不动即可)与\"移动型\"(需要持续引弹)两类安全路径,交替使用;\n 3. 用瞄准弹/区域封锁弹**主动关闭**上一轮的安全点,防止玩家蹲坑(area denial,SHMUP Workshop 03;以及\"anti-camping:避免玩家龟缩\"的 Boss 设计目标);\n 4. 每次重复图案时用随机种子旋转相位,避免出现固定盲区(Sparen A2)。\n\n### 3.4 时间限制与弹幕压力\n\n- **时限符卡**:上面已述(生存符卡)。在设计上,时限 = \"不需要 DPS 检验,纯粹考验躲避\",适合放在 Boss 战中段作为节奏变化点(东方文花帖/弹幕天邪鬼等衍生作品以\"时限+道具\"为核心玩法)。\n- **压力节奏(tension-release loop)**:\n - 每个波次设计\"入口压力→主压力→释放\"三段式:先预警(低压力、可读),再高压(核心躲避),最后 1–2 秒\"突然变简单\"给玩家胜利快感(Boss Up YouTube:survive 之后的那 1 秒喘息极具成瘾性);\n - 压力来源可以分层:视觉压力(满屏)、逻辑压力(瞄准)、时间压力(超时/残机消耗)。\n- **Boss 战的五个设计要素**(来源:Game Developer《Video Game Boss Design for Shmups》):\n 1. **难度 Difficulty**:首关 Boss 必须让\"认真玩的人\"能过;Boss 攻击应与关卡已有敌人/道具主题连贯(\"进化\"而非\"空降\");\n 2. **多样性 Variety**:Boss 血量条分段显示图案边界;同一段血内可循环多个攻击,且每次攻击要求不同的躲避/输出策略;\n 3. **时长 Length**:Boss 战时长与关卡时长成比例;中 Boss 不应比关底 Boss 长;把\"信息不对等的假 Boss → 真 Boss\"当一次性惊喜;\n 4. **回报 Pay-off**:Boss 战末尾(濒死前)往往\"倾泻所有弹幕\"制造最终高潮(Mushihimesama、ESPGaluda2、Ikaruga 第 3 章 Boss 都是例子);好回报 = 节奏铺垫 + 假危机;\n 5. **角色 Character**:爆炸方式、受击反馈、蓄力/宣言动画、音效都要符合角色性格——这是\"为什么这个 Boss 挡在这里\"的叙事答案。\n\n### 3.5 东方式 Boss 战结构参考(综合)\n\n1. 开战:非符 1(轻、教学、环/扇)\n2. 符卡宣言(换背景、念符名)→ 符卡 1(主题图案,时间限制,收取奖励)\n3. 非符 2(中压,引入瞄准/引弹)\n4. 符卡 2(组合图案,增强型:随血量变密)→ ……\n5. 濒死:Last Spell / 最终符卡(最强+最华丽)→ 消弹演出(击破瞬间子弹变道具)\n6. (挑战层)隐藏:Extra 时限符卡 / 弹幕天邪鬼式\"看似不可能\"组合\n\n---\n\n## 4. 数学原理与实现\n\n### 4.1 基础参数体系\n\n任何一个弹幕模式都可由以下参数组合生成(来源:note.com 第 4 章;o3de-diorama 参数表):\n\n| 参数 | 作用 | 备注 |\n|---|---|---|\n| 发射位置 | 敌中心/屏幕边缘/多炮塔 | 决定子弹出生点阵型 |\n| **发射角度** | 固定 / 旋转 / 瞄准 / 随机 | 最易出效果 |\n| 子弹数量 | 密度 | 环形=一圈数量、扇形=扇内数量 |\n| 发射间隔 | 节奏 | 决定\"流\"还是\"波\" |\n| 子弹速度 | 难度与观感 | 快=危险、慢=可读 |\n| 加速度 | 节奏与曲线 | 减速弹、加速弹 |\n| 角速度 | 螺旋、转向弹 | 曲线弹的核心 |\n| 寿命 | 消失时机 | 滞留弹=长寿命 |\n| 分裂条件 | 时间/距离/位置 | 分裂弹 |\n| 颜色/大小 | 可读性与美观 | 颜色=属性编码 |\n\n### 4.2 角度与排列公式(常用)\n\n- **环形**:`angle_i = base + i·360/n`,`v = speed·(cos, sin)`(2.1 节)\n- **扇形**:`angle_i = aim - spread/2 + i·spread/(n-1)`(2.3 节)\n- **瞄准**:`angle = atan2(py - ey, px - ex) + 偏移`(瞄准扇 = 在其两侧均匀分布)\n- **网格**:对 `(i,j)` 行列给固定 x/y 间距\n- **正弦波**:`x 或 y += A·sin(ω·t + φ)`(2.10 波型)\n- **花瓣/星形**:`angle_i = base + i·(360/petal) + 相位`,再由花瓣内多颗子弹构成瓣形\n- **规律+微扰**:`angle = base + i·even + sin(t)·fluct`,`speed = base + random(-δ,δ)`(note.com 3-1)\n- **周期循环**:如\"每 60 帧一波大浪、每 15 帧小弹、每 4 发反转角度\"制造音乐性节奏(note.com 3-4)\n\n### 4.3 速度变化(加速/减速弹幕)\n\nDanmokou(DMK 引擎)归纳的常见运动(来源:Danmokou Tutorial 6):\n\n1. 恒定速度直线(默认)\n2. **直线加速**(`v(t) = v0 + a·t`,可正可负:赶人弹/诱导弹)\n3. 速度在慢/快之间周期切换\n4. 两位置间往返\n5. 极坐标运动(径向+角速度)\n6. 波浪线(squiggly)\n7. 旋转运动方向(追踪/转向)\n8. 相对另一运动物体运动(随从弹/母舰子机)\n9. 任意参数方程轨迹\n\n工程提示:DMK 把运动建模为**函数**(`rvelocity(px(3 + sine(4, 0.6, t)))`),而不是\"速度/加速度两个标量\",从而任意轨迹即插即用;其子弹更新循环一次函数调用即可支撑 10 万以上子弹 @4K 120FPS(DMK 官方数据)。\n\n### 4.4 曲线弹幕(转向 / 极坐标 / 贝塞尔)\n\n- **限速转向(追踪弹)**:每帧把朝向转向上限内的目标方向(2.6 节公式);\"转向弱一点更好躲也更好看\"(note.com 2-13)。\n- **极坐标螺旋**:`r(t)=a·t, θ(t)=b·t` → 直角坐标 `x = cx + r·cosθ, y = cy + r·sinθ`(DMK 示例 `polar(2*t, 80*t)`)。注意极坐标绕圈时转速均匀性需要弧长参数化,DMK 作者自述\"没有闭式解,需迭代求解\"。\n- **贝塞尔曲线(弯曲弹)**:二次贝塞尔 `B(t) = (1-t)²·P0 + 2(1-t)·t·P1 + t²·P2`,每帧采样 t∈[0,1] 作为下一位置(通用图形学做法,非本次调研单一来源;用于\"弧形弹道/水漂弹\")。三次贝塞尔 `C(t)` 用于更复杂的 S 形弹道。\n- **正弦扰动**:在固定方向上叠加正弦横向偏移,成为\"S 形\"弹(Unity 论坛实现示例)。\n- **角度退化/曲线激光**:东方中存在\"准激光\"(弧形激光、曲线灵弹),判定比直线激光大(thwiki 弹型介绍)——曲线弹道要么给足预警,要么减小判定。\n\n### 4.5 性能实现建议\n\n- **对象池(object pool)**:固定容量池 + 硬上限,防止无限生成(o3de-diorama 的 `Max Bullets` 硬上限设计)。\n- **批量渲染**:同一纹理的整组子弹一次 draw call(sprite batch / 合批)。\n- **碰撞**:每颗活子弹对目标碰撞层做一次重叠查询,目标层只放玩家/护盾几个碰撞体,几百颗子弹也便宜(o3de-diorama)。\n- **功能分层**:发射器(emitter)只管几何与碰撞,伤害/计分留在游戏侧(o3de-diorama 的分工建议)。\n\n---\n\n## 5. 像素风格下的弹幕视觉设计\n\n### 5.1 子弹形状库\n\n**核心原则**:'shmup 最核心的是弹幕的可读性(visibility)——在任何背景下都能被读出'(slynyrd Pixelblog 31)。形状即语义:**形状要匹配行为**(Sparen Guide A2 / Pixelblog 32:箭形弹配直线飞行才合理;追踪弹要旋转指向的运动方向)。\n\n**东方参考形状清单**(来源:thwiki《东方全弹型介绍与中弹判定分析》、maribelhearn 子弹类型表、Steam Touhou Bullets Model Pack):\n\n| 类别 | 形状 | 用途/特点 | 像素建议 |\n|---|---|---|---|\n| 圆形系 | 小玉(带圈/不带圈)、中玉、大玉(空心) | 通用基础弹;大玉实际判定仅中心空洞 | 6–10px 圆 + 描边;大玉用\"中空环\"贴图配透明中心 |\n| 粒状 | 点弹、米弹 | 点弹最小(<判定点),米弹为最高发弹量弹型之一 | 3–4px 点、8×4 米粒;米弹风速后有变短/判定变大差异 |\n| 尖形 | 针弹/箭弹/晶弹 | 速度感、方向感最强 | 长 8–14px 的三角/箭头,尖端高亮 |\n| 刀剑形 | 刀弹、剑弹、苦无 | 角色辨识度高(如咲夜/蕾米) | 剑身+尖端高光;前端无判定所以略细 |\n| 星光形 | 星弹(大/小)、光弹 | 华丽、魔法感;光弹判定偏大 | 4 角/5 角星 + 旋转动画 |\n| 特殊形 | 蝶弹、心弹、音符弹、钱弹、鳞弹(带\"翼\") | 角色主题、装饰 | 2 帧扇翅/跳动动画;鳞弹判定仅中心点 |\n| 火焰/流体 | 炎弹、水滴/滴弹 | 不规则 | 2–3 帧沸腾动画,\"躲前端\"语义 |\n| 激光 | 线段激光/射线激光、弧形激光 | 封路、视觉冲击 | 预警线(细)→ 实体(粗)2 帧过渡;线身描边 |\n\n**东方判定参考**(thwiki):多数弹\"判定 < 视觉\":大玉只有中心空洞有效、鳞弹只有中心点、剑弹前端无判定、激光靠预警线判定;当\"准激光/粥弹/核弹\"等判定欺诈弹出现时,需要玩家另行学习——像素风下**不要滥用判定欺诈**,默认\"所见即所判\"更公平。\n\n### 5.2 颜色编码\n\n- **基础原则**:子弹是屏幕上最鲜艳的元素;用高饱和色与背景拉开对比;颜色可传达属性/机制语义(slynyrd;note.com 3-3)。\n- **按属性/危险度编码**示例:\n - 红/橙 = 高速、致命、普通攻击;\n - 蓝/青 = 特殊判定、特殊移动(如反弹/曲线/激光);\n - 紫/白 = 装饰弹、非致命、演出用;\n - 绿 = 通常用于玩家/友方,避免敌方子弹大量用绿(语义混淆)。\n - (以上为常见实践惯例,属综合常识,非单一文献结论。)\n- **注意**:颜色要与背景/特效区分(note.com 3-3);考虑红绿色盲——**不要只靠红/绿区分要害**,同时用形状/大小/闪烁区分。\n- **同波同色**:同一次发射的子弹用同一色系,方便玩家把\"一波子弹\"当整体读(note.com 3-3:子弹类型或危险度不同则换色)。\n\n### 5.3 子弹大小与可躲避性\n\n- **判定点 vs 视觉**:自机 hitbox 远小于机绘(Cave 1px hitbox、DoDonPachi 子弹判定约直径 20%,来源 TimeExtension/Shmups Wiki);聚焦模式时在判定点处显示小红点让玩家能\"穿缝\"。\n- **子弹尺寸**:越大越可见但占屏;太小(<判定点)会\"消失\"且威胁感弱。建议子弹视觉 6–16px 常见、点弹 3–4px、激光不限长(slynyrd:子弹应大小多样,通常越大伤害越高)。\n- **缝隙设计**:安全缝隙宽度 = 玩家判定 + 子弹判定 + 玩家操作误差(微闪避用低速聚焦移动保证精度);设计时给缝隙留 ≥2–3px 冗余(工程经验法则)。\n- **密度 vs 大小**:子弹越小越能密(给留出视觉通道);同屏密度高时,小弹+弱判定(空心大玉)是\"看起来吓人、实际可穿\"的经典手法(thwiki 大玉示例)。\n\n### 5.4 发光/粒子效果在像素风格中的处理\n\n- **描边(outline)**:几乎必备,最好**双层描边**(亮色外圈+暗色内圈)以保证任何背景下可读;pixel 风格常用白描边与其它精灵(深描边)区分(slynyrd)。\n- **闪烁/双帧动画**:两帧交替即可做出\"呼吸/危险脉冲\";对比度越大越激烈,但太强会难以追踪快速弹(slynyrd)。\n- **发光**:像素风发光 = 亮色核心 + 1 层半透明同色光晕(加色混合 additive)或\"外扩 1px 亮描边\";避免真实 bloom 破坏像素感。\n- **粒子**:爆炸/火花/花瓣用\"范围+偏置\"的受控随机(note.com 2-12);粒子可叠加在弹幕上做纹理而不是独立威胁。\n- **脉冲缩放**:呼吸/脉动(expanding-contracting)可让呆滞的圆弹\"活起来\"(slynyrd 的 rotation/motion 建议)。\n- **消弹特效**:Boss 符卡击破瞬间,全屏子弹转为道具/星点,是东方色的标志性演出(Touhou Wiki Items:子弹在 Boss 攻击结束/未超时被打掉时转为星道具;消弹 cancel 亦为计分要素,maribelhearn 术语)。\n\n### 5.5 弹幕层级的视觉优先级\n\n绘制顺序(从底层到顶层,工程惯例 + Reddit shmupdev 设计 101 摘要:\"敌方子弹永远画在其它对象之上\"):\n\n1. 背景/场景层\n2. 地面敌人/可破坏物\n3. 道具、点数\n4. 玩家射击、爆炸特效(半透明)\n5. **敌方子弹(最高优先级之一,必须覆盖玩家机绘)**\n6. 玩家机绘 + 判定点指示(聚焦时)\n7. UI(血量/符卡名/时间)\n\n理由:玩家需要\"先读弹,再读自己\";若子弹被机绘/特效遮挡,就会产生\"判定杀(clipdeath)\"的挫败感(maribelhearn 术语)。\n\n### 5.6 像素风格弹幕设计清单(落地用)\n\n- [ ] 每种模式指定**1 个主色 + 1 种子弹形状**(勿两种都在变);\n- [ ] 危险弹用暖色+闪光,装饰弹用冷色/暗色调;\n- [ ] 所有敌方子弹带描边(建议双层),且在玩家机绘之上绘制;\n- [ ] 直线/追踪/曲线弹使用**方向性贴图**(箭头/针/刀)并随角度旋转;\n- [ ] 预警:激光先细线→粗线;分裂弹先停顿+蓄力闪光;大威力攻击让 Boss 本体发光(note.com 3-5);\n- [ ] 判定 < 视觉:默认简化判定(圆/椭圆),为\"大玉/鳞弹\"这类特殊判定做贴图注释(空心=可穿);\n- [ ] 像素分辨率建议在 320×180~640×360 区间定基准(slynyrd 建议 480×270),保证单个子弹仍有足够像素表达细节;\n- [ ] 每张符卡/阶段限定子弹色彩数(建议 2–3 色),避免像素噪点化。\n\n---\n\n## 6. 对本项目(像素风弹幕游戏)的落地建议汇总\n\n1. **词库起步**:环形 / 螺旋 / 扇形 / 直线(流+墙)/ 瞄准扇 / 受控随机 / 分裂弹 / 激光(带预警)/ 滞留结界,共 9 个基础模式,先用\"参数化发射器\"(Count/Aim/Spread/Spin/Speed/FireRate/Lifetime)实现(参照 o3de-diorama 的参数表),Boss 脚本只做\"模式序列 + 转场\",成本最低。\n2. **难度曲线**:按\"非符(轻)→ 符卡(重)→ 非符 → 符卡 …\"排布;每张符卡 = 1 主题图案 + 增强型变密 + 时限生存变体(一套图案三种玩法)。\n3. **公平性**:所有危险性一定要有预警(telegraph);缝隙 > 判定 + 冗余;颜色+形状双通道编码。\n4. **像素视觉**:双层描边 + 双帧闪烁 + 加色发光小光晕 + 同波同色 2–3 色限制 + 子弹层级最高。\n5. **性能**:对象池 + 合批 + 简化碰撞层(目标只放玩家/护盾),确保几百到几千颗子弹稳定 60FPS。\n\n---\n\n## 7. 信息来源与置信度说明\n\n按信息诚实原则,对所有关键结论标注来源与置信度:\n\n**(A)本轮调研直接引用的网页来源(置信度高,可复核):**\n\n1. npaka,《A Summary of 15 Beautiful Bullet Hell Patterns in Danmaku Shooters》(note.com)——15 种模式分类、组合配方、参数与设计 tips:https://note.com/npaka/n/n5d38b7d84173?hl=en\n2. Sparen's Danmaku Design Studio,Guide A2(角度类型、方向性子弹、心理过滤、danmaku vs 普通 STG)、Guide A3(墙的定义、微/宏闪避、Utsuho 例子):https://sparen.github.io/ph3tutorials/ddsga2.html 、ddsga3.html\n3. Danmokou(DMK 引擎)Tutorial 6(函数式运动系统、极坐标螺旋公式、性能数据、贝塞尔/参数方程讨论):https://dmk.bagoum.com/docs/articles/t06.html\n4. Wikipedia《符卡》(符卡规则、宣言、红利、时效/增强型、Last Spell/Last Word/Overdrive、难度差异、魔理沙魔法书分类):https://zh.wikipedia.org/zh-hans/符卡\n5. thwiki/东方吧Wiki《东方全弹型介绍与中弹判定分析》(小玉/米弹/点弹/大玉/光弹/针弹/鳞弹/剑弹/炎弹/激光/核弹/粥弹及判定细则):https://touhou8.thwiki.cc/index.php?edition-view-1281-1.html=\n6. maribelhearn 《Touhou Community Jargon》(子弹类型表、micro/macro dodge、safespot、streaming、misdirection、routing、cancel、clipdeath 等术语):https://maribelhearn.com/faq/jargon(含中文版)\n7. maribelhearn Beginner Guide(微/宏闪避、流弹引弹、safespot 举例 BOWAP 等):https://wiki.maribelhearn.com/wiki/Beginner_Guide\n8. slynyrd Pixelblog 31《Shmup Design Part 1》(像素子弹设计:颜色/大小/形状/描边/闪烁/旋转、分辨率建议);Pixelblog 32(外观与行为匹配):https://www.slynyrd.com/blog/2020/12/14/pixelblog-31-shmup-sprite-design\n9. Game Developer《Video Game Boss Design For Shmups》(Boss 五要素:难度/多样性/时长/回报/角色;健康条分段;Cave 例子):https://www.gamedeveloper.com/design/video-game-boss-design-for-shmups\n10. SHMUP Workshop 03《Bullet Pattern Design》(模式角色:警告/位移/区域封锁/最终引导;slow escalation;微宏闪避;CAVE tracking 做法;Boss 设计目标):YouTube ArZRZSYICLo\n11. TimeExtension《CAVE Story: The History of DonPachi》(命中率 20% 判定、自爆弹、rank 系统、1px hitbox);Shmups Wiki《CAVE》词条(1px 判定、游戏清单):https://www.timeextension.com/features/cave-story-the-history-of-donpachi-the-shmup-series-that-changed-everything\n12. Forgotten Worlds《A guide to Danmaku Unlimited 3》(脚本化弹幕、Touhou 式轻/重阶段交替):https://www.forgottenworlds.net/bullet-hell-danmaku\n13. Zen of the SHMUP(DonPachi 系列=图案+记忆、Mushihimesama=快速集中火、Cave 组合):https://richardschupp.wordpress.com/tag/the-zen-of-the-shmup\n14. o3de-diorama《24-bullet-patterns.md》(Ring/Fan/Spiral 参数表、对象池、合批、碰撞层设计):https://github.com/nickschuetz/o3de-diorama/blob/main/Docs/howto/24-bullet-patterns.md\n15. Boghog's bullet hell shmup 101(bullet sealing、micro/macro dodge 补充):https://shmups.wiki/library/Boghog%27s_bullet_hell_shmup_101\n16. Reddit r/shmupdev《BULLET HELL SHMUP DESIGN 101》(\"敌方子弹永远绘制在其他对象之上\"等原则,仅经搜索摘要获取,置信度中):https://www.reddit.com/r/shmupdev/comments/13w730k/\n17. 其它:Summer Engine(判定点/聚焦/擦弹术语)、Touhou Wiki Items(消弹转星道具)、Steam Touhou Bullets Model Pack(子弹形状清单)、Ted Lim《Day 49》(sin/cos 扇面公式)等。\n\n**(B)置信度说明:**\n\n- 上述 (A) 列来源中的具体论断:**我很确定**它们出自对应来源(可直接复核)。\n- \"经典游戏例子\"中标注为\"常识\"的条目(如\"东方各作螺旋遍地\"\"雅雅…\"),来自模型通用知识,**没有在本轮调研中逐条核实**,读者如需引用请自行在对应游戏攻略中确认。\n- \"像素建议\"\"设计检查表\"\"落地建议\"等小节为**基于上述来源的综合工程建议**(合理推断,非文献原文),置信度中上,请结合游戏实测调整。\n- 反弹弹(2.7)在东方系纵版弹幕中近乎缺席是**常识判断**;调研资料中未找到专门文献,如要使用建议先做原型验证。\n\n---\n\n## 附录 A:参考链接汇总\n\n- https://note.com/npaka/n/n5d38b7d84173?hl=en (15 种弹幕模式)\n- https://sparen.github.io/ph3tutorials/ddsga2.html / ddsga3.html (弹幕设计工作室指南)\n- https://dmk.bagoum.com/docs/articles/t06.html (Danmokou 运动函数哲学)\n- https://zh.wikipedia.org/zh-hans/符卡 (符卡系统)\n- https://touhou8.thwiki.cc/index.php?edition-view-1281-1.html= (东方全弹型介绍与判定分析)\n- https://maribelhearn.com/faq/jargon (东方社区术语与子弹类型)\n- https://wiki.maribelhearn.com/wiki/Beginner_Guide (躲避策略入门:微/宏闪避、引弹、安全点)\n- https://www.slynyrd.com/blog/2020/12/14/pixelblog-31-shmup-sprite-design (像素弹幕设计)\n- https://www.gamedeveloper.com/design/video-game-boss-design-for-shmups (STG Boss 设计)\n- https://shmups.wiki/library/CAVE (CAVE 公司与其游戏)\n- https://www.timeextension.com/features/cave-story-the-history-of-donpachi-the-shmup-series-that-changed-everything (DonPachi 历史)\n- https://richardschupp.wordpress.com/tag/the-zen-of-the-shmup (Cave 弹幕风格对比)\n- https://www.forgottenworlds.net/bullet-hell-danmaku (Danmaku Unlimited 3 访谈)\n- https://github.com/nickschuetz/o3de-diorama/blob/main/Docs/howto/24-bullet-patterns.md (发射器实现与参数)\n- https://shmups.wiki/library/Boghog%27s_bullet_hell_shmup_101 (bullet hell 设计 101)\n- https://www.youtube.com/watch?v=ArZRZSYICLo (SHMUP Workshop 03 弹幕模式设计)\n- https://www.youtube.com/watch?v=zEPgFaIpa6o (Boss 设计 Week 25:螺旋/双螺旋实现)\n- https://www.youtube.com/watch?v=To5rOl6pn08 (Boss 战设计:攻击前摇、防龟缩)\n- https://tedlim-65557.medium.com/day-49-bullet-hell-pattern-2d-space-shooter-series-c91e4eccad7c (sin/cos 扇面数学)\n- https://www.summerengine.com/ai-bullet-hell-maker (判定点/聚焦/擦弹/密度调参)\n\n*报告完*"}, "ts": 1787459605774}, {"type": "progress", "id": "call_eea8998dbc584718a8560e5d", "tool": "run_command", "status": "running", "args": {"command": "ls -la /Users/demo/starraid/research/bullet_patterns/ && echo \"---\" && wc -l /Users/demo/starraid/research/bullet_patterns/bullet_pattern_research.md && echo \"---\" && head -20 /Users/demo/starraid/research/bullet_patterns/bullet_pattern_research.md", "timeout": 30}, "ts": 1787459610683}, {"type": "progress", "id": "call_eea8998dbc584718a8560e5d", "tool": "run_command", "status": "completed", "args": {"command": "ls -la /Users/demo/starraid/research/bullet_patterns/ && echo \"---\" && wc -l /Users/demo/starraid/research/bullet_patterns/bullet_pattern_research.md && echo \"---\" && head -20 /Users/demo/starraid/research/bullet_patterns/bullet_pattern_research.md", "timeout": 30}, "ts": 1787459610737}, {"type": "progress", "id": "call_5637635943d546359790678a", "tool": "read_file", "status": "running", "args": {"path": "research/bullet_patterns/bullet_pattern_research.md", "type": "search", "query": "雅雅"}, "ts": 1787459614924}, {"type": "progress", "id": "call_5637635943d546359790678a", "tool": "read_file", "status": "completed", "args": {"path": "research/bullet_patterns/bullet_pattern_research.md", "type": "search", "query": "雅雅"}, "ts": 1787459614929}, {"type": "progress", "id": "call_19b6b3039b6f452b9b75ab59", "tool": "edit_file", "status": "running", "args": {"file_path": "research/bullet_patterns/bullet_pattern_research.md", "replacements": [{"old_string": "\"经典游戏例子\"中标注为\"常识\"的条目(如\"东方各作螺旋遍地\"\"雅雅…\"),来自模型通用知识,**没有在本轮调研中逐条核实**,读者如需引用请自行在对应游戏攻略中确认。", "new_string": "\"经典游戏例子\"中标注为\"常识\"的条目(例如\"东方各作螺旋遍地\"\"芙兰朵露星弧破碎\"等),来自模型通用知识,**没有在本轮调研中逐条核实**,读者如需引用请自行在对应游戏攻略中确认。"}]}, "ts": 1787459618982}, {"type": "progress", "id": "call_19b6b3039b6f452b9b75ab59", "tool": "edit_file", "status": "completed", "args": {"file_path": "research/bullet_patterns/bullet_pattern_research.md", "replacements": [{"old_string": "\"经典游戏例子\"中标注为\"常识\"的条目(如\"东方各作螺旋遍地\"\"雅雅…\"),来自模型通用知识,**没有在本轮调研中逐条核实**,读者如需引用请自行在对应游戏攻略中确认。", "new_string": "\"经典游戏例子\"中标注为\"常识\"的条目(例如\"东方各作螺旋遍地\"\"芙兰朵露星弧破碎\"等),来自模型通用知识,**没有在本轮调研中逐条核实**,读者如需引用请自行在对应游戏攻略中确认。"}]}, "ts": 1787459619034}, {"type": "progress", "id": "call_881806772c334794ba09e781", "tool": "todo_update_task", "status": "running", "args": {"completed": true, "task_indices": [5]}, "ts": 1787459622283}, {"type": "progress", "id": "call_881806772c334794ba09e781", "tool": "todo_update_task", "status": "completed", "args": {"completed": true, "task_indices": [5]}, "ts": 1787459622284}]}}