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

多人联机定义

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

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

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

点对点(Peer to Peer)

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

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

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

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

 

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

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

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

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

在UE4中测试多人游戏

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

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

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

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

 

LAN(Local Area NetWork)局域网测试

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

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

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

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

 

使用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地址。这是由本地路由器分配的地址,没有人可以从本地网络之外连接到本地网络。

 

外部IP地址,是运营商会为路由器分配一个公共的IP地址,而这个IP地址在互联网中是都可以被看到的,任何信息首先进入外部IP地址,再进本地地址

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

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

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

  • 建立会话

  • 等待玩家加入

  • 玩家登入

  • 开始游戏会话

  • 游玩游戏

  • 结束游戏会话

  • 注销玩家

  • 更新游戏会话或销毁游戏会话。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UE4局域网多人联机项目是一个基于虚幻引擎4开发游戏项目,旨在通过局域网连接多个玩家,实现实时在线游戏体验。 在这个项目中,局域网连接是关键步骤。玩家需要通过局域网连接到同一个局域网网络中,才能进入游戏多人联机模式。这可以通过网络管理工具或者虚幻引擎4提供的网络功能实现。 一旦玩家成功连接到同一个局域网,他们就可以开始体验游戏多人联机模式。游戏可以包括各种不同的玩法,例如竞技对战、合作任务或者团队合作等。玩家可以在游戏中与其他玩家进行交互、合作或者竞争,共同完成游戏任务或者获得胜利。 为了实现局域网多人联机项目,开发团队需要具备一定的网络编程和服务器管理技能。他们需要在游戏中实现合适的网络代码和功能,确保玩家之间的实时通信和数据同步。同时,游戏服务器也需要管理玩家之间的连接和信息传输,确保游戏的稳定运行。 局域网多人联机项目可以提供更加沉浸式和互动性强的游戏体验。与传统的单人游戏相比,多人联机模式可以让玩家与真实的其他玩家互动,增加了游戏的趣味性和挑战性。与此同时,局域网连接也可以提供更快的网络响应速度和更低的延迟,提高了游戏的流畅性和体验质量。 总之,UE4局域网多人联机项目是一项充满挑战和潜力的开发任务。通过合适的网络编程和服务器管理,开发团队可以打造出一个令玩家流连忘返的多人在线游戏体验。 ### 回答2: UE4(Unreal Engine 4)是一款强大的游戏开发引擎,具有广泛的应用领域,包括局域网多人联机项目。局域网多人联机项目是指在局域网环境下,多个玩家通过网络同时进行游戏。 使用UE4进行局域网多人联机项目的开发具有以下几个关键步骤: 1. 网络架构设计:首先需要设计网络架构,确定服务器和客户端之间的通信方式。UE4提供了丰富的网络功能,可以基于蓝图或C++进行开发。 2. 服务器搭建:在局域网环境中,需要建立一台物理或虚拟服务器来处理客户端之间的通信和协调多个玩家的游戏逻辑。UE4提供了专门的服务器模块和API,可以帮助开发者快速搭建服务器。 3. 客户端连接:在启动游戏客户端时,需要实现局域网中的设备发现和连接功能,以便玩家能够加入服务器并与其他玩家进行联机游戏UE4提供了网络连接和握手功能的API,可以帮助开发者实现这些功能。 4. 数据同步和游戏逻辑:实现玩家之间的数据同步和游戏逻辑是局域网多人联机项目中的重要部分。开发者需要确保所有玩家在同步游戏状态和事件时具有一致性。UE4提供了网络同步功能,可以帮助开发者实现这些需求。 5. 网络优化:在开发过程中,需要进行网络优化以确保联机游戏的稳定性和流畅性。这包括减少网络带宽占用、处理网络延迟和丢包等问题。UE4提供了网络调试和优化工具,可以帮助开发者进行网络性能的调优。 总之,使用UE4进行局域网多人联机项目的开发需要进行网络架构设计、服务器搭建、客户端连接、数据同步和游戏逻辑的实现,以及网络优化。开发者可以充分利用UE4强大的网络功能和工具来创建稳定、流畅的局域网多人联机游戏。 ### 回答3: UE4是一款功能强大的游戏引擎,可以通过其提供的多人联机功能,在局域网内实现多人游戏联机。在UE4中,可以使用一些基本的功能和技术来实现局域网多人联机项目。 首先,需要建立一个网络架构,选择合适的游戏服务器模型。UE4支持不同的服务器模型,包括基于客户端的服务器架构和基于服务端的服务器架构。可以根据自己的项目需求选择适合的服务器模型。 接下来,可以使用UE4提供的网络蓝图功能来编写游戏逻辑和网络功能。网络蓝图可以方便地创建和管理游戏的网络事件、变量和功能。可以使用网络蓝图创建多人联机游戏的各种功能,例如玩家同步、游戏状态同步和网络事件处理等。 此外,还可以使用UE4提供的多人联机功能来处理玩家之间的连接和通信。可以使用UE4的Session系统来管理玩家的连接和断开,以及处理玩家之间的数据传输和同步。 局域网多人联机项目还需要考虑网络性能和优化,以确保游戏在局域网中能够流畅运行。可以使用UE4提供的网络优化工具和技术来提高游戏的性能和稳定性,例如带宽限制、数据压缩和复用等。 总而言之,通过使用UE4提供的网络功能和技术,可以相对轻松地实现局域网多人联机项目。需要建立适合的网络架构,编写游戏逻辑和网络功能,处理玩家的连接和通信,以及优化网络性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值