联机版游戏
书接上回,这次我们给上个版本的猜数字添加联网功能。
最终项目地址 002GuessNumberMultiPlayer
![](https://img.haomeiwen.com/i1404274/e32d1681985ed36c.png)
注意
点击 Play 边上的小箭头打开选项
- Number of players 输入 2
- 不要勾选 Run dedicated Server
- Advanced Settings 打开高级选项,不要勾选 Multiplayer Options 部分的 Auto Connect To Server
点击 Play,一个窗口中点击创建服务器
,另一个点击加入游戏
,开始体验
项目配置
如果使用引擎自带的联网功能,首先要在 DefaultEngine.ini 中添加如下配置
参考官方示例:多人连线的枪战游戏
[OnlineSubsystem]
DefaultPlatformService=Null
更多注意事项参见前文
从属关系
从编辑器中就可以看出,Level 负责 GameMode 实例的生成,GameMode 负责 GameState 实例的生成。
知道这一点很重要,这样你就会理解,虽然你可能只配置了一种 GameMode,但在关卡切换的过程中,会有不同的 GameMode 以及 GameState 的实例生成。你才会意识到管理你的游戏数据的这些类实例的生命周期。你才能理清你必要的游戏流程。
另外要注意的是,在 Server-Client 模式的联机游戏中,GameMode 实例只有一个,存在于 Server 中,作为一个可信实体,管理核心的游戏规则逻辑。
事件复制
本 Demo 中的网络功能使用引擎封装好的 RPC 功能——事件复制。
蓝图中的代码只有事件是可以在网络上复制的,这里复制的含义是在客户端调用而在服务端执行,或才相反。底层其实就是一端调用了另一端的一个 RPC 接口方法,UE4 隐藏了这些底层细节,你只需要修改事件的 Replicates 属性即可。
还有一点要注意的是,一般概念上的 RPC 是单向的,只能是客户端调用服务端,而 UE4 事件复制的 RPC 是双向的,亦即服务端也可以调用客户端。
注意
- 一定要记得勾选
Reliable
- 正式的开发中核心逻辑执行前要用 Switch Has Authority 节点检查安全有效性
网友评论