UE4之简单的多人游戏

       UE4多人游戏主要用到CreateSession,FindSession和JoinSession,功能分别是创建会话,查找会话以及加入会话。以下第三人称模板为例实现一个两人游戏。
       1、创建第三人称模板工程,删除ThirdPersonExampleMap关卡中原有的ThirdPersonCharacter角色,拖入两个PlayerStart,调整好位置,如果想更好的控制角色位置可以修改它的PlayerStartTag标签,这里分别修改为Player1和Player2,如图:


 

       2、创建一个UMG蓝图,命名为MainWidget,拖入如下控件,并调整好位置,服务器列表用一个字符串下拉框显示,显示查找到的所有服务器名。

     3、创建游戏:创建游戏按钮Onclicked事件如下图:

      CreateSession的PublicConnections设置最大连接数,这个数目包括创建游戏的服务器,这里设置为2,UseLAN使用局域网,游戏创建成功后使用OpenLevel打开游戏关卡也就是ThirdPersonExampleMap,由于我们要创建的是监听服务器(相对专用服务器而言),所以Options要加上"listen"。
       4、查找游戏:在一个客户端执行了创建游戏后变为了监听服务器,在另一个客户端上就可以查找到该服务器,查找游戏的OnClicked蓝图代码如下:

       FindSession的MaxResults是要查找的服务器最大数目,UseLAN使用局域网。该函数返回BlueprintSessionResult类型的数组,我们用SessionServers将查找结果保存,并添加到服务器列表的下拉框中,默认选中第一个。
       5、加入游戏:从下拉列表中选择一个服务器,点击加入游戏,就可以加入到该服务器创建的游戏中,OnClicked事件蓝图代码如下:

     下拉列表保存的是服务器名称,通过名称去SessionServers找到服务器,调用JoinSession,调用成功即可加入到游戏。
     6、最后创建一个空白关卡,创建和显示UMG,由于这个关卡只有界面操作,因此将鼠标显示出来,方便点击。

     7、要开启联网功能,还需要在Config/DefaultEngine.ini文件添加如下配置项,修改完之后要重启UE4才能生效。

[OnlineSubsystem]
DefaultPlatformService=Null

这里要根据具体环境具体配置,见官方文档说明:

Once you open it up, you will need to specify the OnlineSubsystem to use as well as the DefaultPlatformService that corresponds to your subsystem.

For example, you can play over a LAN by adding the OnlineSubsystemNull:

[OnlineSubsystem]
DefaultPlatformService=Null
Or you can play over Steam for example, using the OnlineSubsystemSteam:

[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
bVACEnabled=0

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

8、操作结果:

       如果是在编辑器中测试多人游戏,只需将游戏玩家数设置为需要的值即可,如下图:

       以上已经实现了一个简单的多人游戏,下面介绍如何更好的控制角色类和角色位置。
       游戏模式基类AGameModeBase中有三个虚函数PreLogin,Login和PostLogin,如果需要更复杂的控制功能(如拒绝连接)可以在C++代码中重载这三个函数,以下是官方文档说明:

      以PreLogin为例,PreLogin原型为:

virtual void PreLogin(const FString& Options, const FString& Address, const FUniqueNetIdRepl& UniqueId, FString& ErrorMessage);

      只要在函数中将ErrorMessage设置为非空字符串就可以拒绝连接并将ErrorMessage作为连接错误信息。
      PostLogin中调用了一个可由蓝图实现的函数,在蓝图中显示为OnPostLogin:

UFUNCTION(BlueprintImplementableEvent, Category=Game, meta = (DisplayName = "OnPostLogin", ScriptName = "OnPostLogin"))
void K2_PostLogin(APlayerController* NewPlayer);

       新建一个游戏模式类,继承自ThirdPersonGameMode,在工程设置中将游戏模式替换为新的游戏模式,打开该蓝图,右键搜索OnPostLogin,在该函数中我们可以创建自己的角色,并决定生成的位置(使用到第1步中定义的PlayerStartTag),这里通过判断PlayerStartTag将两个玩家的位置固定,如果没有这个判断角色出现的位置不好控制。


     更多功能可以参考官方示例“多人枪战游戏”

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答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提供的多人联机功能来处理玩家之间的连接和通信。可以使用UE4Session系统来管理玩家的连接和断开,以及处理玩家之间的数据传输和同步。 局域网多人联机项目还需要考虑网络性能和优化,以确保游戏在局域网中能够流畅运行。可以使用UE4提供的网络优化工具和技术来提高游戏的性能和稳定性,例如带宽限制、数据压缩和复用等。 总而言之,通过使用UE4提供的网络功能和技术,可以相对轻松地实现局域网多人联机项目。需要建立适合的网络架构,编写游戏逻辑和网络功能,处理玩家的连接和通信,以及优化网络性能和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值