本文为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
,或者出现了 “%-!
” 等特殊字符以及中文。