目前对网络理解还是比较混乱,有没有高人有合适的文章,麻烦在评论区中贴出来,帮助我学习,谢谢
思想:
为啥要有server 和 client,是为了多人玩,多人交互,提高可玩性。
为了安全性,一切逻辑判断、决策、结果都有server处理。有了结果,怎么把结果同步到client中呢,ue4有一套的框架来实现。
最终的目的是让client的内容和server一样。
1、一个actor 标记为 replicates时 ,当runtime的时候 在server端场景中生成这个actor,就会自动同步到client上,client上也会生成同样的这个actor。仅仅在runtime时 server端生成时,才会同步,生成之后actor中各种参数变化不会自动同步。
2、
【server上动态生成和在level中放置好一个actor 这两种效果是一样的】
server 动态生成可同步的 a,那么客户端必然会自动生成一个b,a是authority b是remote
在b中调用
multicast函数,只在本地执行
on server 函数 ,不执行,本地和server都不执行
on client 函数 ,只本地执行
在a中调用
multicast函数,服务器执行,并且同步到每个客户端,每个客户端分别执行
on server 函数 ,只服务器执行,不同步客户端
on client 函数 ,只本地执行
那么我的疑问来了
--client 的actor调用on server函数,按照我的理解应该会同步到server上,就是说server上的函数应该会被调用啊,但是实际上并没有。这是为啥
--难道在actor中真的客户端就一点都不能调用服务器的函数吗?那客户端的按键触摸屏怎么反馈给服务器呢?难道只有playercontrol中能和服务器通信?
*******************************************************************************************************
动态生成时判断authority,如果时remote就生成t,三个运行实例 server client: a和b,则server中没有t,a和b中分别有一个t,但是这两个t完全独立没有任何同步关系,但是他俩都是authority这个有点难以理解。
3、actor中变量a设置为replicated时,在runtime时,server的actor的a 就能同步到client中。前提是actor也得设置为replicates
这个也是单向的只能服务器向client同步,client不能向server同步
4、actor中变量a设置为RepNotify时,会自动创建OnRep_XXX函数,当a变量有变化时自动调用这个函数(client端也是如此)。同时client上的a变量会随时被server同步。前提是actor也得设置为replicates
这个也是单向的只能服务器向client同步,client不能向server同步
5、actor中函数b的同步,其实是custom event,function没有同步选项。前提是actor也得设置为replicates
multicast 同步到client
在server端运行a actor的multicast 函数,则所有客户端上的a 都会执行相应的 函数
在client运行a actor的 multicast函数 ,则只在client端执行,同步不到服务器端
run on server 只能运行在server端,不会同步到client
在server端运行,不会同步到客户端
在client运行,调用也不执行,既不在服务端运行也不在本地运行
run on owning client 只运行在client,就算server端强制调用也不会同步到客户端
在服务器端运行,则只在服务端的本地actor运行一次
在客户端运行
-----------------------------------------------------------------------------------------------------------------
未完待续
--------------------------------------------------------------------------------------------------------------
blueprint 版本
createsession joinsession openlevel servertravle