Files
Cielonos/docs/Cielonos_项目总结文档.md
2026-04-18 13:57:19 -04:00

17 KiB
Raw Permalink Blame History

Cielonos 项目总结文档

项目概述

项目名称: Cielonos
项目类型: 二次元风格、3D、第三人称、Roguelike动作游戏
Unity版本: Unity 6+ (使用URP渲染管线)
目标平台: PC/Console (主平台), Mobile (次平台)
开发语言: C#


核心架构

1. 系统架构模式

项目采用Submodule/Subcontroller架构模式,将复杂系统拆分为可组合的子模块:

CharacterBase
├── Submodules (数据/逻辑层)
│   ├── SelfTimeSubmodule (时间控制)
│   ├── AttributeSubmodule (属性管理)
│   ├── EventSubmodule (事件系统)
│   ├── BuffSubmodule (Buff系统)
│   └── StatusSubmodule (状态系统)
└── Subcontrollers (表现/交互层)
    ├── MovementSubcontroller (移动控制)
    ├── AnimationSubcontroller (动画控制)
    ├── RenderSubcontroller (渲染控制)
    ├── CollisionSubcontroller (碰撞控制)
    └── 其他...

2. 命名空间组织

Cielonos.MainGame/
├── Characters/           # 角色系统
│   ├── Player/          # 玩家控制
│   ├── Automata/         # AI敌人
│   └── Base/            # 角色基础类
├── Buffs/               # Buff系统
├── Map/                 # 地图系统
├── Managers/            # 游戏管理器
└── UI/                  # UI系统

核心系统详解

1. 角色系统 (CharacterBase)

1.1 角色阵营 (Fraction)

public enum Fraction
{
    Player = 0,           // 玩家
    AlliedMinion = 1,     // 友军
    Enemy = 10,           // 敌人
    Neutral = 20          // 中立
}

1.2 角色子系统 (Submodules)

  • AttributeSubmodule: 属性系统,支持动态属性修改和加成计算
  • BuffSubmodule: Buff/DeBuff管理系统
  • StatusSubmodule: 状态系统(眩晕、束缚、无敌等)
  • EventSubmodule: 事件系统(受伤、攻击、死亡等)

1.3 角色控制器 (Subcontrollers)

  • MovementSubcontroller: 移动控制(支持地面/空中/游泳等)
  • AnimationSubcontroller: 动画控制Animator管理
  • RenderSubcontroller: 渲染控制(材质、特效)
  • CollisionSubcontroller: 碰撞控制
  • BodyPartsSubcontroller: 身体部位管理
  • AudioSubcontroller: 音频控制
  • ReactionSubcontroller: 反应系统(格挡、闪避)
  • FeedbackSubcontroller: 反馈系统

2. 属性系统 (AttributeSystem)

2.1 属性组 (AttributeGroup)

public partial class AttributeGroup
{
    public Dictionary<string, float> original;  // 原始属性
    public Dictionary<string, float> current;  // 当前属性受Buff影响
}

2.2 属性修饰系统

支持多种修饰方式:

  • Flat值: 直接加减数值
  • 百分比加成: 累加型百分比
  • 百分比倍率: 乘算型百分比

2.3 伤害计算

public float GetDamageValue(AttackValue attackValue)
{
    // 基础伤害 × 攻击者属性加成 × 受伤者属性加成
    // × 最终伤害倍率
}

3. 战斗系统 (BattleSystem)

3.1 攻击类型 (AttackType)

public enum AttackType
{
    Energy = 1,      // 能量伤害
    Kinetics = 2,    // 动能伤害
    Explosion = 3,   // 爆炸伤害
    Magic = 4,       // 魔法伤害
    Pure = 5,        // 纯粹伤害
    Blank = 6        // 无类型伤害
}

3.2 突破等级 (BreakthroughType)

public enum BreakthroughType
{
    None = 0,         // 无突破
    Weak = 10,        // 弱突破
    Medium = 20,      // 中突破
    Heavy = 30,       // 强突破
    Disruption = 40,  // 打断突破
    Forced = 50,      // 强制突破
    Unstoppable = 100 // 不可阻挡
}

3.3 攻击区域系统 (AttackArea)

攻击区域是战斗系统核心组件,支持:

  • 攻击判定: 基于碰撞体的命中检测
  • 力效果: 击退、击飞、吸引等
  • 命中反馈: 打击特效、音效、伤害数字
  • 移动轨迹: 直线、追踪、弧线等

攻击区域子模块:

  • TransformSubmodule: 位置/旋转/缩放控制
  • AttackSubmodule: 攻击逻辑
  • TimeSubmodule: 时间控制
  • HitSubmodule: 命中判定
  • MoveSubmoduleBase: 移动轨迹
  • RaycastSubmodule: 射线检测
  • ForceSubmodule: 力学效果
  • ReactionSubmodule: 反应触发

