Skip to content

Jull0719/Drifter

Repository files navigation

一、项目介绍

  • 时间:2021.06 - 2021.07(大三游戏开发大作业);2025.10至今(重构)

  • 概述:《匿旅者》(Drifter)是一款2D像素风格横版动作RPG冒险游戏。玩家化身为勇敢善良的小姑娘,为生病父亲寻找草药而踏上旅途,在战斗、探索与成长中穿越城镇、森林与洞穴三大关卡。

二、我的角色和贡献

  • 原始开发期:三人小组协作,负责战斗系统血量部分、道具系统

  • 重构期(2025至今):独立进行系统性架构重构

    • 架构设计:分层组合模型(单例管理层 + 实体组件层 + 接口契约层)
    • 程序实现:重构八大核心子系统(状态机、战斗管线、属性修改器、背包装备、存档、场景过渡、音频、UI)

三、核心玩法与设计亮点

  1. 实时动作战斗 多段连击 + 反击(弹反)系统:在敌人攻击脆弱窗口弹反可使其眩晕,创造输出机会
  2. 属性驱动的伤害结算 闪避判定 → 暴击检定 → 护甲减伤 → 伤害计算 → 击退/重击退,完整RPG数值循环
  3. 装备与属性双向绑定 装备时注入修改器并订阅效果,卸下时按来源精准还原,支持多来源同属性叠加
  4. 跨关卡探索与存档 城镇 → 森林 → 洞穴三大主题关卡,检查点存档 + 路径点定位确保场景无缝衔接
  5. 完整冒险循环 探索 → 战斗 → 物品收集 → 装备升级 → NPC对话 → 商店交易 → 存档

四、技术实现亮点

模块 技术方案
实体架构 组件组合模式,Entity + 同级 Entity_* 组件族,避免上帝对象
行为驱动 有限状态机(FSM),OnEnter → OnUpdate → OnExit 生命周期,三层继承消除冗余转换
战斗管线 动画事件驱动:输入→状态变更→动画→武器接触帧调用伤害判定,确保视听同步
属性系统 baseValue + List<StatModifier>,脏标记惰性求值,按 source 字符串成对添加/移除
物品数据 ScriptableObject 不可变蓝图 + 运行时 Inventory_Item 可变包装,存档仅序列化身份与数量
存档系统 集中式 SaveManager 编排 + 分布式 ISaveable 接口,实现两方法即可参与存档
UI管理 单例调度器模式,统一管理面板引用、输入状态、层级与互斥语义
音频系统 ScriptableObject 数据库解耦 + BGM 交叉淡入淡出 + 音频多样性随机播放

五、项目成果与反思

  1. 项目成果

    • 完整可运行的2D动作RPG游戏(3关卡、完整战斗流程、完整装备与存档系统)
    • 系统性重构使代码架构从高耦合演进为分层解耦,新增敌人仅需继承+编写AI状态
  2. 未来改进方向

    • 属性修改器扩展百分比/乘法类型,增强Buff系统表达力
    • 存档系统增加版本号与迁移策略,兼容后续版本迭代
    • 扩展更多敌人类型与Boss战,丰富关卡内容
    • 优化状态机规模增长时的可维护性,考虑引入转换表或分层状态机

About

2DRPG项目重构

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors