登录
自2024年5月16日起,中文课堂仅支持使用UnityID登入,如遇问题,请在
开发者社区
发帖说明情况,我们会尽快帮您解决。
MMO开放世界(Netcode for GameObjects)
原价 ¥1778
优惠剩余:0天0时0分
¥1778
¥1244.6 购买
MMO开放世界(Netcode for GameObjects)
教程
高级
60 小时
Joker
概述
作者信息
教程资料
互动讨论
课程评价
175人收藏,150人学习
登录后开始教程
章节1
Netcode快速入门
1.
可试看
课程介绍
2.
可试看
快速实现移动同步
3.
可试看
网络对象
4.
可试看
同步的重要概念
章节2
环境搭建
1.
项目设置
2.
规划打包流程
3.
多开Unity进行调试
章节3
客户端热更新
1.
HybridCLR安装与配置
2.
AOT泛型问题
3.
增加热更新打包流程
4.
IIS模拟资源服务器
5.
模拟测试更新包
6.
Addressables预加载
7.
获取版本信息
8.
热更新UI界面
章节4
核心功能准备工作
1.
进入游戏场景
2.
服务端测试对象
3.
客户端测试信息
4.
服务端测试信息
章节5
热更新完善
1.
断点续传
2.
整体下载进度
章节6
服务端AOI
1.
九宫格AOI原理与准备
2.
玩家之间的可见性
3.
服务端对象对玩家的可见性
4.
AOI功能测试
5.
修改编译宏
章节7
客户端空间管理
1.
四叉树空间管理原理
2.
地图配置文件
3.
构建四叉树
4.
测试四叉树
5.
地块的状态
6.
地块的控制
7.
视椎体检测
8.
阶段性功能测试
章节8
第三人称角色控制
1.
服务端地图加载
2.
生成角色与摄像机控制
3.
角色生成流程重构
4.
修复程序集问题
5.
玩家角色与AOI
6.
阶段性重构
7.
玩家状态机与输入
8.
玩家待机
9.
网络变量序列化
10.
玩家角色根运动
11.
网络变量热更新的问题修复
12.
玩家移动状态
13.
玩家阶段性测试
14.
NetCode无效网络对象问题
章节9
服务端核心搭建
1.
服务端禁用Addressables
2.
服务端资源管理
3.
双端打包测试
4.
MongoDB安装
5.
MongoDB简单入门
6.
手动剥离Server程序集
7.
自定义网络消息系统
8.
网络消息序列化与回调
章节10
注册与登录
1.
版本信息本地化
2.
全局本地化
3.
菜单UI窗口
4.
信息弹窗UI窗口
5.
服务端玩家管理
6.
数据库管理器
7.
账号注册UI窗口
8.
注册逻辑
9.
登录UI窗口
10.
登录逻辑
章节11
玩家上下线
1.
网络对象对象池
2.
转移逻辑到登录场景
3.
进入游戏场景
4.
客户端管理梳理
5.
重复登录挤下线
6.
游戏弹窗UI窗口
7.
游戏退出逻辑
章节12
游戏设置
1.
游戏设置UI窗口
2.
打开游戏设置窗口
3.
中心Terrain中的音效关联
章节13
聊天系统
1.
聊天UI窗口
2.
鼠标的隐藏与显示
3.
聊天界面焦点效果
4.
发送与接受聊天信息
5.
鼠标显示时禁止控制角色
章节14
背包、商店与打造
1.
物品的静态配置
2.
物品的动态数据
3.
导表准备工作
4.
导表功能实现
5.
背包UI窗口
6.
背包格子
7.
显示所有物品
8.
服务端背包数据
9.
背包数据的网络序列化
10.
请求与响应背包数据
11.
物品详情弹窗
12.
显示物品详情
13.
客户端使用物品逻辑
14.
使用物品的网络消息
15.
服务端模拟消耗品使用
16.
多开Unity进行调试
17.
拆分服务端系统
18.
服务端物品配置
19.
玩家的武器
20.
切换武器
21.
武器切换BUG修复
22.
物品快捷栏
23.
快捷栏数据同步
24.
快捷栏武器格子同步
25.
格子拖拽
26.
背包内互换位置
27.
背包物品互换时快捷键更新
28.
设置物品至快捷栏
29.
快捷栏内格子拖拽
30.
快捷栏移除格子
31.
商人NPC
32.
商人配置与价格
33.
玩家的金币
34.
商人UI窗口
35.
快捷栏Bug修复
36.
客户端购买物品逻辑
37.
服务端处理物品购买逻辑
38.
将背包物品出售给商店
39.
可堆叠物品按数量出售
40.
玩家快捷键使用物品
41.
合成窗口
42.
负责合成功能的NPC
43.
合成窗口的物品列表显示
44.
物品的合成配置
45.
格子增加点击事件
46.
显示合成信息
47.
指定位置添加物品
48.
非指定位置添加物品
49.
合成需要的背包函数
50.
客户端验证合成条件
51.
合成请求与响应
52.
完善合成功能
53.
阶段性打包调整
54.
阶段性瑕疵修复
章节15
玩家完善
1.
角色头顶名称
2.
新增玩家客户端逻辑脚本
3.
转移逻辑到玩家客户端脚本中
4.
增加玩家服务端逻辑脚本
5.
玩家脚本的变量初始化
6.
服务端玩家脚本的初始化
7.
玩家跳跃逻辑
8.
进入跳跃状态
9.
下降状态
10.
进入攻击状态
11.
攻击的基本流程
12.
动画参数条件自动生成
13.
攻击逻辑优化
14.
客户端播放攻击音效
15.
客户端播放攻击特效
16.
武器逻辑
17.
服务端命中逻辑
18.
重构:玩家客户端接口
19.
客户端命中效果
20.
相机控制器
21.
玩家生命值
22.
阶段性BUG修复
23.
修复网络同步问题
24.
阶段性打包测试
章节16
怪物AI
1.
抽象角色各层
2.
重构角色服务端控制器
3.
搭建怪物基本结构
4.
重构角色客户端控制器
5.
生成怪物
6.
怪物进入待机状态
7.
怪物配置导表
8.
怪物巡逻逻辑
9.
怪物名称与血条
10.
搜索玩家并追击
11.
怪物受伤状态
12.
怪物脱战回血以及音效特效
13.
怪物攻击状态
14.
怪物死亡状态
15.
刷怪点重新刷怪
16.
配置全部猪怪
17.
配置全部树桩怪
18.
配置全部石头怪
19.
配置全部眼睛怪
20.
配置全部远程怪
21.
重新建立网络对象结构
22.
重构当前角色结构
23.
阶段性测试
24.
子弹与子弹配置
25.
子弹的客户端逻辑
26.
子弹的服务端逻辑
27.
怪物发射子弹
28.
创建Boss
29.
阶段性打包测试
章节17
对话系统
1.
NPC交互菜单窗口
2.
修改NPC的交互方式
3.
对话配置读表
4.
UI对话窗口
5.
NPC默认对话流程
章节18
任务系统
1.
任务配置
2.
任务配置导表
3.
任务数据
4.
客户端请求任务数据
5.
任务UI窗口
6.
基于任务的对话
7.
处理对话任务的完成
8.
连续任务
9.
完成杀怪任务
10.
收集任务的检测
11.
常规完成收集任务
12.
任务指向器
13.
任务指向器窗口
14.
接受任务
15.
阶段性测试
章节19
完结与上线
1.
完善消耗品使用流程
2.
玩家受伤逻辑
3.
玩家死亡逻辑
4.
玩家数据持久化
5.
服务器部署
摘要
该课程已经完结,总共212节,提供全部素材与源码
技术选型
客户端:Unity,使用了JKFrame(由于基于Netcode for GameObjects,所以双端都适用)、Addressables
服务端:基于Unity的Netcode for GameObjects双端同步框架,周边系统(登录、背包、聊天等)也基于Netcode实现了自定义网络消息系统。
数据库:MongoDB
主要内容
热更新:HybridCLR +Addressables的客户端热更新,游戏一开始一个下载进度条,下载完进游戏。如果下载中断下次启动继续下载。
注册登录:使用Mongodb保存用户数据,账号信息、游戏数据等
背包:物品数量较少,主要是武器、药剂、材料等
商店:专门的NPC,用于购买武器、药剂、材料等
打造:专门的NPC,用于将材料转为药剂
任务:杀X个怪物、需要X个材料、找XXNPC对话
NPC对话:游戏中常见的,点一下进行下一条对话,剧本固定的
聊天:在UI上进行全服聊天
服务端九宫格AOI:客户端只同步相近的其它客户端,客户端只同步较近的其他服务端对象(如NPC)
客户端空间管理:开放世界大地形的流式加载,准备的素材是12000 x 12000的地形,基于摄像机的视椎体,对空间进行四叉树划分来实现按需加载
真实服务器部署上线(此上线并不是指商业盈利行为的上线,只是学员部署在自己的服务器上测试)
战斗系统:并不复杂的战斗系统,简单的怪物AI、玩家只有普通攻击(如果您考虑或已经购买ARPG系列,其中的技能编辑器与战斗系统运行时可以比较方便的移植(本课程不包含此移植),这也是得利于Netcode for GameObjects实际上就是在服务器上运行一个特化的Unity应用)
第三人称控制:比较常规,有跳跃,相机基于Cinemachine
游戏设置:音量控制、语言设置,保存在本地
本地化:基于JKFrame的本地化系统,主要对UI进行了本地化(实际上内容并不多,没多少UI)
配置:部分涉及转表,部分 ScriptableObject 即可
可能劝退的部分
Mirror、Netcode for GameObjects这类同步方案都是状态同步,如果你期望学习的是帧同步,并没有太多参考意义。
性能较好的同步方案一定是自己实现的同步方案,而不是Mirror、Netcode for GameObjects这类方案,但是这类方案具有非常强的开发效率,但是也会导致你的服务器成本更高,但我不认为这是小团队/个人需要考虑的事情,游戏的失败一般出于没有用户。
只是想开发一个房间制游戏,MMO在网络游戏里面应该是最复杂的品类,所以涉及到的知识会较多的覆盖到其他网游类型,但房间制游戏有一个较为关键的“房间管理”是本课程不具备的,但是我认为这是基于Netcode for GameObjects做房间制游戏的关键技术。
课程属于进阶课程,需要对Unity和C#都一定的经验,至少可以独立完成休闲单机游戏的程度。
源码与资源
本页面-选择教程资源后下载即可,其中源码文件解压后是git项目, 可以使用GithubDesktop或其他类似软件打开使用
价格与优惠
春节、618、双11、国庆等重要节日会进行打折,作此说明的原因是因为笔者其他课程仅刚上线时做早鸟价折扣,此课程例外,折扣比例参考:7~8折
其他
交流群:885222391,无加入条件,属Unity交流群
课程群:151449496,加入时需填写LearnID (点击头像 选择我的学习,即可看到LearnID ) ,属课程答疑群
售前咨询:QQ739554159
登录后可观看
标签
MMO
Netcode for GameObjects
建议的Unity版本
2022.3
教程
MMO开放世界(Netcode for GameObjects)
开始教程
电脑配置不足?
Unity云桌面,为Unity而生的云开发平台。
即可体验
教程
MMO开放世界(Netcode for GameObjects)
登录后开始教程
章节
1
Netcode快速入门
1.
可试看
课程介绍
2.
可试看
快速实现移动同步
3.
可试看
网络对象
4.
可试看
同步的重要概念
章节
2
环境搭建
1.
项目设置
2.
规划打包流程
3.
多开Unity进行调试
章节
3
客户端热更新
1.
HybridCLR安装与配置
2.
AOT泛型问题
3.
增加热更新打包流程
4.
IIS模拟资源服务器
5.
模拟测试更新包
6.
Addressables预加载
7.
获取版本信息
8.
热更新UI界面
章节
4
核心功能准备工作
1.
进入游戏场景
2.
服务端测试对象
3.
客户端测试信息
4.
服务端测试信息
章节
5
热更新完善
1.
断点续传
2.
整体下载进度
章节
6
服务端AOI
1.
九宫格AOI原理与准备
2.
玩家之间的可见性
3.
服务端对象对玩家的可见性
4.
AOI功能测试
5.
修改编译宏
章节
7
客户端空间管理
1.
四叉树空间管理原理
2.
地图配置文件
3.
构建四叉树
4.
测试四叉树
5.
地块的状态
6.
地块的控制
7.
视椎体检测
8.
阶段性功能测试
章节
8
第三人称角色控制
1.
服务端地图加载
2.
生成角色与摄像机控制
3.
角色生成流程重构
4.
修复程序集问题
5.
玩家角色与AOI
6.
阶段性重构
7.
玩家状态机与输入
8.
玩家待机
9.
网络变量序列化
10.
玩家角色根运动
11.
网络变量热更新的问题修复
12.
玩家移动状态
13.
玩家阶段性测试
14.
NetCode无效网络对象问题
章节
9
服务端核心搭建
1.
服务端禁用Addressables
2.
服务端资源管理
3.
双端打包测试
4.
MongoDB安装
5.
MongoDB简单入门
6.
手动剥离Server程序集
7.
自定义网络消息系统
8.
网络消息序列化与回调
章节
10
注册与登录
1.
版本信息本地化
2.
全局本地化
3.
菜单UI窗口
4.
信息弹窗UI窗口
5.
服务端玩家管理
6.
数据库管理器
7.
账号注册UI窗口
8.
注册逻辑
9.
登录UI窗口
10.
登录逻辑
章节
11
玩家上下线
1.
网络对象对象池
2.
转移逻辑到登录场景
3.
进入游戏场景
4.
客户端管理梳理
5.
重复登录挤下线
6.
游戏弹窗UI窗口
7.
游戏退出逻辑
章节
12
游戏设置
1.
游戏设置UI窗口
2.
打开游戏设置窗口
3.
中心Terrain中的音效关联
章节
13
聊天系统
1.
聊天UI窗口
2.
鼠标的隐藏与显示
3.
聊天界面焦点效果
4.
发送与接受聊天信息
5.
鼠标显示时禁止控制角色
章节
14
背包、商店与打造
1.
物品的静态配置
2.
物品的动态数据
3.
导表准备工作
4.
导表功能实现
5.
背包UI窗口
6.
背包格子
7.
显示所有物品
8.
服务端背包数据
9.
背包数据的网络序列化
10.
请求与响应背包数据
11.
物品详情弹窗
12.
显示物品详情
13.
客户端使用物品逻辑
14.
使用物品的网络消息
15.
服务端模拟消耗品使用
16.
多开Unity进行调试
17.
拆分服务端系统
18.
服务端物品配置
19.
玩家的武器
20.
切换武器
21.
武器切换BUG修复
22.
物品快捷栏
23.
快捷栏数据同步
24.
快捷栏武器格子同步
25.
格子拖拽
26.
背包内互换位置
27.
背包物品互换时快捷键更新
28.
设置物品至快捷栏
29.
快捷栏内格子拖拽
30.
快捷栏移除格子
31.
商人NPC
32.
商人配置与价格
33.
玩家的金币
34.
商人UI窗口
35.
快捷栏Bug修复
36.
客户端购买物品逻辑
37.
服务端处理物品购买逻辑
38.
将背包物品出售给商店
39.
可堆叠物品按数量出售
40.
玩家快捷键使用物品
41.
合成窗口
42.
负责合成功能的NPC
43.
合成窗口的物品列表显示
44.
物品的合成配置
45.
格子增加点击事件
46.
显示合成信息
47.
指定位置添加物品
48.
非指定位置添加物品
49.
合成需要的背包函数
50.
客户端验证合成条件
51.
合成请求与响应
52.
完善合成功能
53.
阶段性打包调整
54.
阶段性瑕疵修复
章节
15
玩家完善
1.
角色头顶名称
2.
新增玩家客户端逻辑脚本
3.
转移逻辑到玩家客户端脚本中
4.
增加玩家服务端逻辑脚本
5.
玩家脚本的变量初始化
6.
服务端玩家脚本的初始化
7.
玩家跳跃逻辑
8.
进入跳跃状态
9.
下降状态
10.
进入攻击状态
11.
攻击的基本流程
12.
动画参数条件自动生成
13.
攻击逻辑优化
14.
客户端播放攻击音效
15.
客户端播放攻击特效
16.
武器逻辑
17.
服务端命中逻辑
18.
重构:玩家客户端接口
19.
客户端命中效果
20.
相机控制器
21.
玩家生命值
22.
阶段性BUG修复
23.
修复网络同步问题
24.
阶段性打包测试
章节
16
怪物AI
1.
抽象角色各层
2.
重构角色服务端控制器
3.
搭建怪物基本结构
4.
重构角色客户端控制器
5.
生成怪物
6.
怪物进入待机状态
7.
怪物配置导表
8.
怪物巡逻逻辑
9.
怪物名称与血条
10.
搜索玩家并追击
11.
怪物受伤状态
12.
怪物脱战回血以及音效特效
13.
怪物攻击状态
14.
怪物死亡状态
15.
刷怪点重新刷怪
16.
配置全部猪怪
17.
配置全部树桩怪
18.
配置全部石头怪
19.
配置全部眼睛怪
20.
配置全部远程怪
21.
重新建立网络对象结构
22.
重构当前角色结构
23.
阶段性测试
24.
子弹与子弹配置
25.
子弹的客户端逻辑
26.
子弹的服务端逻辑
27.
怪物发射子弹
28.
创建Boss
29.
阶段性打包测试
章节
17
对话系统
1.
NPC交互菜单窗口
2.
修改NPC的交互方式
3.
对话配置读表
4.
UI对话窗口
5.
NPC默认对话流程
章节
18
任务系统
1.
任务配置
2.
任务配置导表
3.
任务数据
4.
客户端请求任务数据
5.
任务UI窗口
6.
基于任务的对话
7.
处理对话任务的完成
8.
连续任务
9.
完成杀怪任务
10.
收集任务的检测
11.
常规完成收集任务
12.
任务指向器
13.
任务指向器窗口
14.
接受任务
15.
阶段性测试
章节
19
完结与上线
1.
完善消耗品使用流程
2.
玩家受伤逻辑
3.
玩家死亡逻辑
4.
玩家数据持久化
5.
服务器部署