4. Buff系统 (BuffSystem)

4.1 Buff分类

public enum BuffType
{
    Positive,   // 正面Buff
    Negative,   // 负面Debuff
    Neutral     // 中性Buff
}

4.2 驱散等级 (BuffDispelLevel)

public enum BuffDispelLevel
{
    Basic = 0,          // 弱驱散
    Strong = 10,        // 强驱散
    DeathOnly = 20,     // 仅死亡驱散
    Undispellable = 100 // 不可驱散
}

4.3 内置Buff类型

  • Freeze: 冰冻(停止移动和攻击)
  • Burn: 灼烧(持续伤害)
  • Decay: 衰败(属性下降)
  • ElectronicDisturbance: 电子干扰
  • ElectronicParalysis: 电子麻痹
  • Weak: 虚弱(攻击力下降)
  • GeneralIncapacitation: 失能

5. 状态系统 (StatusSystem)

5.1 负面状态

StatusType.Incapacitation = 0,  // 失能(完全丧失行动)
StatusType.Inhibition = 1,      // 抑制(禁用技能)
StatusType.Disarm = 2,          // 缴械(禁用攻击)
StatusType.Restraint = 3,       // 束缚(禁用移动)
StatusType.Disability = 4,       // 残废(禁用反应)
StatusType.Stun = 100,           // 眩晕

5.2 正面状态

StatusType.Invincible = 1000,   // 无敌
StatusType.Invisible = 1001,    // 隐身

6. 物品系统 (ItemSystem)

6.1 物品基类 (ItemBase)

核心属性:

  • FuncAnimDataCollection: 功能动画数据
  • AttackData: 攻击数据
  • ComboData: 连击数据
  • FunctionData: 技能数据
  • AmmoData: 弹药数据
  • BlockData: 格挡数据
  • OverloadData: 超载数据

物品子模块:

  • AttributeSubmodule: 被动属性
  • ComboSubmodule: 连击系统
  • FunctionSubmodule: 功能系统
  • AmmoSubmodule: 弹药管理
  • OverloadSubmodule: 超载管理

6.2 主武器系统 (MainWeaponBase)

当前已实现武器:

  • Polychrome: 多彩武器(可变形态)
  • FutureWand: 未来法杖

6.3 武器数据

public class AttackUnit
{
    public string name;
    public AnimationClip animationClip;
    public AttackData attackData;
    public ComboData comboData;
    public Dictionary<string, FuncAnimData> funcAnims;
}

7. AI系统 (Automata)

7.1 AI架构

基于Opsive Behavior Designer实现行为树:

  • 行为树 (BehaviorTree): AI决策逻辑
  • AI子树 (AI Subtrees): 可复用的行为模块
  • 自定义Task: 自定义行为节点

7.2 AI动作系统

// 移动动作
AdvanceRetreat: 前进/后退
PrecisePursue: 精确追踪
Standoff: 保持距离
Strafe: 侧向移动

// 攻击动作
ApplyBuff: 施加Buff
PlayFuncAnim: 播放功能动画

// 条件判断
CheckAttribute: 检查属性
CheckBuff: 检查Buff状态
CheckStatus: 检查角色状态
IsEnoughEnergy: 检查能量

7.3 内置敌人类型

  • HumanoidAndroid: 人形机器人
  • LegionCenturion: 军团百夫长(精英敌人)
  • NexusCrab: 蟹型机器人

8. 动画系统 (AnimationSystem)

8.1 功能动画 (Functional Animation)

核心概念: 动画不仅是表现,还承载游戏逻辑

public class FuncAnimData
{
    public AnimInfo animInfo;           // 动画基础信息
    public List<FuncAnimInterval> intervals;  // 时间区间定义
    public Dictionary<string, List<FuncAnimEvent>> events;  // 事件触发点
}

8.2 动画打断系统

public enum DisruptionType
{
    None,                  // 完全不可打断
    NormalExternal,       // 普通外部打断
    NormalAction,         // 普通动作打断
    StrongAction,         // 强动作打断
    SpecialAction,        // 特殊动作打断
    Uninterruptible       // 完全不可打断
}

8.3 动画分层

  • FullBody: 全身动画层
  • UpperBody: 上半身动画层(可与移动叠加)

9. 功能动画Payload系统

功能动画Payload是触发游戏逻辑的核心机制

// 可用Payload类型
SpawnVFX:         生成特效
PlaySoundFX:      播放音效
SetStatus:        设置状态
SetGravity:       设置重力
SetBreakthroughResistance: 设置抗打断
ChangeCollisionLayers: 改变碰撞层
InvokeAnimScFunction: 调用动画控制器函数
SwitchFuncAnim:   切换功能动画

UI系统

1. 玩家Canvas (PlayerCanvas)

包含以下UI区域

  • PlayerInfoUIArea: 玩家信息区
    • HealthBar: 生命值条
    • EnergyBar: 能量条
  • MainWeaponUIArea: 主武器UI
    • FunctionIcon: 技能图标
    • MainWeaponSwitchLine: 武器切换指示
  • BossInfoUnit: Boss信息单元
  • EnemyInfoUnit: 敌人信息单元

2. HUD系统

  • DamageNumber: 伤害数字DamageNumbersPro
    • 支持不同攻击类型Energy/Kinetics/Explosion/Magic
    • 支持暴击/普通显示
    • 支持护盾格挡显示

地图系统 (MapSystem)

1. Zone管理

public class ZoneData
{
    public List<SpawnPointKey> playerSpawns;      // 玩家出生点
    public Dictionary<SpawnPointKey, string> enemySpawns;  // 敌人配置
}

2. 地图管理器 (MapManager)

  • Zone切换: 异步加载/卸载场景
  • ScreenFader: 场景过渡淡入淡出
  • SpawnPoint: 出生点管理

3. 现有场景

  • Loading.unity: 加载场景
  • Menu.unity: 菜单场景
  • MainGame.unity: 主游戏场景
  • Default/DefaultStreet.unity: 默认地图
    • ZoneData0, ZoneData1, ZoneData2: 区域数据

渲染系统

1. 渲染管线

  • URP (Universal Render Pipeline): 通用渲染管线
  • 支持平台: PC (高画质)、Mobile (优化画质)

2. 卡通渲染

使用POTA-Toon实现二次元风格渲染:

  • 多光源支持
  • 复杂透明网格渲染OIT技术
  • 角色局部后处理

3. 后处理效果

自定义后处理着色器:

  • AnimeACES: ACES色调映射
  • AnimeBloom: 卡通Bloom
  • AdvancedVignette: 高级暗角
  • AdvancedChromaticAberration: 色差
  • SpeedLines: 速度线效果
  • Sharpen: 锐化
  • RGBSplitGlitch: RGB分离故障效果
  • RadialBlur: 径向模糊
  • StrobeFlash: 闪光效果

4. 自定义着色器

  • DitherLit: Dither透明着色器
  • MeshShader: 网格特效着色器
    • Burn: 燃烧效果
    • Freeze: 冰冻效果
    • Outline: 描边效果
    • Weak: 虚弱效果

特效系统 (VFX)

1. VFX资源

  • HUDTexts: 伤害数字预设
  • MeshFXs: 网格特效
    • Freeze.prefab: 冰冻特效
    • Shocking.prefab: 电击特效
  • Models: 模型资源Slash3.fbx
  • Textures: 特效纹理
    • Glow/: 发光纹理
    • Line/: 线条纹理
    • Mask/: 遮罩纹理
    • Noise/: 噪声纹理
    • Particles/: 粒子纹理
    • Ring/: 环形纹理
    • Smoke/: 烟雾纹理
    • Trail/: 轨迹纹理
    • Turbulence/: 湍流纹理

2. 特效数据 (VFXData)

public class VFXData
{
    public Dictionary<string, VFXInfo> vfxCollection;
}

3. 武器特效

敌人攻击特效预设:

  • Hit.prefab: 命中特效
  • NormalBlock.prefab: 普通格挡特效
  • PerfectBlock.prefab: 完美格挡特效
  • NormalSlash.prefab: 普通斩击
  • NormalMovingSlash.prefab: 移动斩击
  • PowerfulSlash.prefab: 强力斩击

音频系统

1. 音频中间件

  • Wwise: 专业游戏音频引擎
  • 背景音乐管理: BackgroundMusicManager
  • 音效管理: AudioManager

2. 音频容器 (AudioContainer)

public class AudioContainer
{
    public Dictionary<string, AK.Wwise.Event> soundEventDictionary;
}

3. 音频资源

  • WwiseGenerated: Wwise生成的音频代码
  • AudioPoint.prefab: 场景音频点

工具和插件

1. Unity官方/社区插件

插件名称 用途
Sirenix Odin Inspector 高级编辑器扩展
DOTween/Pro 动画和过渡
UniRx 响应式编程
Easy Save 3 数据持久化
I2 Localization 国际化支持
RootMotion FinalIK 逆向运动学
MagicaCloth2 布料模拟
KINEMATION 骨骼动画
DamageNumbersPro 伤害数字系统
Modern UI Pack UI组件库
MMFeedbacks (Feel) 反馈系统
IngameDebugConsole 调试控制台
Lean Pool/Common 对象池
Opsive Behavior Designer AI行为树
Hovl Studio VFX 特效资源包
Arcanor VFX 特效资源包

