本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P4 测试多人游戏(Testing Mutiplayer)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。
文章目录
- P4 测试多人游戏
- 4.1 如何在编辑器中测试游戏
- 4.2 通过局域网进行测试连接
- 4.3 Summary
P4 测试多人游戏
本节课将讨论如何采用编辑器中播放模式(PIE,Play in editor)测试多人游戏,以及如何通过局域网(LAN, Local Area Network)连接到游戏。
4.1 如何在编辑器中测试游戏
下面讲解如何使用虚幻引擎内置的 多人测试功能(Multiplayer testing capabilities)。
- 新建“第三人称游戏”工程项目
MPTesting
,项目默认设置这里选择 C++。
- 在工具栏上点击 “修改游戏模式”按钮 “⋮”,在下拉菜单栏中可以看到 “多玩家” 选项卡,其中:
- “玩家数量”(Number of Players) 可以修改成 1 ~ 4 之间的整数值,这里修改为 2,意味着当游戏开始时,两个游戏的实例(Instance)会同时运行。
- “网络模式” (Net Mode)设置虚幻引擎 编辑器播放游戏(Play In Editor,PIE)的方式。选择 “Standalone” 将启动一个独立的游戏,不会创建专用服务器,也不会连接到服务器中;选择 “以监听服务器运行”(Play As Listen Server),编辑器将同时用作服务器和客户端,超出的额外实例可能会被打开,这取决于客户端的数量;选择 “以客户端运行”(Play As Client) ,编辑器将用作客户端,虚幻引擎将为我们创建一个专用服务器(Dedicated server),并在其中运行游戏实例。
- 选择 “网络模式” 为 “以监听服务器运行”,点击工具栏上的 “播放” 游戏按钮 “▶”,可以看到两个游戏实例被打开,其中较小那个窗口的标题栏上提示该窗口运行的实例为 “客户端”,可以点击该窗口对人物进行控制。
4.2 通过局域网进行测试连接
通过局域网(LAN, Local Area Network)进行连接测试,以确保两台机器连接在一起时多人游戏可以正常运行。
-
局域网通常情况下有一个连接了多台机器的路由器(或同一个 Wi-Fi),每个台机器都会分配一个 IP 地址。由于它们都连接到了同一个路由器中,因此它们之间可以通过本地 IP 地址互相访问。
-
使用蓝图搭建连接测试逻辑。在 “Content/Thirdperson/Blueprints” 目录下双击“BP_ThirdPersonCharacter”,打开完整蓝图编辑器。拖拽界面上方的 “BP_ThirdPersonCharacter” 选项卡到 “ThirdpersonMap” 选项卡的右边,以便于在蓝图编辑窗口和编辑器主界面之间快速切换。
-
在 “BP_ThirdPersonCharacter” 蓝图编辑器面板中添加三个键盘事件 “1”,“2”,“3”。
-
设计一个按下键盘 “1” 键,就可以切换到等待其他玩家进入多人游戏的事件。在菜单栏(Menu Bar)下拉菜单中选择 “新建关卡” (New Level),选择 “Basic” 关卡(Level),在菜单栏(Menu Bar)下拉菜单中选择 “保存当前关卡” (Save Current Level),保存到 “Content/Thirdperson/Maps” 目录下,命名为 “Lobby”,表示这是其他玩家通过 LAN 连接后前往的关卡。
-
回到“BP_ThirdPersonCharacter” 蓝图编辑器面板。从节点 “1” 的 Pressed 引脚处拖拽出一条线,连接 “打开关卡 (按名字)” (Open Level (by Name))节点,并修改该节点的选项 “Level Name” 为 “Lobby”,修改选项 “Options” 为 “listen”,表示按下“1”就打开 “Lobby” 并指定其为监听服务器。
-
从节点 “2” 的 Pressed 引脚处拖拽出一条线,连接 “执行控制台命令” (Execute Console Command)节点,然后修改该节点的选项 “Command” 为 “Open 192.168.3.12”,表示当键入 “2” 时,当前的游戏实例将会与本机进行 LAN 连接,然后可以载入本机已经运行的关卡 “Lobby”,其中 “192.168.3.12” 是本机
IPv4
地址,可以通过在命令提示符中键入命令行ipconfig
查看。最后点击工具栏的 “编译” 和 “保存” 按钮。
-
打包项目。在工具栏中选择 “平台”,接着选择 “Windows”,点击 “打包项目”,在弹出的资源管理器窗口中找到工程 “MPTesting” 目录,新建一个文件夹 “Build” 并选择。
Notes
- 如果出现 “SDK未设置” 错误提示 “Windows的SDK未正常安装,而其是生成数据的必需项。请检查主工具栏中“启动”菜单的SDK部分来更新SDK”,解决办法参见《UE5打包SDK未正确安装的问题》。
- 如果打包失败,出现错误提示 “
ERROR: No target name was specified on the command-line.
”,原因可能是因为C++
项目名称不合法,比如项目名称为Test
,或者出现了 “%-!
” 等特殊字符以及中文。
-
打包完成后可以看到 “Build” 目录下生成了 “Windows” 文件夹,其中包含 “MPTesting” 应用程序。将本机(姑且叫设备1)的这个 “Windows” 文件夹发送到另一台设备(姑且叫设备2)上以准备进行测试,确保两个设备在同一个 LAN 下。
-
在设备1上运行 “MPTesting.exe”,在游戏窗口打开后按下 “1” 键,可以看到成功由默认关卡 “ThirdpersonMap” 跳转到关卡 “Lobby”。
在设备2上运行 “MPTesting.exe”,可能会出现 “WARNING…” 对话框,直接点击 “确定” 按钮即可。游戏窗口打开后按下 “2” 键,可以看到成功由默认关卡 “ThirdpersonMap” 跳转到设备1的关卡 “Lobby”,并且关卡中有两个 Character。
4.3 Summary
本节课主要学习虚幻引擎内置的多人游戏测试功能,接着使用蓝图编写 LAN 连接事件,然后对项目进行打包并在两台设备上进行 LAN 连接测试。
在 4.2 通过局域网进行测试连接 的 步骤 7 中,如果打包项目时出现 “SDK未设置” 错误提示 “Windows的SDK未正常安装,而其是生成数据的必需项。请检查主工具栏中“启动”菜单的SDK部分来更新SDK”,解决办法参见《UE5打包SDK未正确安装的问题》;如果出现错误提示 “ERROR: No target name was specified on the command-line.
”,原因可能是因为 C++
项目名称不合法,比如项目名称为 Test
,或者出现了 “%-!
” 等特殊字符以及中文。