UE4第三人称多人联机游戏开发01

这篇具有很好参考价值的文章主要介绍了UE4第三人称多人联机游戏开发01。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

多人联机定义

单人游戏中一台电脑只有一个游戏会话(Session),我们可以通过在同一电脑中分屏并用不同的输入设备,单人游戏不需要使用互联网。

多人游戏中,游戏实例在独立的两台电脑中运行,而由于玩家在不断地输入指令,因此我们需要将一个游戏实例中的信息通过互联网传输到另一个游戏实例中。

那么对于传输信息的方式,我们有以下几种定义:

点对点(Peer to Peer)

UE4第三人称多人联机游戏开发01

这种传输方式非常容易实现,但是点对点有较大的缺陷,当多人游戏中玩家数量增加时,点对点传输的信息将会急剧增加,造成网络传输中的巨大开销。

UE4第三人称多人联机游戏开发01

 此外,点对点传输模式中没有一个权威的游戏实例,每一个游戏实例由于网络传输的滞后都会产生轻微的不同,因此不同机器上的游戏实例都是不同的,这并不是我们想要看到的。

客户端——服务端(Client-Server)

为了解决点对点中出现的问题,我们将一台机器指定为服务器,其他所有机器被指定为客户端,所有客户端通过服务端交换信息,客户端之间不会直接收发信息。因此每一个客户端只要满足固定的带宽用于发送和接收来自服务器的消息。

UE4第三人称多人联机游戏开发01 

服务端是权威的(Authority),这意味着服务端上运行的游戏是正确的版本

UE4第三人称多人联机游戏开发01

客户端-服务端的模式有以下两种

聆听服务器:将一个玩家的机器充当服务器。服务器在发送信息的同时也在渲染图形。

专用服务器:指定一个专门的机器作为服务器,没有人在服务器上游玩游戏,因此服务器中不需要渲染图形。

在UE4中测试多人游戏

首先我们使用第三人称模板建立一个C++工程。 

UE4第三人称多人联机游戏开发01

在UE4中,提供了完整的测试客户端与服务端的功能,在运行中,我们可以选择是以聆听服务器启动或者是以客户端启动。

可以看到左下窗口作为了客户端,而编辑器中的游戏实例作为聆听服务器,玩家移动时,在服务端和客户端上我们都可以看到。

UE4第三人称多人联机游戏开发01

而当我们使用专用服务端启动时,我们可以看到窗口和编辑器中的游戏实例都是作为客户端启动,可以看到游戏中还有一个Character,这是由于初始时我们放置在游戏关卡中的,而当启动专用服务端后,这个角色将不会被任何客户端控制,专用服务器将会生成额外两个角色。

UE4第三人称多人联机游戏开发01

 

LAN(Local Area NetWork)局域网测试

局域网络:所有玩家链接在同一个路由器上,我们可以通过本地IP地址访问同一网络内的其他计算机。

UE4第三人称多人联机游戏开发01

我们可以通过添加一些逻辑操作测试LAN功能,首先我们建立一个默认关卡作为联机大厅。

同时当我们按下2键时,使用蓝图执行控制台命令,命令行为“Open 192.168.1.27”

经过验证,只要两台电脑在同一个路由器下,我们就可以得到联机效果。

UE4第三人称多人联机游戏开发01

UE4第三人称多人联机游戏开发01 

使用C++进行LAN链接

在上面的教程中,我们使用蓝图进行了LAN的链接测试,我们同样可以使用C++编写相应的函数得到相同的功能。

我们在TPtestingCharacter.h文件中声明三个新函数。

void ATPtestingCharacter::OpenLobby()
{
   UWorld* World = GetWorld();
   if (World)
   {
      World->ServerTravel("/Game/ThirdPersonCPP/Maps/Lobby?listen");
   }
}

void ATPtestingCharacter::CallOpenLevel(const FString& Address)
{
   //由于这里Address是FString,而函数中需要的是FName,因此我们用星号将Address转换为一个C风格的字符串
   UGameplayStatics::OpenLevel(this, *Address);
}

void ATPtestingCharacter::CallClientTravel(const FString& Address)
{
   APlayerController* PlayerContorller = GetGameInstance()->GetFirstLocalPlayerController();
   if (PlayerContorller)
   {
      PlayerContorller->ClientTravel(Address, ETravelType::TRAVEL_Absolute);
   }
}

在线子系统

本地IP地址,也称为内部IP地址。这是由本地路由器分配的地址,没有人可以从本地网络之外连接到本地网络。

UE4第三人称多人联机游戏开发01 

外部IP地址,是运营商会为路由器分配一个公共的IP地址,而这个IP地址在互联网中是都可以被看到的,任何信息首先进入外部IP地址,再进本地地址UE4第三人称多人联机游戏开发01

虚幻的在线子系统可以帮助我们只关注UE上面的代码,连接不同平台的代码都将会被虚幻给抽象掉,在线子系统中包含了我们需要连接服务的函数,我们只需要指定特定的服务器,UE就会帮助我们建立连接。

UE4第三人称多人联机游戏开发01

在线子系统可以使用一系列的接口来对应不同平台上的各项服务,例如朋友列表,成就等等。

多人游戏中创建游戏会话的过程:

  • 建立会话

  • 等待玩家加入

  • 玩家登入

  • 开始游戏会话

  • 游玩游戏

  • 结束游戏会话

  • 注销玩家

  • 更新游戏会话或销毁游戏会话。文章来源地址https://www.toymoban.com/news/detail-471475.html

到了这里,关于UE4第三人称多人联机游戏开发01的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity移动端第三人称控制器

    在Hierarchy面板空白地方右键-3D Object创建一个Plane和一个Capsule 鼠标单击选中Capsule 在右侧Inspector面板删除Capsule Collider碰撞体组件 添加一个Character Controller(角色控制器,自带一个碰撞体)和一个脚本ThirdPersonController(名字可以自己取) 在 ThirdPersonController 中定义变量: 在 Start 中初始

    2024年02月02日
    浏览(39)
  • Unity笔记:第三人称Starter Asset代码学习

    自己看了几篇文章和视频,写了个人物移动脚本,有很多瑕疵。这个时候研究一下优秀的代码总是好的,Unity官方有Third Person Starter Asset可供研究,其官方商店页面是:Starter Assets - ThirdPerson | Updates in new CharacterController package 官方B站介绍视频是:Bilibili - [Unity教程]-Starter Asset

    2024年02月22日
    浏览(43)
  • Unity第三人称如何让人物始终朝向相机方向移动

    不知道如何制作简易第三人称相机的同学可以看我的这篇文章:Unity如何实现第三人称相机跟随 我们在开发第三人称游戏过程中很容易遇到:我们的玩家角色,他面对北方,背后有一台摄像机,正巧也是面对北方。现在,他向右转90度,面对东方。此时如果让他向前走,那么

    2024年02月06日
    浏览(59)
  • Unity 第三人称 玩家控制器+相机控制器

    今天给大家分享一个简单的Unity第三人称视角下玩家控制器和相机控制器的脚本编写方法。   效果如下: 主要分三部分实现:人物旋转、人物移动、相机旋转。 1.人物移动: 首先获取到人物水平和垂直移动的参数: 因为人物移动的方向跟摄像头一致,所以需要根据摄像头的

    2024年02月06日
    浏览(43)
  • VR工地安全虚拟现实体验:多种事故模拟,第三人称回看

    建筑工地五大伤害是指:高处坠落、坍塌、物体打击、机械伤害、触电。利用VR(虚拟现实)技术体验建筑工地五大伤害,可以为建筑工人提供更真实、更安全的工作环境,同时也可以帮助他们更好地了解和掌握工作技能。 以下是 VR工地安全虚拟现实体验软件 的价值: 首先,通

    2024年02月12日
    浏览(39)
  • unity-第三人称摄像机简单脚本(包括跟随、视角旋转、滚轮缩放)

    本菜鸟为了实现第三人称视角摄像机的主要功能,踩了很多意料之外的坑,终于搞出一份自觉完美的脚本,分享一下。 功能:摄像机跟随、鼠标滚轮缩放视野、长按鼠标右键左右旋转视野、长按鼠标中键上下旋转视野。 此脚本挂接在摄像机上,有详细注释,可直接运行。

    2024年02月08日
    浏览(39)
  • unity3d 实现第三人称移动与摄像机调整

    首先展示效果 unity3d 关于人物移动,这里推荐使用Character Conrroller组件,优点就是可以不用处理刚体,不受重力的影响,自带物理碰撞检测。  人物移动代码包括转向 接下来就是摄影机的调整,这里使用unity自带的插件cinemachine,非常的推荐,无需使用冗杂的代码即可设计较好

    2024年02月11日
    浏览(36)
  • UE4 无用の小技巧之联机游戏获取自身控制器

    文章内容仅为个人学习所得,如有错误,还请指正!谢谢 通常在UE4中获取玩家控制器是使用GetPlayerController,但在联机游戏中,想要获取玩家所拥有的控制器时,常规的GetPlayerController所获取的控制器只在服务端是正确的,因为在联机模式下,玩家的PlayerIndex是不一致的 在Paw

    2024年02月12日
    浏览(35)
  • 关于UE4多人局域网联机游戏中联网和回放的设置细节问题

    我们在游戏开发、仿真推演中可能会遇到这样的需求: 要搭建局域网,可以多人对战的。 要可以回放,能把大家玩耍的过程记录下来,重放给玩家们看,做复盘。 于是我们需要开发【联网】和【回放】功能。联网使用RPC方式,通过事件发送来实现。回放是将事件按时间顺序

    2024年02月01日
    浏览(54)
  • UE4/5多人游戏详解(七、自定义委托,实现寻找会话和加入会话的函数,通过Steam进行两台电脑的联机)

    目录 可能出现问题(在六部分的测试可能无法连接的问题【在末尾加上了,怕有人没看见在这里写一下】) 自定义委托 调整位置 创建更多的委托和回调函数给菜单: 多播和动态多播  代码: 委托变量  代码: 回调函数  代码: 绑定委托和动态函数:  代码: 头文件添加

    2024年02月04日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包