2. 自定义工具

  • Wingman: 镜头系统
  • AutoLOD: LOD自动生成
  • AtlasSplit: 图集分割工具

输入系统

1. Input System

使用Unity新InputSystem

// Input/PlayerInputActions.cs

2. 玩家输入控制器

public class PlayerInputSubcontroller
{
    // 处理键盘/手柄输入
    // 输入缓冲系统
    // 输入优先级
}

3. 预输入系统 (Preinput)

支持预输入缓冲,提高响应手感


资源配置

1. 基础集合 (BaseCollections)

MainGameBaseCollection:   主游戏资源配置
MapBaseCollection:         地图配置
EditorBaseCollection:      编辑器配置

2. 物品资源

  • MainWeapons: 主武器预设
    • FutureWand.prefab
    • Polychrome.prefab

场景管理

1. 加载流程

Menu → Loading → MainGame
         ↓
    异步加载场景
         ↓
    最小加载时间保证
         ↓
    场景激活

2. 过渡效果

  • ScreenFader: 屏幕淡入淡出
  • DOTween: 过渡动画

核心设计模式

1. 单例模式

public class Singleton<T> where T : MonoBehaviour
{
    public static T Instance { get; private set; }
}

2. 子系统模式

Owner (持有者)
├── Submodule (子模块 - 逻辑/数据)
└── Subcontroller (子控制器 - 表现/交互)

3. 事件驱动

public class EventSubmodule
{
    // 使用UniRx实现响应式事件
    public Subject<AttackResult> onDealAttack;
}

4. 对象池

使用LeanPool进行对象池管理


开发状态

已完成系统

  1. 基础角色系统
  2. 属性和Buff系统
  3. 战斗/攻击系统
  4. 动画系统
  5. AI行为树框架
  6. 物品系统框架
  7. UI系统框架
  8. 场景管理
  9. 地图系统框架
  10. 基础敌人AI
  11. 输入系统
  12. 伤害数字系统

🚧 待完善系统

  1. 完整武器系统(更多武器类型)
  2. 敌人AI行为树完善所有敌人行为
  3. 关卡生成系统Roguelike核心
  4. 技能树系统
  5. 成就系统
  6. 存档系统
  7. 多人系统(如果需要)
  8. 教程系统
  9. 配置文件系统

项目目录结构

d:\Projects\Cielonos\
├── Assets/
│   ├── Scripts/                    # 所有游戏脚本
│   │   ├── Core/                   # 核心系统
│   │   ├── MainGame/               # 主游戏逻辑
│   │   ├── Menu/                   # 菜单系统
│   │   └── SLSUtilities/           # 工具库
│   ├── Prefabs/                    # 预制体
│   │   ├── Core/                   # 核心预制体
│   │   └── MainGame/               # 游戏预制体
│   ├── Scenes/                     # 场景
│   ├── Resources/                  # 资源文件
│   ├── Settings/                   # URP设置
│   ├── Shaders/                    # 自定义着色器
│   ├── Plugins/                    # 第三方插件
│   └── OtherPlugins/               # 其他插件
├── docs/                           # 文档目录
└── .agents/                        # Agent技能配置

关键文件索引

核心类

  • CharacterBase: Assets/Scripts/MainGame/Characters/Base/CharacterBase.cs
  • Player: Assets/Scripts/MainGame/Characters/Player/Player.cs
  • Automata: Assets/Scripts/MainGame/Characters/Automata/Automata.cs
  • BattleManager: Assets/Scripts/MainGame/Managers/BattleManager/BattleManager.cs
  • MainGameManager: Assets/Scripts/MainGame/Managers/MainGameManager.cs
  • MapManager: Assets/Scripts/MainGame/Map/MapManager.cs
  • BuffBase: Assets/Scripts/MainGame/Base/BuffSystem/BuffBase.cs
  • AttackAreaBase: Assets/Scripts/MainGame/AttackArea/AttackAreaBase.cs
  • ItemBase: Assets/Scripts/MainGame/Characters/Player/Items/Base/ItemBase.cs

场景文件

  • MainGame.unity: 主游戏场景
  • Default/DefaultStreet.unity: 默认地图
  • Loading.unity: 加载场景
  • Menu.unity: 菜单场景

技术栈总结

类别 技术/工具
引擎 Unity 6+ (URP)
渲染 POTA-Toon卡通渲染
AI Opsive Behavior Designer
动画 Mecanim + 自定义功能动画
音频 Wwise
UI Modern UI Pack + 自定义
后处理 自定义URP后处理
物理 Unity Physics
输入 InputSystem
特效 Shuriken + 自定义VFX
动画IK RootMotion FinalIK
布料 MagicaCloth2
响应式 UniRx
序列化 Sirenix Odin Inspector
对象池 LeanPool
缓动 DOTween

文档生成日期: 2026-04-17
生成者: Game Designer Agent