17 KiB
17 KiB
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进行对象池管理
开发状态
✅ 已完成系统
- 基础角色系统
- 属性和Buff系统
- 战斗/攻击系统
- 动画系统
- AI行为树框架
- 物品系统框架
- UI系统框架
- 场景管理
- 地图系统框架
- 基础敌人AI
- 输入系统
- 伤害数字系统
🚧 待完善系统
- 完整武器系统(更多武器类型)
- 敌人AI行为树(完善所有敌人行为)
- 关卡生成系统(Roguelike核心)
- 技能树系统
- 成就系统
- 存档系统
- 多人系统(如果需要)
- 教程系统
- 配置文件系统
项目目录结构
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