UE4 HTC VIVE - 局域网联机(基础知识A)
发表于2017-04-12
本篇文章主要给大家介绍的是UE4引擎在做HTC VIVE开发局域网联机的教程。(此篇只作为设置与预习api和相关知识点,近几天将陆续完成一个简单联网Demo的讲解)
美工同学看到C++不要慌,都是粘贴复制操作,不漏看就肯定能跑起来
--------------------引擎环境配置文件修改与项目在线模式启动修改--------------------
创建一个第三人称项目
2)右键资源栏,创建一个新的C++类
创建一个C++类
选择不继承任何UE提供的基类
DefaultEngine.ini修改
引擎中打开多窗口-模拟在线调试的配置就完成了,但是我们之后要发布到多机互联,所以还需要开我们在工程中加入在线模式启动语句:
4)找到【Source】文件夹,找到【MyProect.Build.cs】文件,添加:
MyProect.Build.cs修改
5)生成该项目生成完后记得重启一下虚幻引擎,让他重新加载一下配置文件
生成一下,加载配置文件
6)设置一下同时调试的玩家数量,完成后打开Advanced Settings...
Paste_Image.png
7)设置一下窗口大小,这个根据个人习惯来,我是觉得太大不方便,当然双屏的同学可以笑了
Paste_Image.png
8)然后点击窗口运行
窗口播放
显示结果
此种用引擎调试是不走网络的,属于走127.0.0.1这种地址返回本机,故只能用于调试用,请不要尝试发布多机测试!
--------------------预习部分--------------------
描述一下联网过程:
--------------------预习1核心API--------------------
【Switch Has Authority】
是否拥有权限,或者直接认为是否是主机好了
输出结果为:
a.当前流程为主机【Authority】;
b.当前流程不为主机【Remote】;
【Create Session】
创建会话
输出:
d.无异常走【OnSuccess】;
e.发生异常走【OnFailure】;
【Find Session】
查找会话
输出:
d.流程出同上,
e.返回数组为接收到的主机消息列表【Results】
参数类型为
【Join Session】
加入会话
输出:
c.流输出同上
--------------------预习部分2RPC(可以不看)--------------------
RPC大家可以略作了解,(作用归纳下来就是实现服务器与客户端的函数互调,即UE4中函数复制的下层实现原理,
因为是客户端与服务器的函数不在同一内存是没法互调的,RPC架构则可以做出这种效果)
直接看知乎上的解释 https://www.zhihu.com/question/25536695
本篇做环境搭建和API预热,对这个话题感兴趣的小伙伴可以留言提问,近期会更新局域网联机第二篇有好的问题我会在之后的帖子里解答
美工同学看到C++不要慌,都是粘贴复制操作,不漏看就肯定能跑起来
--------------------引擎环境配置文件修改与项目在线模式启动修改--------------------
1)我们就直接用默认名创建一个第三人称
创建一个第三人称项目
2)右键资源栏,创建一个新的C++类
创建一个C++类
选择不继承任何UE提供的基类
3)打开【解决方案资源管理器】,找到我们的项目【MyProject】,点开后找到【Config】文件夹,找到【DefaultEngine.ini】文件,添加:
DefaultEngine.ini修改
引擎中打开多窗口-模拟在线调试的配置就完成了,但是我们之后要发布到多机互联,所以还需要开我们在工程中加入在线模式启动语句:
4)找到【Source】文件夹,找到【MyProect.Build.cs】文件,添加:
MyProect.Build.cs修改
5)生成该项目生成完后记得重启一下虚幻引擎,让他重新加载一下配置文件
生成一下,加载配置文件
6)设置一下同时调试的玩家数量,完成后打开Advanced Settings...
Paste_Image.png
7)设置一下窗口大小,这个根据个人习惯来,我是觉得太大不方便,当然双屏的同学可以笑了
Paste_Image.png
8)然后点击窗口运行
窗口播放
显示结果
此种用引擎调试是不走网络的,属于走127.0.0.1这种地址返回本机,故只能用于调试用,请不要尝试发布多机测试!
--------------------预习部分--------------------
描述一下联网过程:
1)目标:假设需要使2台机器连接到同一个局域网游戏内
2)过程:
2)过程:
a.打开一台主机上的应用,点击创建房间,(这时候该程序会使用UDP的方式在局域网内广播自己建立主机的消息【广播只存在于UDP协议,使用UDP.sendto向地址255.255.255.255实现局域网广播】)
b.启动另一台机器上的应用点击搜索房间,此时后台开启对XXXUDP端口的监听(这个时候就应该搜到刚才开启的主机所发出的广播消息了)
c.拿到地址然后再进行TCP连接,此时就算是正式完成了局域网连接;
b.启动另一台机器上的应用点击搜索房间,此时后台开启对XXXUDP端口的监听(这个时候就应该搜到刚才开启的主机所发出的广播消息了)
c.拿到地址然后再进行TCP连接,此时就算是正式完成了局域网连接;
--------------------预习1核心API--------------------
【Switch Has Authority】
此宏用来判断当前流程线所在应用是否为主机,
是否拥有权限,或者直接认为是否是主机好了
输出结果为:
a.当前流程为主机【Authority】;
b.当前流程不为主机【Remote】;
*同类判断节点还有【has authority】。。。
【Create Session】
此节点用来创建房间/主机,并开启UDP广播,
输入参数有:
a.玩家引用【PlayerController】
b.最大连接数量【PublicConnections】
c.是否使用局域网【UseLAN】
输入参数有:
a.玩家引用【PlayerController】
b.最大连接数量【PublicConnections】
c.是否使用局域网【UseLAN】
创建会话
输出:
d.无异常走【OnSuccess】;
e.发生异常走【OnFailure】;
【Find Session】
此节点用来搜索房间/主机,并开启对UDP端口的监听,
输入参数有:
a.玩家引用【PlayerController】
b.最多返回几个主机的消息【MaxResults】
c.是否使用局域网【UseLAN】
输入参数有:
a.玩家引用【PlayerController】
b.最多返回几个主机的消息【MaxResults】
c.是否使用局域网【UseLAN】
查找会话
输出:
d.流程出同上,
e.返回数组为接收到的主机消息列表【Results】
参数类型为
【Join Session】
此节点使用主机消息引用加入会话,
输入参数有:
a.玩家引用【PlayerController】
b.搜索到的主机结果【Search Result】
输入参数有:
a.玩家引用【PlayerController】
b.搜索到的主机结果【Search Result】
加入会话
输出:
c.流输出同上
--------------------预习部分2RPC(可以不看)--------------------
RPC大家可以略作了解,(作用归纳下来就是实现服务器与客户端的函数互调,即UE4中函数复制的下层实现原理,
因为是客户端与服务器的函数不在同一内存是没法互调的,RPC架构则可以做出这种效果)
直接看知乎上的解释 https://www.zhihu.com/question/25536695
本篇做环境搭建和API预热,对这个话题感兴趣的小伙伴可以留言提问,近期会更新局域网联机第二篇有好的问题我会在之后的帖子里解答
传送门: