多人联机定义

单人游戏中一台电脑只有一个游戏会话(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就会帮助我们建立连接。

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

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

  • 建立会话

  • 等待玩家加入

  • 玩家登入

  • 开始游戏会话

  • 游玩游戏

  • 结束游戏会话

  • 注销玩家

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

UE4第三人称多人联机游戏开发01相关推荐

  1. arcalet云服务平台支持Unity3D开发实时多人联机游戏

    arcalet 云服务平台支持 Unity3D 开发实时多人联机游戏 打破旧有的实时联机开发模式,全新的云端在线游戏平台带来更敏捷.简单及有 效的帮助开发者减少开发时间与成本. 开发联机游戏除了要解决 ...

  2. 多人联机游戏中联网模块(Socket)的设计和各种问题解决

    这是我自己做的一个多人联机游戏中网络部分的总结.全部为自己全新做的,没用开源软件(有一个网络游戏开源软件Raknet).目的是写一个属于自己的可靠网络模块,修改.扩展后在很多地方都能用得着.也想自己从 ...

  3. 多人联机游戏是如何设计的,好的MMORPG游戏需要哪些方面

    游戏世界和剧情设计: 一个好的MMORPG需要一个有趣的游戏世界和引人入胜的剧情.开发者需要投入大量时间和精力来设计游戏世界和剧情,包括地理.历史.文化.角色设计等. 游戏平衡性设计 MMORPG需要 ...

  4. flex 联机游戏开发 - 四国军棋游戏:(三) 核心类

    通过前面的练习 flex 联机游戏开发 - 四国军棋游戏:(二)棋盘棋子 我们已经成功地用不到200行的代码绘制出了一个漂亮的棋盘,现在,我们开始进入游戏的核心类设计阶段.四国军棋的游戏逻辑还是比较复 ...

  5. flex 联机游戏开发 - 四国军棋游戏:(三) 核心类设计

    通过前面的练习 flex 联机游戏开发 - 四国军棋游戏:(二)棋盘棋子 我们已经成功地用不到200行的代码绘制出了一个漂亮的棋盘,现在,我们开始进入游戏的核心类设计阶段.四国军棋的游戏逻辑还是比较复 ...

  6. 基于Unity的多人协作游戏开发

    基于Unity的多人协作游戏开发–第一次迭代 小组成立与大型应用软件设计第一周课堂,小组由一共5名成员组成,由王虎林担任组长,组员分别是:陈志健 李子钊 杨捷 林博韬.下面将是我们第一次迭代的主要历程 ...

  7. 大型多人在线游戏开发

    http://book.csdn.net/bookfiles/329/index.html 书名:大型多人在线游戏开发 作者:(美)亚历山大 编,史晓明 译 来源:人民邮电出版社 出版时间:2006年 ...

  8. Blueprints - UE4第三人称游戏角色控制

    虚幻引擎4中第三人称游戏相关,UE4中Blueprint相关,个人学习笔记:

  9. UE4第三人称射击游戏总结一

    第三人称和第一人称的区别: 第三人称:镜头在人身后 第一人称:镜头就是眼睛,拿着枪瞎突突 新建项目,创建GameFile文件夹,创建蓝图类的三个类:3P_GameInstance,  3P_GameM ...

  10. unity多人联机插件_Mirror ---Unity多人联机游戏API(一)

    Mirror是Unity 商店的资源: https://assetstore.unity.com/packages/tools/network/mirror-129321 Mirror是 high l ...

最新文章

  1. 千呼万唤始出来!OpenCV 4.0正式发布!
  2. 14年阿里巴巴管理经验总监:教你管理7步心法(演讲全文)
  3. python测验4_python接口自动化测试四:代码发送HTTPS请求
  4. tibco汉化包6.3.0_TIBCO BusinessWorks 6和Container Edition与BW5的比较
  5. [C++] - 闭包(closure)
  6. 编译php的问题,php编译常见错误
  7. Sentinel-1 影像与精轨数据下载(经常更新中)
  8. java自身的rsa算法效率低下问题
  9. [渝粤教育] 九江学院 材料分析及测试技术 参考 资料
  10. 提升营业额的正确方法
  11. 利用WinPcap模拟网络包伪造飞秋闪屏报文
  12. 网易2018实习生招聘笔试题
  13. ubuntu中显示实时网速的方法
  14. 《 阿Q正传》-鲁迅 词语解释 | 经典语录
  15. 关于openGL, openGL ES, openVG及android中2D调用关系的报告
  16. 逆向工程实验Lab0
  17. Linux常用服务部署与优化
  18. moment获取近期时间
  19. 安徽航信研发项目管理体系探索与实践
  20. discuz防灌水设置

热门文章

  1. 《The UVM Primer》——chapter3: Interface and BFM
  2. windows底层编程基础
  3. 手把手教你运用JAVA爬虫技术爬取小说
  4. python函数输入参数数量_如何实现Python函数的参数不限个数?
  5. 红米3 android 版本升级失败,疑似官方推送错误固件 红米Note3全网通升级后变砖...
  6. 年轻代和老年代垃圾回收
  7. php货币2019年12月31日汇率,2019年12月31日中国外汇交易中心受权公布人民币汇率中间价公告...
  8. 《Person Re-identification:Past, Present and Future》论文笔记
  9. 项目管理知识体系指南(六)项目成本管理
  10. 还在用网盘备份同步3D图纸?你落伍了