11 KiB
Cielonos — 游戏概念与项目总结
本文档是 Cielonos 项目的完整状态快照,作为所有后续设计、开发和评审工作的单一参考源。 最后更新:2026-07-02
游戏身份
- 类型:二次元风格 3D 第三人称 Roguelike 动作游戏
- 视觉风格:Anime / 二次元(PotaToon 卡通渲染管线 + 风格化 VFX)
- 世界观主题:科幻 / 机甲("Automata" 敌人阵营、科技武器、辅助无人机 AuxiliaryDrone)
- 引擎:Unity 6 (6000.3.7f1),URP 渲染管线
- 目标平台:PC + 主机(PlayStation / Xbox)
- 音频方案:Wwise(Audiokinetic 专业音频中间件)
- 自有工具库:SLSUtilities 程序集(自研 Feedback 系统、FunctionalAnimation 系统、及其它通用工具)
核心玩法循环
- 选择武器与装备 → 进入一局 Roguelike Run
- 地图导航:程序化生成地图(MapGenerator),选择节点路线(风险/收益分支)
- 区域战斗:进入战斗节点,完成波次清怪
- 获取奖励:通过 RewardTable 获取装备/升级,强化当前 Build
- 推进或阵亡:推进至 Boss 或阵亡结束本局
- Meta 进度:(待完善)局间持久升级
运行系统(RunManager)
- 阶段流转:Idle → GeneratingMap → NodeSelection → ZoneExecution → NodeCompletion → RunEnd
- 节点类型:战斗房间、商店(MechanicalTable / LogisticsCenter)、医疗站(MedicalStation)、奖励台(RewardTable)、出口门(ExitGate)
- 支持运行种子(可复现)、侦查范围扩展、掉落稀有度系统
战斗系统
架构
- CombatManager:中央战斗编排器,管理回合、命中判定、反应施加
- AttackArea 模块化系统:所有攻击由可组合子模块构成(HitSubmodule、MoveSubmodule、ReactionSubmodule、ImpulseSubmodule、RaycastSubmodule 等)
- 攻击区域类型:NormalArea(近战)、Projectile(远程)、Link(光束/锁链)
FuncAnim 事件驱动战斗
动画是纯粹的时间载体,所有游戏逻辑通过 FuncAnimPayload 在关键帧触发:
SpawnVFX— VFX 生成PlaySoundFX— Wwise 音频事件ApplyBuff / RemoveBuff— 状态效果InvokeAnimScFunction— 武器代码回调ManualMove— 脚本化位移SetStatus / SetGravity / SetRootMotionMultipliers— 状态切换ChangeCollisionLayers— 命中区域开关
MusicBeatSystem(节奏战斗)
- CombatMusicController 管理音乐播放 + 拍子追踪
- BeatJudgement 评估命中/失误/完美
- BeatMarkerUI / BeatTimelineUI 视觉节拍指示
反馈系统(SLSUtilities/Feedback — 自研)
- Cinemachine 震动(位置、旋转、距离、轨道、FOV)
- 后处理效果(Bloom、色差、暗角、RGB 分裂故障、径向模糊)
- TimeScaleModifier(子弹时间 / 顿帧)
- AfterImage(残影生成器)
- 替代了已弃用的 More Mountains Feel
武器系统
每把武器通过 Partial Class 按职责拆分(主类、Functions、AnimationCallbacks、AttackAreas、Buff/Fusion 等)。
活跃武器(Demo 核心)
Polychrome(太刀)
- 机制:激情(Passion)系统联动、完美格挡/弹反(ParryAttackFromDodge)、空中连击
- 攻击序列:AttackL0-L5(6 段地面连击)、AttackRA/RB、AirAttack
- 防御:NormalBlock、PerfectBlock、ParryAttack
- 特殊:技能攻击(Skill)、终极技(UltimateAttack)
- Feedback:12+ 种命中反馈资产
- 状态:高完成度,正在使用
FutureWand(能量法杖)
- 机制:蓄力射击(HoldAttack Start/Loop/End)、弹丸系统、闪电生成、弹药系统
- 攻击序列:AttackL0-L5(6 段连击)、AttackRA/RB
- 特殊:终极旋转/释放(UltimateSpin/Release)
- VFX 单元:GroundArea、NormalBolt、UltimateBeam、CubicBolt、SpinArea、Lightning、Tornado(8 个 VFXData 单元)
- 状态:高完成度,正在使用
待使用武器
DualHarmony(双持)
- 基础 FuncAnim 已有(AttackL0/L1、AttackR0)
- 双武器连击结构,暂未投入使用
已废弃武器(素材保留)
- Yasha(长柄武器)
- Lampsis
敌人系统
所有敌人属于 "Automata" 阵营。每种敌人拥有独立的 AttackData、AttributeData、TimerData、VFXData 资产。
Boss
| 代号 | 类型 | 特点 |
|---|---|---|
| C1_Axe | Boss 级近战重击型 | 斧头挥砍,环境冲击 VFX。当前 Boss 战设计基本满意 |
杂兵(活跃)
| 代号 | 类型 | 特点 |
|---|---|---|
| L1_Assault_Pawn | 轻型突击兵 | 快速攻击,蓝色斩击/尖刺/子弹 VFX 套件(5 种) |
| L2_Assault_Stinger | 远程突击型 | 远程攻击模式 |
当前杂兵战斗设计存在较多缺陷,是优先改进方向。
待使用敌人
| 代号 | 类型 | 特点 |
|---|---|---|
| M1_Suppression_Centurion | 重型坦克 | 格挡机制(NormalBlock/PerfectBlock)、隐身、龙卷风、剑斩(11 种 VFX) |
已废弃 / 测试用
- NexusCrab — 完全废弃
- IFD1_Test — 测试占位
通用敌人 VFX 库(CommomVFX/)
- 24 个可复用 VFX 预制体,按攻击等级分类:
- 普通攻击:斩击、方向命中、全方位命中、移动斩击/冲击、子弹/枪口闪光
- 危险攻击:更高视觉强度的对应效果
- 格挡/弹反:普通和完美格挡警示
- 攻击破坏/强制等级警告:3 种视觉标识
装备系统
主动支援装备(SupportEquipmentBase)— 7 种
FusionInjector、IceCone、PerceptiveMetalPlating、Scanner、ThermalDetonator、VoidAnchor 等
被动装备(PassiveEquipmentBase)— 24 种
AdaptiveArmor、ArmorPiercingRound、Ascension、BellowsThruster、CorrosiveCoating、DecayAccelerationCoil、DecayPropagator、DetonationWarhead、FusionCatalyst、KineticFocusLens、LastStandProtocol、MemoryExoskeleton、MetabolicCatalyst、OverloadBattery、Passion、PlasmaResonator、PowerFurnace、QuantumShieldGenerator、ReactivePlating、ReflectionPrism、SpatialWarpCaliper、SupercriticalCore、SymbioticLoop、VipersFang
消耗品(ConsumableBase)— 5+ 种
AutomaticShield、EnergyReservoir、PermanentCoating、PrefabricatedComponent、RareMaterial、Salvo
角色系统
架构
- CharacterBase:基类,管理生命周期、属性、Buff、事件
- Fraction 阵营系统:Player、AlliedMinion、Enemy、Neutral
子控制器(Subcontroller — 重逻辑组合单元)
- CollisionSubcontroller — 碰撞检测与物理反应
- LandMovementSubcontroller — 地面移动 + 跳跃/闪避
- PlayerAnimationSubcontroller — 动画状态 + Override Controller 管理
- RenderSubcontroller — 视觉渲染与材质
- BodyPartsSubcontroller — 骨骼/身体部位命中区追踪
- AudioSubcontroller — Wwise 音效播放
- ReactionSubcontroller — 受击反应、击退、硬直
- FeedbackSubcontroller — 屏幕震动、泛光、VFX、后处理
子模块(Submodule — 轻量工具组合单元)
- SelfTimeSubmodule — 独立 deltaTime(支持慢动作)
- AttributeSubmodule — 数值/百分比叠加属性修正
- EventSubmodule — 事件广播(onAttack、onGetHit、onDie 等)
- BuffSubmodule — Buff/Debuff 堆叠与更新
- StatusSubmodule — 状态标记(眩晕、无敌等)
玩家特有
- PlayerInventorySubcontroller — 背包 + 装备槽管理
- PlayerInputSubcontroller — 输入轮询 + 预输入缓冲
- PlayerInteractionSubcontroller — NPC/物体交互
- PlayerFunctions — 冲刺、跳跃、闪避
Buff / 状态系统
框架
- BuffBase → CharacterBuffBase → ProbabilityBuffBase(概率触发)/ ProgressBuffBase(累积堆叠)
已实现效果
- 伤害型:Burn(灼烧 DoT)、Decay(衰败 HP 流失)
- 控制型:Freeze(冻结)、ElectronicParalysis(电子麻痹/眩晕)、Incapacitation(失能)
- 增益型:EnergyRecovery(能量恢复)、Invincible(无敌帧)
- 减益型:Weak(虚弱/属性下降)
- 修正型:BreakthroughResistanceModification(韧性减免)、VerticalMoveModification
属性系统
- AttributeGroup:定义属性池(Health、Energy、Attack、Defense 等)
- 计算堆叠:基础值 → 数值加成 → 百分比累加 → 百分比乘算
- 代码生成:StaticAttributeClassGenerationWindow 自动生成强类型访问器
UI 系统
战斗 HUD(PlayerCanvas/)
- BossInfoUnit — Boss 血条/状态
- EnemyInfoUnit — 敌人信息
- DodgeFunctionIcon — 闪避能力指示
- MainWeaponFunctionIcon — 武器攻击/技能图标
- SupportEquipmentIcon — 支援装备状态
- CombatSystemsUI — 被动能力图标
- BeatMarkerUI / BeatTimelineUI — 节拍指示
菜单/导航(MainGamePages/)
- InventoryItemSelector — 背包管理
- RewardChoiceSelector — 战后奖励选择(Roguelike 核心)
- MechanicalTableSelector — 装备/锻造选择
- LogisticsCenterSelector — 资源/补给中心
- MapNode — Roguelike 地图节点
- ItemDetailTextModule — 物品详情
对话/交互
- DialogUIPage — Yarn Spinner 对话界面
- ConfirmUIPage / InteractionUIArea — 选择/提示
叙事系统
- Yarn Spinner 集成(git 依赖)
- StoryDirector 协调对话/剧情
- 触发器:AreaNarrativeTrigger(区域触发)、TimerNarrativeTrigger(计时触发)
- 回调函数:CustomFunctions、NPC_CFs、Tutorial_CFs
- NPC:GuideNpc(引导 NPC)、SupportPersonnel(支援人员)
场景结构
| 场景 | 用途 | 内容 |
|---|---|---|
| Menu | 主菜单 | 开始游戏、设置、退出 |
| Loading | 加载界面 | 资产加载、场景过渡 |
| CityArena | 核心战斗场景 | Roguelike 战斗循环的主场景容器(玩家、敌人、地图 UI、CombatManager) |
| Fortress | 据点/基地 | NPC、升级、剧情推进 |
| CharacterTest | 开发测试 | 角色动画/控制器测试 |
场地说明:目前唯一的战斗场地是 DefaultStreet(城市街道),作为 CityArena 场景中的环境。当前没有环境设计能力和时间投入更多场地。
内容规模统计
| 类别 | 数量 |
|---|---|
| C# 脚本文件 | 468 |
| 动画片段 | 294+ |
| VFX 预制体(自定义) | 200+ |
| 商业 VFX 包 | 15 |
| 总预制体 | 183 |
| 场景 | 6 |
| 活跃武器 | 2 |
| Boss | 1(C1_Axe) |
| 杂兵敌人 | 2(L1_Assault_Pawn、L2_Assault_Stinger) |
| 被动装备 | 24 |
| 主动支援装备 | 7 |
技术架构模式总结
- Submodule/Subcontroller 组合:避免深层继承,通过可插拔的子模块(轻量)和子控制器(重逻辑)组合能力
- ScriptableObject 数据驱动:AttackData、ComboData、VFXData、FunctionData 等全部为资产文件,代码与数据解耦
- FuncAnim 事件驱动(SLSUtilities/FunctionalAnimation — 自研):动画关键帧触发 Payload 对象执行游戏逻辑,实现动画时序与代码逻辑的干净分离
- EventSubmodule 观察者模式:所有角色发布事件(onAttack、onGetHit、onDie),系统松耦合订阅
- 模块化战斗区域:攻击由可组合子模块构建(命中、移动、反应、变换、射线检测等),无需子类化即可定制攻击
- Partial Class 职责拆分:武器和角色按功能维度拆分到多个文件(主类、Functions、AnimationCallbacks、AttackAreas)