• 投稿

[Unity求职]27届游戏客户端帧同步对战demo

5725
0
2026-05-30 21:40:41
153
45
199
43
项目使用 Unity 2022.3 开发,服务端采用 .NET 8 + Fantasy-Net ECS,综合应用 KCP、Protobuf、经典锁步帧同步、Fix64 确定性模拟、ScriptableObject 数据驱动、MongoDB 等。 采用客户端/服务端 Fantasy ECS 分层实现,涵盖帧同步、输入、战斗、技能连招、命中伤害、演出、Buff、回放、状态摘要校验等模块;战斗配置通过 SO + Database 总索引,运行时按 CharacterType / ActionId / BuffId 查表。 一、帧同步与网络系统 基于 FrameSyncComponent 与 FrameSyncSystem 实现经典锁步:逻辑 20 FPS,固定延迟 3 帧。客户端收到 S2C_FrameData 后 ExecuteCommand,再 LockstepSimulateAfterCommands 推进;随后采样 InputMask 上报 C2S_PlayerFrameInput(目标帧 = 当前 + 3,无操作亦发空输入)。服务端负责输入中继与帧广播;迟到输入经 S2C_FrameInputPatch 补帧,客户端 EarliestDirtyFrame + TryReplayFromDirty 回滚重演;重连补发 FrameSyncStart 与历史帧 Resync。 二、战斗与技能系统 ActionTimelineSO 按逻辑帧挂 Effect,SkillCaster 经 ActionTimelineDatabase 按 ActionId 推进时间轴;CharacterSkillSetSO 定义技能与连招(CastFrame、取消窗口、冷却),ComboManager 管理衔接。RoomSystem 按 PlayerId 升序模拟,Fix64 保证双端一致。 三、战斗交互与演出系统 ActionTimeline 帧事件驱动攻击、受击、Buff;两种演出共用 SkillCinematicProfile + SkillCinematicPlayer——开局 Intro 配在 BaseStats(BattleIntroPlayer),大招命中配在 SkillSet(SkillCinematicTriggerSystem 触发,RoomCinematicLockSystem 锁输入、冻逻辑帧并写快照)。 四、命中与伤害系统 DamageEffectAsset 配置伤害与判定范围,DamageCalculator 汇总攻防修正写入 DamageInfo;BuffManager 结合 BuffDefinitionDatabase 管理 Buff,BattlePanel 刷新 HUD。 五、配置与 Database CharacterStats / SkillSet / ActionTimeline / BuffDefinition / RootMotionBaked 五张 Database 统一 TryGet 查表;新增角色或技能登记 Entry 即可,无需硬编码。 六、回放与一致性 BattleReplayRecorder + ReplayPlaybackController 实现结算页快照 + 输入重演(非录屏);LockstepDigestSystem 双端摘要交叉比对,服务端 Replays/*.jsonl 留档复盘。 七、服务端与账号 MatchSystem 匹配建房,输入合法性校验,MongoDB 账号注册登录。 所有系统采用数据驱动、组件化设计,客户端确定性模拟 + 服务端轻量中继,模块边界清晰,便于扩展。 欢迎交流指点,一起成长!
客服
顶部
赛事库 课堂 2021拜年纪