Sunmiss · 2004 · 游戏设计师
用系统思维构建可玩的体验。
让玩家在选择中感受自由· 在挑战中获得成就
好游戏的标准是什么?
心理学· 人类学· 设计学
4 架战机 · 13 种词条 · 7 关战役 — 竖版 Roguelike 飞机大战
用纯 JS + Canvas 从零搭建的竖版 Roguelike 飞机大战,零外部依赖。4 架战机各有独立攻击逻辑(直射/散射/炸弹/激光),13 种词条按 4 级稀有度加权随机出现,通过叠加组合产生差异化的 Build 体验。超频系统让击杀蓄能转化为 3 秒无敌爆发窗口,控制战斗的风险回报节奏。7 关战役星图从教学关逐步引入敌人机制,最终以三 Boss 连战收尾,完整体验约 30 分钟。
13 种词条分 4 级稀有度(普通 5 / 稀有 3 / 史诗 1 / 传说 0.65),击杀后从 3 张卡牌中选 1 张。词条可叠加(如射速最多叠 3 层),部分词条有协同——穿透满级后解锁闪电连锁,僚机词条之间互相增幅。每局随机出现顺序不同,玩家需要在"当前最优"和"为后续词条铺路"之间做决策。
两种模式定位不同:无尽模式面向刷分挑战,难度随分数自动攀升(每 500 分敌人更强、刷新更快);战役模式面向完整体验,7 关按 S 形星图排列,从教学关的单一敌人逐步引入到最终关的三 Boss 连战 + 全敌人混战。4 架战机(直射型/散射型/轰炸型/激光型)让同一关卡有完全不同的打法。
统一的未来科幻视觉语言:青色主色调贯穿 UI 与弹幕,发光边框和角括号装饰强化科技感,CRT 噪点滤镜和屏幕震动反馈增强打击感。粒子系统支持 6 种视觉通道(烟雾/碎片/核心/闪光/火花/光环),Boss 出场和击杀都有独立的屏幕特效。
在 800 粒子上限、多 Boss 弹幕的复杂场景下保持流畅操作手感。玩家碰撞箱设计为三角形而非矩形,匹配战机外形,让擦弹判定更公平合理。
ENEMY / BOSS / BUFF / CRAFT 四套注册表,统一接口、声明式扩展,新增敌人、词条或战机无需修改核心循环。
击杀累积能量 → 满值激活 → 射速翻倍 + 无敌 + 3 秒爆发窗口。高风险高回报的节奏控制核心。
S 形蛇行星图节点系统,从新兵试炼到三 Boss 终极决战,关卡进度通过 localStorage 持久化存储。
三档宝石(5/10/20 分)→ 爆发 → 下落 → 磁吸三阶段物理,配合增值、磁力、贪婪词条形成经济策略层。
| 单位 | 血量 | 分值 | 特性 |
|---|---|---|---|
| 基础机 | 1 | 5 | 直线下落 |
| 射手 | 2 | 10 | 悬停射击 |
| 突击 | 2 | 20 | 悬停冲刺 |
| 旋刃 | 3 | 30 | 扇形弹幕 |
| 幻影 | 3 | 40 | 瞄准射击+瞬移 |
| 独眼王 | 200 | — | 扫射/护盾/召唤 |
| 夜煞 | 240 | — | 激光/反弹护盾 |
| 冰邪王 | 200 | — | 冰锥/冰墙/漩涡 |
| 巨灵神 | 250 | — | 天降神雨/横扫/天罚 |
13 种词条中,射速/僚机/穿透三条线路最受欢迎,超频相关词条选取率偏低——说明"击杀蓄能"的节奏感还不够直观,后续可以增加能量获取的视觉反馈来提升选取意愿。
将玩家判定框从矩形改为三角形后,擦弹体验明显改善,玩家反馈"感觉更公平了"。这个经验可以推广到其他弹幕游戏。
美术素材由 AI 生成,风格一致性有提升空间;当前 33 个脚本文件通过全局变量串联,可引入模块打包器降低加载复杂度;无尽模式后期缺乏新机制引入,容易产生重复感。
设计目标:用 4 种战机覆盖弹幕射击的所有基础攻击模式,让不同类型玩家都有归属感。
| 战机 | 定位 | 风险/收益 | 目标玩家 |
|---|---|---|---|
| 紫色弹幕 | 通用型,无短板 | 低风险/稳定输出 | 新手、稳健型 |
| 苍穹 | 近战爆发,散射覆盖 | 高风险/高回报(射程 320px 限制) | 有操作的玩家 |
| 墨子号 | AOE 范围伤害,鼠标瞄准 | 中风险/高覆盖(唯一鼠标操作) | 喜欢 FPS 手感的玩家 |
| 赤虹 | 实时激光,穿透 + 无弹道延迟 | 中风险/持续输出 | 追求即时反馈的玩家 |
关键决策:赤虹的激光系统完全绕过了子弹系统——不是"发射子弹"而是"持续输出 DPS"。穿透 buff 对激光的效果从"多穿一个敌人"变为"加宽 6px/层"。这是在词条系统设计完成后才做的战机,但提前规划好了每个词条如何与激光交互。
散射的射程限制:参考散弹枪的"近距离高爆发"设定,加了 320px 射程限制。如果不限制,散射在远距离也能输出,会打破"高风险高回报"的核心定位。底层不支持伤害衰减,所以用"消失"代替"衰减"。
设计起点:最初只有几种弹幕射击常见词条(射速叠加、增加子弹数量等),后续通过测试逐步添加。
迭代过程:
被砍掉的词条:寒冰弹(减速效果破坏游戏节奏)、爆炸弹(与墨子号定位重叠且强度超标)。
核心问题:如何设计一个"奖励机制"让玩家主动进攻而不是躲在角落?
方案对比:
会导致玩家"等"而不是"打"
在生存系统中难以立足,鼓励挨打不合理
必须不断击杀才能积累能量,迫使玩家保持进攻节奏
超频 = 无敌 + 双倍射速:将无敌和爆发绑定,让玩家"无所顾虑地获得短暂爽感"——既满足输出效率,又消除"怕没输出环境"的顾虑。如果只有无敌,玩家可能还是保守;如果只有加速,玩家可能不敢冲。两者结合才是完整的"爽感体验"。
设计理念:3 个 Boss 的难度不是简单的线性递增,而是各有侧重的机制教学。
| Boss | 核心机制 | 教会玩家什么 |
|---|---|---|
| 独眼王 | 扫射 + 护盾 + 召唤 | 应对固定弹幕、学会利用 Boss 间隙输出、处理多目标 |
| 夜煞 | 追踪 + 扫射 + 弹幕墙 | 应对追踪弹幕的躲避策略、识别弹幕空隙 |
| 冰邪王 | 扫射 + 冰墙 + 冰霜弹 | 防御机制可以是攻击性的(冰墙阻挡 + 反伤)、环境弹幕应对 |
循环增强机制:无尽模式中 Boss HP 按 (1 + round × 0.5) 倍率增长,出场间隔从 500 分逐步增加到 2000 分。数值没有用 Excel 模拟,完全通过反复测试体验确定——约 2000 分时,如果没有合理词条搭配,玩家会开始感到吃力。
等级公式:Threshold(l) = 25l² + 75l + 50
| 等级 | 所需经验 | 特点 |
|---|---|---|
| 0→1 | 50 | 前期快速升级,快速获得第一个词条 |
| 1→2 | 150 | 仍然较快 |
| 2→3 | 300 | 开始放缓 |
| 3→4 | 500 | 与难度增长匹配 |
| 4→5 | 750 | 后期需要更多击杀 |
| 5→6 | 1050 | 与无尽模式难度深度匹配 |
为什么是二次函数:线性增长太单调,指数增长太快。二次函数实现"前期快、后期慢"的曲线,既满足"前期快速叠加词条增强战力"的需求,又与无尽模式的难度递增形成深度匹配。
灵感来源:泰拉瑞亚的套装效果——长时间未受伤会抵挡下一次伤害。
玩家反馈曲线:
如果重来:
最重要的教训:不能急功近利。事先做好数值模拟和系统演练,比事后调整更节约成本。
新窗口打开 · 键盘操控 · 按 Esc 暂停
节点探索 · 搜打撤循环 · 装备构筑 — 2D Roguelike 搜刮撤离游戏
基于 Unity 2D 构建的 Roguelike 搜打撤(Looter-Extractor)游戏,灵感融合《杀戮尖塔》的节点探索与《逃离塔科夫》的风险博弈。玩家进入程序化生成的节点地图,通过战斗、搜索、事件收集魂环、魂骨等装备,成功撤离保留战利品,死亡则失去一切。
搜打撤(Search-Fight-Extract)循环:进入地图 → 节点探索收集装备 → 抵达撤离点保留战利品。死亡时丢失本次所有未撤离物品,高风险高回报的决策驱动每一步行动。
ScriptableObject 驱动的全物品系统:9 种属性维度(生命/魂力/攻击/防御/速度/暴击/吸血等)、5 品质等级(白/黄/紫/黑/红)、6 类物品(武魂/魂环/魂骨/草药/消耗品/垃圾),支持装备词条随机生成与 Build 构筑。
每局随机生成 10-18 层节点地图,战斗/容器/事件/休息/撤离五种节点类型按权重分布,6 大地图区域 × 4 难度梯度,确保每次探索都是独特体验。
数据层(ScriptableObject 模板)→ 运行时层(ItemInstance / PlayerState)→ 逻辑层(Manager 系统)→ 节点解析层(Resolver)→ UI 层,各层职责单一、事件驱动解耦。
MapGenerator 基于 MapGenConfig 权重随机生成分层节点结构,每层 2-3 个节点,节点类型按战斗/容器/事件/休息/撤离权重分配,UIGameMap 动态渲染 ScrollView 节点图。
BattleResolver 基于攻防血公式逐回合计算伤害,胜利后通过 LootTable 加权随机生成战利品,失败触发强制撤离或死亡判定。
LootTable 定义每种敌人的掉落概率(Chance%)和数量范围(Min/Max),ItemGenerator 工厂方法创建带随机词条的 ItemInstance,品质越高权重越低。
EventResolver 提供 5 种随机遭遇(远古魂骨气息/毒雾陷阱/疗愈仙草/魂兽领域/先祖笔记),影响生命值与资源,增加探索的不确定性。
| 属性 | 类型 | 说明 |
|---|---|---|
| MaxHP | 基础 | 最大生命值 |
| MaxSoulPower | 基础 | 最大魂力值 |
| Attack | 攻击 | 基础攻击力 |
| AttackCoefficient | 攻击 | 攻击系数加成 |
| Defense | 防御 | 基础防御力 |
| Speed | 速度 | 行动速度 |
| DamageReduction | 防御 | 伤害减免 |
| CritChance | 攻击 | 暴击概率 |
| LifeSteal | 生存 | 生命偷取 |
| 节点 | 功能 | 风险 |
|---|---|---|
| 战斗节点 | 击败敌人获取掉落 | 高 |
| 容器节点 | 搜索宝箱获取物品 | 低 |
| 事件节点 | 随机遭遇影响 HP | 中 |
| 休息节点 | 恢复生命值 | 无 |
| 撤离节点 | 安全撤离保留战利品 | 无 |
所有物品、敌人、地图配置均通过 ScriptableObject 定义,策划可在 Inspector 中直接调整数值而无需修改代码,实现了数据与逻辑的彻底分离。
DataManager / PlayerManager / InventoryManager / RaidManager 各司其职,通过事件(OnStatsUpdated)实现 UI 解耦,新增系统无需修改核心循环。
当前战斗为自动结算,可引入交互式回合制战斗;节点间缺少路径连线渲染;存档未加密,存在作弊风险;可增加金币经济与商店系统。
AI 动漫角色聊天 · 沉浸式 Galgame 风格交互体验
从 Unity 桌面应用移植到 Web 的 AI 动漫角色聊天应用。用户选择动漫风格虚拟角色,通过 AI 驱动的流式对话进行沉浸式互动。完整实现了亲密度、情绪、向量记忆、动态场景生成等六大核心系统。
轮播式角色选择 + 全屏动态天空背景引擎(11 层叠加:天空渐变、星星、云海、神光、微尘、樱花飘落、暗角),每个角色独立主题色、立绘、语录,营造 Galgame 般的沉浸氛围。
基于 DeepSeek 流式输出的逐字符打字机效果(标点符号差异化延迟:逗号 120ms,句号 240ms,普通字 40ms),三套独立对话模式(陌生 / 成长 / 陪伴),让 AI 角色有真实的情感变化。
亲密度(-100 到 +100,10 个阶段)+ 情绪系统(4 种情绪 × 情绪系数影响亲密度),AI 通过结构化标签实时输出情感状态,让对话关系有可感知的深度变化。
LanceDB 本地向量库 + DashScope Embedding 实现 RAG 记忆检索;MiniMax API 根据亲密度阶段动态生成剧情场景,从冷淡试探到亲密互动,每次对话都能延续上下文。
DeepSeek SSE 流式透传 + 行级标签缓冲拦截,实时解析亲密度和情绪标签,避免 TCP 分片导致的 JSON 解析失败。
10 级关系阶段(敌视→依恋),情绪系数实时影响亲密度变化幅度,负面低强度强制降关系,实现有深度的角色情感模拟。
LanceDB 本地向量库 + DashScope 1024 维 Embedding,DeepSeek Function Calling 自动触发记忆检索,对话有长期记忆。
MiniMax API 根据亲密度阶段生成 3 个剧情场景,服务端校验防篡改,支持用户自定义场景描述。
| Provider | 用途 | 模式 |
|---|---|---|
| DeepSeek API | 对话生成 | SSE 流式 |
| MiniMax API | 剧情场景生成 | 非流式 |
| DashScope API | 向量 Embedding | 1024 维 |
| 情绪 | 亲密度系数 | 触发示例 |
|---|---|---|
| positive(开心) | ×1.3 | "谢谢"、"喜欢" |
| excited(兴奋) | ×1.4 | "太棒了"、"厉害" |
| calm(平静) | ×1.0 | 默认状态 |
| negative(难过) | ×0.5 | "滚"、"讨厌" |
系统性地将 Unity C# 类 1:1 映射到 React 组件 / JS 模块(ChatManager.cs → useChatManager.js 等),证明了跨技术栈迁移的可行性。
用 DeepSeek Function Calling 替代传统 RAG 流程,服务端预检查是否需要调用 search_memory 工具,再做流式请求,大幅简化了记忆系统架构。
对话历史目前仅存内存,刷新丢失,可引入持久化方案;角色图片 65 张全部本地加载,可考虑 CDN 分发和懒加载优化首屏性能。
内置 /admin 管理页面:可视化编辑角色配置(名称、立绘、语录、标签),支持图片上传,无需手动修改 JSON 文件。
完整的调试系统:实时查看 API 日志、亲密度变量、对话历史、记忆条目、场景生成记录,大幅缩短开发调试周期。
核心判断:当游戏的核心交互是"文字"时,选择一个为"文字"而生的技术栈,比选择一个为"游戏"而生的引擎更合理。
项目的核心体验是对话——用户与二次元角色之间的文字交流。游戏引擎(如 Unity)擅长物理模拟、3D 渲染、复杂状态机,但这些能力在这个项目中几乎用不到。反而引擎的引入会带来不必要的开发复杂度——UI 布局、文本渲染、网络请求在 Web 生态中天然成熟,在引擎中都需要额外适配。
Web 技术栈(Next.js + React)让我们能快速实现符合项目调性的视觉语言:毛玻璃质感、渐变天空、樱花粒子、打字机效果。CSS 的灵活性使得 UI 迭代速度远快于引擎中的 UI 系统。
设计目标:根据每项任务的特点选择最合适的模型,而非用一个模型做所有事。
| 任务 | 模型 | 选择理由 |
|---|---|---|
| 角色对话 | DeepSeek | 中文理解和推理能力强,能准确把握角色人格和情感细微差别 |
| 场景生成 | MiniMax-M2.7 | 响应速度快、成本低,避免在场景选择阶段流失用户耐心 |
| 向量嵌入 | DashScope v4 | 免费额度充足,1024 维向量支持中文语义检索 |
Tradeoff:多模型架构增加了系统复杂度(三套 API 调用、三种错误处理、三套超时策略),但每项任务获得了更优的性价比。用 DeepSeek 做场景生成成本会显著上升;用 MiniMax 做对话,角色人格一致性和情感表达会打折扣。
设计目标:让"关系成长"本身成为一种奖励——从疏远到熟悉到依恋,每一步都有重量。
初始值 -20:从疏远开始。高冷傲娇的爱弥丝初始亲密度为 -20,玩家需要主动打破隔阂,而不是一上来就被接纳。
不对称波动 [-2, +1]:破坏容易,建设难。正面最多 +1,负面最多 -2,反映现实中信任建立缓慢、破坏瞬间的规律。玩家需要持续真诚互动,而非靠一两句甜言蜜语拉满好感。
情绪联动:四维情绪模型(positive / negative / excited / calm)通过系数影响亲密度变化——开心时正面互动 ×1.3,难过时 ×0.5,兴奋时 ×1.4,情绪崩溃时强制 -2。同样的互动在不同情绪下产生不同效果,角色不再是"你说好话就涨好感"的简单机器。
反刷屏机制:连续 3 条以上相似消息触发衰减,系数降至 0.3,防止通过重复话术快速提升亲密度。
核心问题:每轮对话后自动提取记忆看似更"智能",但会带来成本和质量问题。
为什么是手动触发:自动提取会不可避免地录入噪声信息(闲聊、无意义寒暄),这些"垃圾记忆"导致向量检索返回无关结果,进而让 AI 产生幻觉。手动触发("保存记忆"按钮)把控制权交给用户,保证了记忆库的信噪比。
RAG 流程:对话历史 → DeepSeek 事实提取 → DashScope 向量嵌入 → LanceDB 存储。当 AI 判断用户提到了过去的事情时,通过 Function Calling 触发向量检索,将最相关的 3-5 条记忆注入上下文,让角色能"记住"用户之前说过的话。
设计目标:让对话有沉浸式的场景支撑,同时尊重不同用户的需求。
动态场景生成:进入聊天前,AI 可生成 3 个场景选项,每个包含旁白描述和角色开场白。场景根据当前亲密度动态调整风格——低亲密度时是偶遇和陌生环境,中亲密度时是日常场景和试探性互动,高亲密度时是亲密场景和暧昧氛围。
确认步骤的设计:场景选择 Modal 先询问"是否为你编织一段专属的相遇?",再展示场景卡片。这个确认步骤的价值在于:不是所有用户都想从场景开始。有些用户只想直接对话,强制生成场景会浪费时间并引入不必要的上下文。确认步骤让"快速聊天"和"沉浸式场景"两种需求共存。
设计目标:用视觉语言强化"恋爱/言情"的项目调性。
毛玻璃质感:大量使用 backdrop-filter: blur(12px) + 半透明白色背景。模糊的透光效果天然带有柔和、梦幻的气质,毛玻璃面板不会完全遮挡背景图,角色主题场景始终若隐若现地存在于 UI 后方,强化了"透过窗户看她"的视觉隐喻。
BackgroundEngine 三层景深:
| 层级 | 特征 | 设计意图 |
|---|---|---|
| 远景 | scale 小、有模糊、下落慢 | 营造空间纵深度 |
| 中景 | scale 中等、无模糊、下落中速 | 主视觉层,最常见的樱花形态 |
| 前景 | scale 大、有模糊、下落快 | 增强沉浸感,模拟"樱花从眼前飘过" |
不用 Canvas/WebGL:DOM + CSS 动画在 60 片樱花的粒子数量级下性能足够,且开发复杂度远低于 Canvas 方案。"够用且好看"比"技术上更先进"更重要。
设计目标:尊重不同用户的情感需求,提供差异化的体验入口。
| 模式 | 定位 | 亲密度 | 情绪 | 用户场景 |
|---|---|---|---|---|
| 陌生人 | 初次相遇 | 不追踪 | 不启用 | 体验角色的第一印象,感受"被冷淡对待"的真实感 |
| 成长 | 关系培养 | 全程追踪 | 完整启用 | 主线体验,从疏远到依恋的完整关系成长 |
| 陪伴者 | 深度羁绊 | 不追踪 | 不启用 | 不想付出培养成本,快速寻找情感慰藉 |
陪伴者模式的设计初衷:不是所有用户都有耐心从 -20 开始慢慢培养关系。有时候用户只是想找一个"已经很亲近的人"说说话。陪伴者模式跳过了关系成长的过程,直接进入亲密状态——这不是"偷懒",而是对不同情感需求的尊重。
核心风险:AI 驱动的对话最大的风险是角色"出戏"——突然跳出设定、说出不符合性格的话。
应对策略:
已知局限:角色提示词设定较多,导致行为在某些场景下过于刻板。过于详细的 Prompt 虽然提高了稳定性,但也限制了 AI 的自然表达空间。这是需要在"一致性"和"自然度"之间持续调优的平衡点。未来方向可能是:用更精简的核心人格 Prompt + 动态注入的亲密度行为指引,替代当前"一整块"的提示词。
角色选择界面
动态剧情生成
聊天界面 · 明星日鞠
聊天界面 · 早濑优香
终端日志输出
简单设计思路
"雪太大了,学校停课"
"寒假的早晨,睡醒发现满地白雪"
"天气很冷,但阳光明媚,天空蔚蓝"
"在庭院,街道玩耍"
"小伙伴在门口呼唤你一起玩"
"一个雪球向你袭来"
"街道两旁堆满雪人,有的生动华丽,有的像坟头"
"穿着厚厚的棉服,手冻得通红"
好像一下就带入了情景,这是文字带来的体验。如何通过美术,音乐营造氛围感?
"天气很冷"的体验怎么传达?
可能会想到,呼吸时会产生白气...冻得发抖...一道呼啸而来的寒风...
给游戏贴上什么样的标签呢
"怀旧" "治愈"
如何去丰富玩法?
打雪仗,两个人对丢雪球?
雪球制造,瞄准,蓄力,发射,雪球搓多了冻手怎么办?
道具,手套,冻手解决了,但是搓的雪球质量没有纯手搓的好,
在离谱一点"雪球制造机",玩法单一?
雪人变异,年兽出没...
数据驱动架构、注册表模式、声明式扩展
经济平衡、难度曲线、概率与成长公式
情绪节奏、手感打磨、反馈设计
人格建模、关系系统、程序化叙事
敌人配置、Boss 机制、节奏编排
快速从 0 到 1 做出可玩产品
用情绪系数、关系阶段等心理模型驱动系统设计
数值不写死在逻辑里,用公式和常量表控制
先定义感受,再反推机制
快速验证大于完美设计
游戏系统思维应用到 AI 产品、Unity 架构映射到 Web
一款融合 Roguelike 与暗黑刷宝玩法的动作 RPG。负责核心系统策划与数值设计,主导职业体系、装备经济、PVP/PVE 双模式框架的方案制定与落地推进,独立输出 GDD 文档 3 份、数值配置表 12 张。
设计 3 职业 × 3 天赋分支共 9 条 Build 路线,定义各分支的核心机制与定位差异(如战士"铁壁"偏坦克、"狂战"偏爆发),输出职业技能配置文档与数值表,其中战士系在内部测试中被 60% 测试者选为入门首选。
设计装备词条系统,将稀有度权重设为 5:3:1:0.65(普/稀/史/传),确保每 3 层关卡玩家能稳定获得 1 件史诗以上装备,维持刷宝正反馈节奏。规划套装效果联动,让 Build 构筑有明确的"毕业目标"。
设计 Roguelike 副本关卡结构,规划 5 类怪物行为模式与 3 个 Boss 机制,难度曲线按"前 3 层教学 → 中间过渡 → 最终 Boss 检验"三段式编排,确保玩家在每层关卡都有明确的战斗目标。
建立 PVP 独立数值框架(与 PVE 解耦),设计"战士克法师、法师克道士、道士克战士"的三角克制关系,输出 PVP 数值对照表,协调程序与 QA 完成 3 轮平衡性调优。
输出系统设计文档(GDD)3 份、数值配置表 12 张、原型流程图 6 张,与程序、美术、QA 共 4 个部门协作推进方案落地,平均每个系统从方案到落地迭代 2-3 轮。
27 届毕业生,主修大数据技术,具备数据结构、数据库、数据分析等专业基础,在校期间独立完成多个游戏设计与开发项目,具备跨学科实践能力。
* 游戏所在年份为第一次接触的时间,可能存在误差。很多游戏玩过但想不起来了。
← 左右滑动查看完整时间线 →
紫色更有韵味
苍穹号
墨子号
赤红号
独眼王
独眼王·动作帧
夜煞
夜煞·动作帧
冰邪王
冰邪王·动作帧
巨灵神
巨灵神·动作帧
基础机
射手
突击
旋刃
幻影
宝石 · 5 分
宝石 · 10 分
宝石 · 20 分
生命回复
陨石 1
陨石 2
陨石 3
陨石 4
陨石 5
冰墙
冰锥子弹
冰霜漩涡
破损战舰 1
破损战舰 2
破损战舰 3
破损战舰 4
星空背景