哈喽大家好,我叫人宅,很高兴和大家讲解一下本套moba分布式网络游戏开发全流程教程,本教程融合了客户端和服务器两大模块开发,不会分什么上下集,一口气将最核心最本质的技术就行系统讲解,只需要一套教程 就完全掌握UE4网络游戏的开发秘诀。
我们课程分为两大部分
1.UE4 DS UDP游戏服务器讲解 (前六章)
2.分布式服务器讲解 (后四章)
我们做的这个游戏可不是什么单机游戏,是实打实的,网络多人在线网络游戏,内容超级丰富。
我们讲课的方式和以往有很大不同,边学边打包,边测试。每一章节对应有源码内容。课程中增加每个架构下的思维原理剖析,杜绝蒙头写代码的讲课模式。
在录制教程中 期间有录好多集,发现有地方讲错了,直接删掉立马重新录制。
我们保证所讲解的内容绝对是正确的网络解决方案。
我们的整套课程就是一套完整的网络分布式部署方案,服务器直接在线课堂部署,遇到的部署问题,当面解决,您只需要跟着做即可,保证只有一些UE4基础和C++基础的同学,也可以听得懂。
本套课程主要依赖的其他课程的插件,这些课程分别是:
UEC++独立游戏全流程商业版
Unreal Engine 4套件开发系列教程:多线程库
Unreal Engine 4套件Mysql数据库开发
UE4套件-oss对象存储 服务器入门课程
UE4热更新系统实战教学
如果只想购买插件,不想要课程可以如下连接
人宅网站renzhai.net 海量UE4游戏开发插件资源renzhai.net如果不想购买,只想学习Moba课程,我们也要免费插件,除了不能打包,其他功能具备:
全系列插件学习版本renzhai.net以下是具体的目录
第一章 游戏服务器-如何接入
1-1 如何购买ECS与部署UE4DS服务器方案
1-2 windows和linux分布式服务器环境介绍
1-3 UE4顶视图模板案例服务器配置
1-4 UE4网络和对象的判断
1-5 摄像机和AI角色实例解耦
1-6 同步业务逻辑
1-7 本地连接打包好的专属服务器
1-8 将UDP服务器部署在阿里云ECS
1-9 UDP网络穿透连接游戏实例
1-10 公网IP连接游戏实例
1-11 UE4编译linux服务器
第二章 游戏服务器-技能同步
2-1 UE4网络同步概念
2-2 关于角色按键响应和AI服务概述
2-3 角色配置表应该存在服务端还是客户端
2-4 服务器如何处理客户端屏幕点击信号
2-5 AI行为树应该存在服务器还是客户端
2-6 如何在服务器上进行AI的业务逻辑
2-7 AI行为树运行原理和服务器同步行为树中的移动
2-8 普通连击动画应该如何同步到客户端
2-9 AI服务器应该如何写普通攻击才可以同步客户端
2-10 普通攻击范围和攻速在AI服务上的表现
2-11 从服务器同步QWER技能动画到客户端
第三章 游戏服务器-数据同步
3-1 UE4变量同步知识点概述
3-2 角色数据
3-3 UE4游戏服务器在默认状态下上行带宽计算
3-4 对游戏服务器进行ECS架构并且同步变量
3-5 自动捕捉客户端地图
3-6 客户端自适应小地图以及背后的原理
3-7 在服务器注册一个角色
3-8 角色属性如何进行同步节省带宽
3-9 服务器框架下玩家组件数据如何设计
3-10 服务器如何高效的呼叫所有GamePlay实例
3-11 服务器范围攻击和攻速AI计算问题
第四章 游戏服务器-AI系统
4-1 服务器动作类游戏核心概念
4-2 服务器是如何处理子弹从射击到受击
4-3 服务器计算实际伤害策略
4-4 服务器实现角色死亡和重生
4-5 在服务器创建怪物生成器
4-6 服务器实现小兵角色生成
4-7 服务器小兵的AI逻辑设计
4-8 服务器处理AI范围寻敌和行为树优化策略
4-9 服务器同步玩家数据到角色
4-10 服务器表现近程攻击思路和策略
4-11 服务器塔的表现
4-12 塔在服务器如何进行攻击同步
4-13 在服务器如何计算野怪的AI
4-14 服务器动作类型游戏如何开发
4-15 更加专业的伤害数值公式和野怪AI逻辑
第五章 游戏服务器-请求和响应
5-1 物品装备环境准备
5-2 服务器对物品和技能数据操作接口
5-3 理解物品的状态同步和技能物品装备数据架构
5-4 服务器物品和属性的底层数据架构
5-5 理解服务器对物品状态同步绑定思路
5-6 服务端同步物品到客户端进行显示
5-7 客户端如何通过物品拖拽交换和移动和服务器交互
5-8 服务器如何通过状态同步客户端的CD
5-9 统一技能和物品API的UI环境
5-10 理解服务器操作技能数据的思路
5-11 如何通过服务器来初始化角色技能
5 -12 服务器计算技能cd和商业版本技能绑定策略
5 -13 商城UI资源介绍和环境准备
5 -14 商城的商品初始化
5 -15 服务器如何处理客户端发送的购买请求
5 -16 搭建装备合成和售卖的客户端环境
5-17 如何通过服务器来实现商城的买卖
5-18 客户端UI绘制装备合成思维导图设计原理
5-19 装备合成数据结构设计
5-20 装备合成的单子项算法
5-21 装备合成的多子项递归算法
5-22 角色属性面板的环境准备
5-23 面板更新的整体逻辑架构讲解
5-24 定义角色属性的数据访问协议
5-25 客户端的数据缓冲池更新策略
5-26 服务器响应的RPC在初始化的坑
5-27 网络环境下实现点击角色获取角色属性信息
5-28 网络环境下实现点击角色获取角色背包信息
5-29 组件同步和查看信息的状态同步
5-30 击杀和队伍信息的环境准备
5-31 Moba游戏击杀的框架讲解
5-32 服务器实现玩家助攻
5-33 深入探讨Moba游戏的击杀模型
5-34 服务器如何应用击杀系统
5-35 服务器如何架构击杀方式
5-36 服务器关联Moba三种击杀方式
5-37 测试服务器和客户端击杀
5-38 网络游戏Moba查看团队信息策略
5-39 前期的UI准备
5-40 服务器处理队伍信息的请求和响应
5-41 顶部团队战斗信息分析
5-42 在服务器上计算团队击杀信息和个人击杀信息
5-43 深入封装和提炼击杀系统和助攻系统
5-44 UE4 DS的UDP服务器丢包问题
5-45 服务器打包和服务器常见bug
5-46 附加小节-装备代码优化
第六章 游戏服务器-系统级架构
6-1 服务器响应客户端的伤害字体效果
6-2 服务器通知队伍血条显示规则
6-3 服务器上添加队伍判断
6-4 服务器上小兵AI逻辑设计
6-5 服务器上的怪物生成器
6-6 解决AI阻挡AI问题策略
6-7 moba小兵的智能寻敌概念讲解
6-8 moba小兵的服务器智能寻敌实战
6-9 moba小兵的服务器逻辑设计
6-10 bug玩家无法选中敌人解决策略
6-11 服务器实现持续施法的策略
6-12 爆发性技能特效设计
6-13 持续爆发性技能特效设计
6-14 对QWER技能作业
6-15 游戏的技能手感设计
6-16 技能buff道具装备数据结构深入设计
6-17 服务器的buff系统设计
6-18 服务器注册buff系统
6-19 服务器查询技能系统方式
6-20 技能和普通攻击属性叠加架构
6-21 服务器的buff循环系统设计
6-22 buf系统在客户端的实现框架讲解
6-23 Buf的更新和绑定
6-24 测试服务器和客户端buf系统
6-25 服务器处理物品buff的测试与设计
6-26 理解Moba玩家升级系统概念
6-27 经验奖励设计
6-28 金币奖励设计
6-29 奖励机制的bug
6-30 技能点数的设计概述
6-31 技能点系统的环境准备
6-32 技能点系统从点击到升级的整套原理
6-33 服务器技能点系统实战
6-34 服务器技能升级效果测试
6-35 玩家输入和玩家角色自动寻敌优先级问题
6-36 AI小兵bug和技能升级bug
6-37 物品buff技能的提示信息的制作思路
6-38 物品技能信息提示和UE4富文本讲解
6-39 物品的智能文字描述自动生成
6-40 物品栏信息提示字体解析测试
6-41 显示其他玩家的物品栏信息提示
6-42 技能信息提示
6-43 服务器角色分配初始的技能点数
6-44 广播角色等级变更
6-45 定义服务器技能蓝耗和红耗协议
6-46 服务器设计普通恢复和血池恢复
6-47 购买装备的属性加成效果
6-48 怪物生成器初始化架构
6-49 怪物生成器的生成和AI架构
6-50 初始化玩家生成器
6-51 对接游戏服务器的玩家生成接口
6-52 子弹种类设定
6-53 游戏多队友情况下奔溃问题
6-54 释放技能后伤害未叠加问题
6-55 持续施法的蓝耗问题
6-56 添加buff后服务器奔溃问题
6-57 无限死亡问题和重生点问题
6-58 塔的攻击范围问题
6-59 用空格键锁住角色的策略
6-60 角色大招无法升级问题
6-61 角色数据的动态平衡问题
6-62 DS服务器范围同步出身点问题
6-63 小地图头像显示问题
6-64 技能效果击飞眩晕在服务器如何表现
6-65 解耦buff系统和技能系统
6-66 buff系统测试
6-67 服务器如何处理Buff的沉默和控和晕
6-68 金币不够商城物品如何显示
6-69 大件合成的物品算法概述
6-70 服务器实现大件装备的合成
6-71 客户端显示大件合成的信息
6-72 技能预提示功能概念
6-73 技能预提示的客户端表现
6-74 技能预提示的攻击旋转问题
6-75 塔生成器的概述
6-76 塔生成器基础架构
6-77 接管GameMode生成塔的管理权
6-78 水晶塔自动恢复
6-79 服务器如何游戏结束
6-80 服务器如何设计塔的限制概述
6-81 塔的层级限制初始化
6-82 塔的层级限制监视
6-83 角色死亡效果的逻辑分析
6-84 角色死亡效果的代码逻辑讲解
6-85 生成塔的最远排序算法
6-86 小兵的基础目标
6-87 小兵的血条显示问题
6-88 小兵近程远程问题和塔范围问题
6-89 角色回城概述
6-90 如何编写客户端到服务器的回城
6-91 Moba还存在的bug分析
6-92 等级没有同步的丢包问题
6-93 连续按p键装备消失问题
6-94 角色升级问题
6-95 血池和回城和商店问题
6-96 血池塔的生成和创建准备
6-97 血池塔的范围攻击前期准备
6-98 血池塔的范围攻击服务器和客户端的配合
6-99 召唤超级大兵的概述
6-100 召唤超级大兵服务器逻辑架构
6-101 全体塔的升级检测
6-102 AI小兵卡在水晶塔问题
6-103 玩家阶段无限死亡问题
6-104 游戏服务器完结
第七章 UE4底层原理和UE4跨平台通信插件封装
7-1 什么是帧同步什么是状态同步
7-2 UE4客户端和服务端的UDPSocket如何初始化
7-3 UE4服务端的UDPSocket初始化流程
7-4 UE4客户端的UDPSocket初始化流程
7-5 UE4握手阶段DDos和Dos攻击详细图讲解
7-6 握手阶段详细代码讲解
7-7 UE4 网络初始化涉及到的类
7-8 UE4建立连接的Channel通信的架构
7-9 UE4 客户端登陆DS服务器详细流程图解
7-10 UE4 客户端登陆DS服务器详细代码流程
7-11 UE4SocketUDP如何发送数据包
7-12 UE4Socket接受数据包
7-13 UE4发包和接受包框架图解
7-14 UE4客户端如何解包
7-15 UE4服务端如何解包
7 -16 封装服务器插件前的准备
7 -17 服务器底层通讯框架图解
7 -18 服务器底层通讯框架架构
7 -19 UDPSocket初始化
7 -20底层通讯高效客户端建立连接策略
7 -21 底层通讯的服务器客户端相互发包
7 -22 封装底层通信的IO读写流
7 -23 封装发送和接受的协议类
7 -24 封装网络通讯对象的收发接口
7 -25 让协议模板支持可变参数
7 -26 从底层到业务层图解
7 -27 从底层初始化到业务层对象设计
7 -28 客户端登陆服务器进行版本验证
7 -29 验证登陆发包和解包流程
7 -30 客户端从登陆服务器到加入服务器流程
7 -31 网络通讯底层是如何和上层业务进行通讯
7 -32 解析底层数据协议发送到上层业务
7 -33 测试上层对象业务逻辑是否正常
7 -34 关联底层通讯的的错误检测协议
7 -35 底层通讯框架支持多线程
7 -36 解析通讯工具的配置表
7 -37 心跳协议
7 -38 关闭连接协议
第八章 架构数据库服务器
8-1 什么是数据库服务器
8-2 加密解密
8-3 玩家数据定义
8-4 认识worldpress数据表
8-5 心跳包
8-6 和UDP服务器进行断线重连策略
8-7 数据缓存
第九章 架构网关服务器
9-1 什么是网关服务器
9-2 锁定访问者IP
9-3 什么是协议攻击
9-4 登陆验证策略
9-5 服务器列表
9-6 命令转发
第十章 架构中心服务器
10-1 什么是中心服务器
10-2 好友列表
10-3 组队
10-4 选角色 和 购买角色
10-5 开房间的策略
10-6 心跳
10-7 扩展 社交平台搭建
第十一章 (附加章节) 热更新OSS服务器接入
11-1 部署热更新系统
11-2 打包底层UE4
11-3 打包角色
11-4 测试角色的加载和卸载
11-5 主版本更新策略
11-6 整体测试
第十二章(附加章节)UE4RCP原理和封装TCP到库
1-1 UE4RPC原理分析
1-2 让FSocket支持IOCP
1-3 封装Iocp
我们来谈谈我们这套课程的主要要内容有哪些
道具系统架构
我们会讲解如何架构我们的道具,比如消耗类型道具,消耗类型的道具我们实际上是可以视作为一个buff,持续buff,当我们添加到我们的装备栏后,点击即可使用,就变成了我们附加buff的效果
装备系统架构
装备系统是比较复杂的内容,因为这里涉及到装备合成和buff附加属性的叠加效果。我们采用的是装饰器设计模式,装备上有什么属性我们只需要配置就好。如果希望他是技能,那么我们就配置他为技能,如果希望他是buf,那么他就是buf.
技能系统架构
如何实现爆发攻击 如何实现持续攻击
在技能攻击中,技能和buff系统结合,让技能不仅可以给对方造成伤害也可以给对方造成持续buff的伤害。除此之外还有技能打断效果,技能优先级问题,这种内容我们应该怎么设计,这套课程会告诉您一个标准的设计方案
buff系统架构
实际上我们的buf系统 装备系统技能系统 物品系统底层都是一样的,我们通过一个类进行扩展,让它可以变成buff 也可以变成装备 技能 物品
击杀系统架构
击杀系统和成就系统是站在一起的,
比如什么时候一血,什么条件下是双杀,三杀,四杀,五杀,无人能敌,超神,团灭等等。
我们会用最精妙的架构来完成这一套成就的效果。
助攻系统架构
助攻如何架构?如果塔杀了对方玩家,我在第一时间对该玩家进行攻击,那么人头将算在我头上。
同样,玩家的助攻和怪物的助攻塔的助攻分别扮演者不同的角色,如何用一套系统架构来囊括这些,这将是我们的助攻系统的主要内容
奖励系统架构
如何设计奖励系统,奖励系统分为很多内容,比如金币奖励,这个最直接,只需要干掉对方即可拿到金币奖励。那如果奖励系统和助攻系统连用,那么助攻者将奖励三分之一甚至更少的金币。除了金币奖励外当然还有击杀奖励,这个系统也会融入到击杀的范畴,除此之外还有经验值奖励,如果两个队友在一起一定是平分经验值。
战斗系统架构
我们会详细讲解战斗中的各种行为,比如眩晕,击飞,硬值等。同样我们会讲解战斗数值分析,设计,战斗伤害公式,各种装备,道具,buff等数值应该如何附加到角色的框架设计
AI系统架构
这一块一直是重点中的重点,我们会花大篇幅去讲解这块内容。如何设计玩家AI,如何设计野怪的AI,如何设计小兵的AI,如何设计塔的AI.这些AI一定是不一样的。按照UE4AI系统框架近程和远程又不一样,如果用同一套行为树,按照UE4的AI架构很容易出问题,如何解决呢,我们这套课程有答案
升级系统架构
这个升级将涉及到平衡问题。Lol里面的角色被设定在18级,这就是一个平衡。技能升级被限制在三级,大招的升级限制 在 6 11 16 这三个等级,就是为了追求平衡。那么我们应该如何设计这个系统,并且来达到我们的效果呢 课程中将会为大家展示一套升级策略和架构,如何配置我们的升级系统数据,达到相对平衡。
道具buff技能数据架构
我们希望能实现一套通用结构,这个类既可以做buff也可以做道具也可以做技能也可以做装备,设计出这样的结构首先需要设计出这样的数据结构,我们的架构全部都是围绕着这套数据处理方式展开,如何设计呢?答案就在本套课程中。
显示团队信息
显示团队信息,比如玩家是谁,多久复活,击杀信息(杀人/被杀/助攻/ 小兵) 装备信息等,这里我们就需要在服务器里面统计这些数据然后发送给指定的客户端,本套课程将会演示这些内容。
显示击杀信息
这里涉及到服务器击杀架构下的击杀信息同步,比如说团灭应该如何显示,谁击杀了谁应该如何显示,击杀成就应该如何显示(一血,无人能敌,超神)
技能图标拖拽移动交换
以前我们讲解的都是客户端的拖拽,这块内容太简单,现在我们来讲解一下这些功能如何在服务端实现
显示技能CD
CD是最重要的模块之一,不管是物品还是道具还是技能还是buff,多多少都会涉及到,如何在服务器上设计这套体系,如何高效并且节省带宽的方式同步,我们不可能每帧进行同步。
显示buff
本游戏中的buff应该如何显示,我们也为该游戏制作了一个buf可以显示的操作,它会在角色的头上,主面板上 ,甚至当对方查看我的信息的时候也能看到此类效果
显示死亡信息
我们控制的角色一旦被杀死,那么我们希望角色会显示一个死亡状态,比如屏幕变成淡淡的黑白色,并且有倒计时,多久复活,这些操作在网络环境下我们应该如何设计呢
显示玩家属性
这个功能就是点击对方角色头部可以显示对方的信息,除了自己不能点击外,其他都可以点击,在网络环境下,我们一定是通过点击动作让服务器知道,服务器获取角色的这些属性,同步到具体点击的哪个客户端,那我们怎么才能在UE4实现这种操作呢
3.单一的功能性
自动化地图策略
我们的地图并非是通过美术截图修改生成的,而是自动截图自动生成,只需要配置简单的参数即可生成这种地图,非常方便,这块逻辑我们是选自独立游戏全流程课程v2版本 里面的源码。
识别装备合成
我们会讲解如何通过代码来实现这一套操作,只需要通过表配置相应的参数即可实现此类效果。比如我们配置大件,这个大件是如何合成的,小件是哪些,当我们购买了小件,再购买大件时,小件应该如何移除掉,价钱是不是应该有打折。
装备合成图应该如何生成,这些内容我们都会讲解
皮肤UI和皮肤效果
我们会讲解如何制作皮肤效果,如何制作商城来购买我们的英雄。
聊天和好友组队功能
好友我们分为大厅,好友等 我们会讲解如何要求好友一起对战或者匹配。
游戏房间匹配
我们的游戏分为创建房间和匹配,这块内容我们也会讲解。
读取本地的CSV文件
我们会教会大家封装一个插件,专门来提取本地的CSV文件,其中涉及到角色属性,技能属性,道具属性,物品属性,我们都可以通过Excel表格来配置。这样你只需要打包一个基础游戏框架,剩下的进行热更新即可,后面我们会讲解我们 游戏如何接热更新系统。
4.AI行为
本节课里面包含AI的各种行为的设定,以及常见的AI问题的解决策略。
小兵的AI
我们会讲解我们的AI系统是如何处理远程和近程操作。由于UE4AI系统架构,同类型的行为树大家是通用的,这样很容易出现问题,我们会讲解如何解决AI中常见的问题。
除此之外我们的小兵有主线任务,它的优先级是最低的,如果路上碰到敌人,目标将切换到敌人。
我们的小兵是按照范围寻敌,但这有个缺点,就是如果寻敌的时候发现离自己最近的敌人,刚好自己的小兵也同时发现离自己最近的敌人,那么就出现了我方所有小兵只会攻击哪个敌人。
我们应该如何处理这些内容呢。本套课程将讲解一套全新的寻敌思路。
野怪的AI
野怪的设计和普通小兵的设计截然不同。它是中立的,那么它的设计:只要有人攻击它他就攻击那给攻击它的人,当玩家离开一定范围野怪又跑回去了,我们也会讲解Moba类游戏野怪的AI行为设计和制作
其中还涉及到组的概念,当范围内的同伴受到攻击,那么其他怪物也会攻击,组的概念我们将延续到生成器。
玩家的AI
玩家AI是非常重要的。有于课程篇幅有限,无法再做出人机的玩家,以后可以当作DLC给大家
本课程的玩家AI是属于真实玩家操作。对于真实的玩家操作也是需要AI系统。比如客户端点击屏幕,这个信息如何同步的服务端?我们的服务端是处理多个玩家,只是屏幕的位置传递给服务器,一定会出错。
我们的玩家AI面对角色的时候一定是当玩家点击小怪,我们的角色才攻击这个另一个角色或者玩家,此后将开启自动攻击平a模式,这些内容都需要一套AI系统实现。
塔的AI
塔的AI蛮重要的。旋转攻击外,它还有范围敌人判定。敌人优先级判定等
除此之外塔还肩负着游戏规则
生成器的架构是非常重要的,它负责处理整个游戏的运行规则,那么我们来看看如何影响我们的游戏规则。
野怪生成器
野怪什么时候出生,如何设置野怪组的概念,设置野怪在不同游戏时间等级也不一样的设定
玩家生成器
玩家什么时候出生,玩家复活时间如何设计等
小兵生成器
小兵什么时候出生,下一波什么时候出生,什么时候小兵升级等
塔和水晶塔生成器
塔如何出生,塔的攻击限制,游戏的水晶塔,因为主水晶被摧毁代表着,游戏结束。普通水晶被摧毁后多久复活,什么时候召唤敌方大兵等
技能伤害公式
如何设计技能伤害公式,这个公式是如何与基础属性进行叠加,如何与buf一起计算
普通伤害公式
该内容讲解物理攻击如何和物理穿透,暴击进行关联,魔法攻击的如何和魔法穿透等关联,如何做到平衡等
消耗公式
我们会讲解如何在服务器和客户端之间建立高效的消耗策略,这一块处理不好很容易出现瓶颈
二 .Moba网络游戏分布式讲解
1.架构跨平台的底层通信插件
我们在windows 下使用iocp ,linux下用epoll结构来搭建我们的底层通信插件。同样也支持数据的自定义和protobuf 传输协议
2.网关服务器
拥有底层通信插件,我们可以自定义登陆服务器,负责转发消息,也负责安全问题
3.数据库服务器
我们在前面的Mysql课程中封装过Mysql插件,现在我们将使用这套插件来实现我们的数据库服务器。我们将会演示如何通过UE4的lib库来实现服务器封装,封装为独立程序
4.中心服务器
负责将游戏大厅里面的玩家通过匹配分配到游戏房间,也负责维护大厅玩家状态。
5.热更新
这个是我们的附加课程,讲解如何部署热更新系统到游戏中,如何热更新角色,如何优化我们的整体框架等
6.附加课程
在长期测试中发现的问题 需要添加扩展的内容
本套课程学完后能有什么收获
收获太大了,首先学会类UE4DS服务器,各类UE4版本的分布式服务器,在线部署服务器,不管以后做web游戏还是其他游戏,这套框架所带来的插件足以实现。
不用羡慕其他团队做出网络游戏,因为你也可以。
链接:https://pan.baidu.com/s/1ub2WcTP4YHg3-8v1uCxlWw
提取码:qo0z