多人游戏网络传输方法
p2p模型
两台通过网络连接到一起的电脑,互相传输数据,但是游戏版本会出现不同,并且多人游玩会引起版本差异问题
client-seever模型
一台机器为服务器,其他的机器为客户端,客户端只与服务器沟通,客户端只需要能够向服务器传输数据,并接受服务器发出的数据即可。
举例:客户端中的人物的移动只传输给服务器,并由服务器集中处理后发给其他客户端。
服务器应该是最为权威的,服务器应是最新的游戏客户端,并且客户端的游戏版本应与服务器的保持一致。
监听服务器:(例如森林联机)
游玩的一台机器作为服务器,同时也在玩游戏,也在进行图片渲染。
专用服务器:(常见于大型多人游戏,例如多人FPS)
专用服务器无人在此机器上游玩游戏,只负责接受,处理,传输数据。
UE使用的是什么?
权威client-server模型。
Net test
1.打开如图所示的第三人称项目 (项目名称必须是英文,路径也必须是英文!!!!!)
2.在UE5引擎中可以进行测试,在下方的网络模式中可以改变服务器形式
调节玩家数量为2,网络模式改为以监听服务器模式运行,此时稍大的那一个页面作为监听服务器存在,同时也是客户端一部分。(在运行的客户端中按shift + F1可以调出鼠标光标)
将玩家数量调为3,同时将网络模式调为作为客户端运行,这时的三个界面是作为客户端出现的,但是在低版本的UE中可以看到存在另外一个人物,他其实就是专用服务器的人物。
LAN Connections(LAN:local area network)
这种连接方式指的是在通过同一个网络将各个客户端连接到一起,这几个不同的机器必须处在同一个网络环境下(如同一个WIFI,或者通过同一个路由连接到一起)
设置方法:
一,蓝图设置LAN Connections
1.首先打开侧滑菜单,从之中找到ThreePerson文件夹,点击Blueprints文件
2.双击此文件中的蓝图类,之后点击完整蓝图编辑器。(因为我们要向项目中加一个功能,所以仅靠第一张截图中的功能是实现不了的)
3.首先删除自带的三个节点。(右键拖动蓝图面板)(蓝图是用来实现功能的,所以打开这个界面必定是要来实现一个功能的。)对于蓝图编辑的思路:(1)思考要实现什么功能,这里是要实现LAN(局域网)连接。(2)要实现这个功能需要什么东西(组件),【这里最好的方法是将自己代入游玩游戏的玩家,我想要LAN连接,那么就要找到这个功能入口,之后要能够加入同一局域网下的房间内。】用蓝图中的什么组件实现这个功能【不知道就查UE文档】(3)对照查询到的方法实现功能
4.(1)能够创建一个新的游戏会话,我们希望按“1”键进入一个等待大厅【这个组件赋予这个按键能力】(2)既然按“1”键进入大厅,那么先创建一个大厅(首先回到UE主界面,点击右上角的“文件”,接着点击“新建关卡”,点击basic作为等待大厅,之后在新出现的关卡界面点击“文件”,保存当前关卡,存储在ThreePerson文件中的maps文件中(名字Lobby))【单击关卡的地板,可以在右下角调节地板的大小】
注意:注意保存!!!!!!!
5.按1键进入“Lobby”,所以蓝图界面需要一个组件——openlevel(by name),可以打开我们刚建立的等待大厅,该组件第一行填入关卡名字,最后一行设置该关卡的服务器模式,此处设置为Listen,使得能够从多个连接到此关卡的玩家接受信息。
2.但是1键功能只实现了跳转关卡的功能,如何使得其他机器连接到这个关卡呢?2键可以实现这样一个功能,即让其他机器连接到这个关卡,让其他机器连接到主持游戏会话的机器上,实现局域网联机。组件Execute Console实现目前机器可连接到同一局域网下的另一台电脑,仅需对象电脑的IP地址。此组件的第一行实现连接到特定IP。填入“Open IP”
本次主要学习多人射击游戏的网络连接的多种方法,并利用UE的蓝图功能实现局域网连接,接下来将学习如何利用C++代码使用局域网连接。