1.网络需要同步各个客户端的信息,数据是从服务器同步到客户端,还是客户端同步到服务器? 服务器同步到客户端 2.网络模式大概有几种?虚幻是使用那种模式进行同步信息? C/S模式 3.服务器大概有几种?他们之间的区别是什么? DedicatedServer和ListenServer;区别在于ListenServer是拿一个客户端做服务器,而DedicatedServer是有一个独立的服务器。 4.虚幻的同步是通过什么方式实现的? 数据同步:Replicates;一个变量设置为Replicated以后,一旦服务器检测到变化,经过安全检测后,如果符合安全标准,就会将新的数据发送到各个客户端。需要注意的是,数据每帧都由CPU负责检测。 事件同步或者过程同步:RPC;RemoteProcedureCall。中文译为:远程过程调用。从这个端调用另外一个或者多个端的一个进程。比如说开枪,或者爆炸效果。 5.什么事RPC?英文全称是什么?都有哪几种实现方式? 服务器调用RPC事件,自己控制的客户端执行; UFUNCTION关键宏:Client 客户端调用RPC事件,服务器执行; UFUNCTION关键宏:Server 服务器调用RPC事件,所有的客户端执行; UFUNCTION关键宏:Multicast (客户端也可以使用MultiCast事件,只是该事件只会在本地执行。) 6.什么是Replicates?
还有一种情况容易让人糊涂:假设在Pawn类中的Authority端生成一个Actor,并且把它存为变量,那么这个变量的Replicates属性和这个Actor本身的Replicates属性是什么关系?实际上,这里变量只是指向这个Actor的一个引用/指针,掌握住这点就好理解了。如果这个Actor没有Replicates,而让这个指针Replicates,那么它在客户端上就会指向一个NULL,这个并不会让引擎崩溃,但是没有任何意义。如果Actor Replicates,但是指针不是Replicated,那么在客户端这个Actor是存在的,但是指针没办法指向正确的对象。所以这种情况下需要Actor和变量都是Replicates(ed)才能达到正确的效果
另外,GameMode是不会Replicates的,它只存在于服务端,所以对它存储的变量设置Replicated没有任何意义。
7.GameMode是什么?它有什么作用? 游戏模式。处理游戏的规则,只存在于服务器端,因此客户端相关的逻辑不能存放在GameMode上。 8.用户连接到服务器的大概过程是什么? 1.去UE4官网连接github等待官方拉入; 2.从github下载所需的UE4版本,后进行安装; 3.使用VS对UE4的源文件进行生成编译,后新建项目; 4.打开项目,在建立连接网络的蓝图类中选择服务器的公网IP加入端口号; 5.开放云服务器对应的端口号; 6.生成服务器文件以及客户端文件; 7.将服务器文件上传到云服务器中,运行服务器; 8.在本机中打开客户端选择进行网络连接,即可连接到服务器。
|