多人局域网游戏学习笔记:

视频网址:

https://www.bilibili.com/video/av42635205?from=search&seid=13300639985119867331

本地局域网运行,LAN模式,config中的DefaultEngine.ini文件中增加

[OnlineSubsystem]

DefaultPlatformService=Null

关卡设置:

MainMenu为开始关卡,空,默认设置

Arena01,Arena02为游戏关卡,第三人称地图,修改gamemode,playercontroller,defaultPawnclass

Lobby为大厅关卡,仅平面地图,增设PlayerStart点和BlockingVolume修改gamemode,playercontroller,defaultPawnclass

TravelMap空,默认设置

一、AllLevel

  • GameInfoInstance
  1. 展示MainMenu,允许鼠标光标
  2. 保存游戏,分情况显示MainMenu和OptionMenu
  3. 显示HostMenu
  4. 显示ServerMenu
  5. 显示OptionMenu,根据save文件是否存在决定WelcomMessageVis是否显示
  6. 显示LoadingScreen
  7. 进入大厅,参数传递:最大玩家数量,server名字,是否enable LAN,显示 Loading Screen后openLevel
  8. 执行Joinserver显示 Loading Screen后joinSession
  9. 调用时销毁游戏进程DestroySessionCaller
  10. 事件NetworkError和TravelError通过宏DisplayErrorMessage显示ErrorDialog窗口
  • PlayerInfo

存储玩家相关信息:姓名,头像,角色,角色头像,当前状态

  1. PlayerSaveGame

只包含一个结构体变量

二、Character

1、0_Base

重定向动画蓝图

2、创建子类蓝图

三、Gameplay

  • GameplayGM
  1. 事件OnSwapPlayerControllers:保持追踪连接的Player Controller
  2. RespawnPlayer:获取初始位置,摧毁原有Pawn生成新的Pawn,设置Possess
  3. 事件OnLogout:获取GameInfoInstance和GameplayPC,执行Destroy Session Caller
  • GameplayPC
  1. 事件BeginPlay:获取Local Controller,移除所有widget,加载游戏,向Server传递角色信息
  2. PassCharacterInfoToServer(服务器):设置PlayerSettings获取Gamemode重生玩家RespawnPlayer,设置聊天窗口
  3. SetupChatWindow(客户端):创建GameplayChat控件,添加到视口
  4. getChatMessage(服务器):变量存储用户名和要发送的信息,遍历所有的PlayerController更新聊天窗口的信息
  5. UpdateChat(客户端):调用GameplayChatWB,获取GameplayChat,调用UpdateChatwindow
  6. 按键T切换鼠标显隐

四、MainMenu

  • UI

1.MainMenu

2.OptionMenu

​​​​​​​

3.ServerMenu

4.HostMenu

5.ErrorDialog

