Unity基础知识学习七,帧同步源码学习

前言

在学习帧同步框架源码之前,先过一遍基础知识:Unity基础学习六,网络同步_u013617851的博客-CSDN博客

视频地址:帧同步教程【合集】_哔哩哔哩_bilibili

github地址:GitHub - JiepengTan/Lockstep-Tutorial: 帧同步 教程

1.ServeraLifeCircle服务端

服务端ServerLauncher.Main() 启动入口:

 服务端Server收到协议,进入Dispatch()分发函数:

2. new ClientLifeCycle 客户端

启动和初始化Awake:

 

 启动和初始化Start:

 

收到网络协议: 

 

Unity脚本Update()函数,以及帧同步真的_Update()帧的更新: 

 

3.启动服务端的方法

3.1 代码目录新建一个dll项目

 

 3.2 添加LockstepEngine和SimpleServer的解决方案

 

3.3 给SimpleServer加上引用

 

 

 3.4 修复 AssemblyInfo.cs 特性重复报错

 顺便在配置文件SimpleServer.csproj中

</PropertyGroup>中

加入一行<GenerateAssemblyInfo>false</GenerateAssemblyInfo>

 然后把报错点开的那个XXXXXXXXXXXX.AssemblyInfo.cs文件,用资源管理器打开,删除掉。

重新对SimpleServer右键清理,右键编译。

3.4 安装服务器启动的.Net环境

Download .NET Core 2.2 SDK (v2.2.207) - Windows x64 Installer

3.5 启动SimpleServer 和 游戏客户端 

 桌面的XXXX.exe和Unity编辑器同时启动,然后游戏就会开始:(只启动一个,会进入等待)

4. new Replay ClientMode and Debug (回放功能,客户端模式,Debug)

4.1 回放功能初始化

 4.2 回放功能的Update更新

4.3 客户端模式初始化

 4.4 客户端模式更新和输入

 4.5 Debug

5. RollBackFramework 预测回滚

6.帧同步框架设计难点

6.1 多平台

Bridge桥接模式

桥接模式 | 菜鸟教程

理论做法: 使用桥接模式 + 抽象工厂

 实际做法:

6.2 多实例

比如打守望先锋,阵亡之后,放回放,这个回放里的内容,要和现在的内容并行。要保证回放里面的指令操作不能污染现在的主内容的数据。这就要求帧同步系统支持多实例。

  1. 不要使用静态变量,除非是const,或者作为const使用的数据。
  2. 单例模式不要用,静态的static服务都不要用,只有const类型服务才能用。

6.3 View层处理Config

View与Entity的关系

 因为要求客户端服务端都能读取同样的配置文件Config,例如攻击间隔什么的这种配置。(怎么感觉直接用excel生成json更好啊)

6.4 数据的备份与还原

6.5 预测

6.6 Debug

猜你喜欢

转载自blog.csdn.net/u013617851/article/details/123009965