五、Lobby

  • LobbyGM
  1. RespawnPlayer获取GetControllerPawn存在则销毁,在原位置处生成新的Actor并Possess
  2. EveryoneUpdate:判断当前连接人数大于0,清空connectPlayer,遍历AllPlayercontrollers,Update Number Of Players(LobbyPC);完成后AddPlayerInfo(LobbyPC),UpdateAvailableCharacter(LobbyPC),然后Add to KickedList;完成后判断当前角色是否0_Base,角色改变了Can We Start为真。
  3. Add to KickedList:获取playercontroller,获取LobbymenuWB,获取GameSetting,执行FillPlayersWindow刷新玩家窗口
  4. 事件OnPostLogin:有玩家进入此事件执行,switch has Authority (Authority连接指的是服务器),收集所有的PlayerController存储为AllPlayerController,收集所有的PlayerStart存储为SpawnPoint,获取GameInstance中的ServerName和MaxPlayers,设置大厅,更新大厅,重生玩家
  5. 事件OnLogout:遍历所有controller找到当前controller并移除,相应AvailableCharacters设置为false,移除相应ConnectPlayers,使所有人更新Everyone Update
  6. ServerUpdateGameSetting(服务器):在服务器上设置地图的图标,名称,时间,ID,遍历所有的controller,更新LobbySetting
  7. 剔除:YouHaveBeenKicked(服务器)调用LobbyPC中的Kicked(客户端)
  8. LaunchTheGame:根据GM Map ID开启整型,执行命令行Execute Console Command,命令为servertravel/Game/Maps/Arena01(注意:该命令行的执行应设置为独立窗口运行的情况下,在类默认值中设置Use SeamlessTravel为True)
  • LobbyPC
  1. 初始化:事件BeginPlay,执行Initial Setup
  2. InitialSetup:检查游戏存储信息SaveGameCheck,获取玩家信息后,服务器更新信息Call Update
  3. SaveGameCheck:保存文件存在则先LoadGame然后SaveGame
  4. CallUpdate(在服务器上执行):设置playerSetting,执行角色替换Swap Character(LobbyGM)和EveryoneUpdate(LobbyGM)
  5. AddPlayerInfo(客户端):获取所有连接的玩家,在lobbyMenu界面清空玩家列表ClearPlayerList,更新玩家信息UpdatePlayerWindow
  6. setupLobbyMenu(客户端):创建LobbyMenu窗口显示
  7. UpdateLobbySetting(客户端):更新LobbyMenu的信息图片,名称,时间
  8. ShowLoadingScreen(客户端):去掉LobbyMenu,显示LoadingScreen
  9. UpdateNumberOfPlayers(客户端):更新LobbyMenu中的玩家数量
  10. 断开连接: 服务器断联 Event End Play -destroy Session; 剔除 Kicked(客户端)先打开MainMenu关卡在destroy Session
  11. UpdateAvailableCharacter(客户端):更新角色选择显示,没有选的角色为可选状态
  12. AssignSelectedCharacter(服务器):处理角色选择,决定角色是否可以被分配
  13. CharacterCheck(函数):把当前角色的available characters设置为true,preview的设置为false然后分配角色AssignPlayer
  14. AssignPlayer(客户端):分配角色,保存,callUpdate在所有机器上更新
  15. GetChatMessage(服务器):获取发送文字,发送方名称,遍历所有PlayerController调用UpdateChat事件
  16. UpdateChat(客户端):获取Lobby Menu WB,获取ChatWindow执行UpdateChatWindow
  17. T:切换显示玩家列表和大厅设置界面
  • UI

1.characterSelect

2.ConnectedPlayer

3.GameSetting

4.LobbyMenu

5.PlayerButton

六、其他

1、ChatUI

  1. ChatText

2、ChatWindow

3、GameplayChat

2、loadingScreen

附录

DefaultEngine.ini

使用Steam

[/Script/Engine.GameEngine]

+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]

DefaultPlatformService=Steam

[OnlineSubsystemSteam]

bEnabled=true

SteamDevAppId=480

[/Script/OnlineSubsystemSteam.SteamNetDriver]

NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

使用LAN

[OnlineSubsystem]

DefaultPlatformService=Null

多人局域网游戏纯蓝图相关推荐

  1. UE4之多人局域网游戏中GameMode/PlayerController/Pawn/Character/GameInstance/GameState/PlayState 6个类的生成情况和生成个数

    注:本文所有的讨论是在以 "监听服务器的模式" 为前提下得出的.        若是独立服务器模式,那么本文得出的结论可能会不成立. 开篇先放一张图: 由上面那张图思考如下: 如果 ...

  2. 关于UE4多人局域网联机游戏中联网和回放的设置细节问题

    背景 我们在游戏开发.仿真推演中可能会遇到这样的需求: 要搭建局域网,可以多人对战的. 要可以回放,能把大家玩耍的过程记录下来,重放给玩家们看,做复盘. 于是我们需要开发[联网]和[回放]功能.联网使 ...

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

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

  4. UE4之制作局域网游戏

    首先需要改一下配置文件 Config里的DefaultEngine.ini 添加一行代码 [OnlineSubsystem] DefaultPlatformService=<Default Pl ...

  5. 快节奏多人在线游戏网络入门系列教程(1):简介

    简介 该系列教程主要讨论快节奏多人在线游戏的网络相关的技术和算法.这是该系列教程的第一章,如果你对多人在线游戏有一定了解,可以跳过本章. 开发任何一款游戏都是一个挑战性的任务.而多人在线游戏增加了更多 ...

  6. 我亲眼看到一群人通过游戏推广翻身,推广游戏的主播成为亿级大佬

    我是亲眼看着一大票人逆袭翻身,一跃成为亿级大佬.我身边的男人基本都是想做这个翻身的.关键这模式还是没有什么门槛的.通过游戏推广公会,手游推广,手游Cps翻身,可以说是逆袭中的传奇人物.很多业内人士肯定 ...

  7. Snake贪吃蛇小游戏纯js代码

    Snake贪吃蛇小游戏纯js代码 先给个效果图,一样的简单而又纯朴,回归贪吃蛇最原始的状态 还是先分析一下,使用面向对象编程真的降低了编程的难度(只要前期把思路想好,各个类,属性,方法抽象出来),就真 ...

  8. phaser.min.js_如何使用Phaser 3,Express和Socket.IO构建多人纸牌游戏

    phaser.min.js I'm a tabletop game developer, and am continually looking for ways to digitize game ex ...

  9. 多人VR游戏或成未来VR游戏发展的爆点

    VR游戏体验那么多,为什么说多人制VR游戏会成为VR游戏爆发的关键点? 之前我们统计了Steam上好评最高以及用户数量最多的VR游戏,其中Valve发行的<The Lab>夺得双冠.这个结 ...

最新文章

  1. 《团队项目开发之三对一维环形数组的求解》
  2. dataframe for 循环 数据格式 python_Python中的for循环
  3. aac蓝牙编解码协议_蓝牙音频编码哪个音质好?今天我们来逐一解读
  4. Java开发面试题,Spring面试题整理(1)
  5. 无线网桥的特点及应用方案
  6. 【转载】这次拆库 应是微服务化的拆分方式
  7. 为了在简历上写掌握【Java多线程和并发编程】,做了两万字总结
  8. 可替代的C语言开发环境
  9. JAVA win10 JDK环境配置(内含JDK,eclipse安装包)
  10. Music Radio Beta-Perview 1.0.0.0.(做了一个听音乐电台的东东.:)
  11. 安恒信息明御WEB应用防火墙产品白皮书
  12. m227fdw恢复出厂设置_惠普M227fdw说明书
  13. 大气化学实验卫星 ACE-FTS(SCISAT) 相关介绍
  14. 系统集成项目管理工程师英语题翻译
  15. 气候变化对深圳的影响
  16. 现代办公的新选择,讯飞智能录音笔SR302 Pro
  17. QT210 自制bootloader 移植kernel3.4.2 制作ramdisk busybox1.20.2
  18. 微信小程序选项卡数组列表单项选择切换效果
  19. How to Generate PDF in Ruby on Rails(HowtoGeneratePDFs) ZT
  20. Ubuntu 搭建小熊派 hi3861 环境

热门文章

  1. vs2019编译zlib全过程
  2. vs2019 android,VS2019无法安装Android SDK 28的问题
  3. 发动机冷却系统的控制论文综述
  4. 【网络流量识别】【深度学习】【四】DNN、GBT和RF—利用大数据和深度学习技术进行入侵检测
  5. 内网中设备通过一台主机做端口转发联通外网( TPLink路由映射,端口转发,windows自带端口转发netsh interface portproxy)
  6. MATLAB在线编辑器online
  7. 软件安全测试有哪些方法?
  8. 织梦 plus/download.php,织梦DedeCMS 5.7SP1 /plus/download.php url重定向漏洞的解决方法
  9. LiFi 真的可以取代 Wi-Fi 吗?
  10. 《测试架构师的修炼之道》七—测试策略实战