0 0 0

Unity3D网络游戏实战(第2版).epub

走着走着你就不见了
4天前 140
我用夸克网盘分享了「Unity3D网络游戏实战(第2版).epub」,点击链接即可保存。打开「夸克APP」在线查看,支持多种文档格式转换。
《Unity3D网络游戏实战(第2版)》 作者: 罗培羽 出版社: 机械工业出版社 出版年: 2019-1-1 页数: 432 定价: 89.00元 装帧: 平装 ISBN: 9787111612179

内容简介

详解Socket编程,搭建稳健的网络框架;解决网游中常见的卡顿、频繁掉线等问题;探求适宜的实时同步算法。完整的多人对战游戏案例,揭秘登录注册、游戏大厅、战斗系统等模块的实现细节。 想要制作当今热门的网络游戏,特别是开发手机网络游戏,或者想要到游戏公司求职,都需要深入了解网络游戏的开发技术。本书分为三大部分,揭示网络游戏开发的细节。 第一部分“扎基础”(1-5章) 介绍TCP网络游戏开发的必备知识。包括TCP异步连接、多路复用技术;处理粘包分包的方法;设置正确的网络参数、完整的发送数据、安全的关闭连接等方法。第三章《实践出真知:大乱斗游戏》会介绍一款简单网络游戏开发的全过程。 第二部分“搭框架”(6-7章) 介绍了商业级客户端网络框架的实现方法。这套框架具有较高的通用性,解决了网络游戏开发中常遇到的问题,且达到极致的性能要求,可以运用在多种游戏上。书中还实现了一套c#服务端框架,使用select多路复用,做到底层与逻辑分离,具有消息分发,事件处理等模块。 第三部分“做游戏”(8-12章) 通过一个完整的实例,讲解网络游戏的设计思路。包括游戏实体的类设计、怎样组织代码、怎样实现游戏大厅(房间系统)、怎样实现实体的同步。这一部分会使用第二部分搭好的框架,一步步做出完整的游戏。

作者简介

罗培羽,正在创作好玩游戏的程序员。参与多个项目研发工作,拥有丰富的实战经验。 自2009年发布第一部视频教程《教你用vb制作rpg游戏》以来,先后发布和出版《教你制作3DRPG游戏》、《手把手教你用c#制作rpg游戏》、《Unity3D网络游戏实战(第1版)》等教材;目前关注手机游戏、AI技术等领域;还采访和记录一些普通开发者的心路历程。

网友热评

?: 第 4 章的 ByteArray 有个 Bug 作者的英文不太行 网络方面太浅 WingStone: 实例有价值,网游的基础开发讲得还算细致。 章节编排有的显得比较冗余,可以称得上啰嗦了;很多图片不知所云。 莫云云: 作者引导着编写了一个Socket网络库,并用其制作了一个坦克大战项目。市面上讲游戏服务器开发的书籍不多,这本书让我打了些基础。四星的原因是内容仍然太啰嗦,第九章的 UI 代码完全没有存在的必要,还有其他的UI 逻辑、C#语法等等,都可以考虑让读者通过脚注或者读源码来学习,我希望这本书能更纯粹,能专注于一些基础教程不会提及的内容。

图书目录

前言 第1章 网络游戏的开端:Echo1 1.1 藏在幕后的服务端1 1.2 网络连接的端点:Socket3 1.2.1 Socket3 1.2.2 IP地址3 1.2.3 端口4 1.2.4 Socket通信的流程6 1.2.5 TCP和UDP协议7 1.3 开始网络编程:Echo8 1.3.1 什么是Echo程序8 1.3.2 编写客户端程序8 1.3.3 客户端代码知识点10 1.3.4 完成客户端11 1.3.5 创建服务端程序12 1.3.6 编写服务端程序14 1.3.7 服务端知识点15 1.3.8 测试Echo程序15 1.4 更多API16 1.5 公网和局域网17 第2章 分身有术:异步和多路复用19 2.1 什么样的代码是异步代码19 2.2 异步客户端20 2.2.1 异步Connect21 2.2.2 ShowMeTheCode22 2.2.3 异步Receive23 2.2.4 异步Send26 2.3 异步服务端29 2.3.1 管理客户端29 2.3.2 异步Accept30 2.3.3 程序结构31 2.3.4 代码展示31 2.4 实践:做个聊天室35 2.4.1 服务端35 2.4.2 客户端35 2.4.3 测试36 2.5 状态检测Poll36 2.5.1 什么是Poll36 2.5.2 Poll客户端37 2.5.3 Poll服务端38 2.6 多路复用Select41 2.6.1 什么是多路复用41 2.6.2 Select服务端42 2.6.3 Select客户端44 第3章 实践出真知:大乱斗游戏45 3.1 什么是大乱斗游戏45 3.2 搭建场景46 3.3 角色类Human49 3.3.1 类结构设计49 3.3.2 BaseHuman49 3.3.3 角色预设51 3.3.4 CtrlHuman54 3.3.5 SyncHuman57 3.4 如何使用网络模块57 3.4.1 委托57 3.4.2 通信协议59 3.4.3 消息队列60 3.4.4 NetManager类60 3.4.5 测试网络模块64 3.5 进入游戏:Enter协议66 3.5.1 创建角色67 3.5.2 接收Enter协议70 3.5.3 测试Enter协议70 3.6 服务端如何处理消息72 3.6.1 反射机制72 3.6.2 消息处理函数73 3.6.3 事件处理74 3.6.4 玩家数据76 3.6.5 处理Enter协议77 3.7 玩家列表:List协议77 3.7.1 客户端处理78 3.7.2 服务端处理79 3.7.3 测试79 3.8 移动同步:Move协议80 3.8.1 客户端处理80 3.8.2 服务端处理81 3.8.3 测试81 3.9 玩家离开:Leave协议82 3.9.1 客户端处理82 3.9.2 服务端处理82 3.9.3 测试82 3.10 攻击动作:Attack协议83 3.10.1 播放攻击动作83 3.10.2 客户端处理87 3.10.3 服务端处理88 3.10.4 测试88 3.11 攻击伤害:Hit协议89 3.11.1 客户端处理89 3.11.2 服务端处理91 3.12 角色死亡:Die协议91 3.12.1 客户端处理91 3.12.2 测试92 第4章 正确收发数据流94 4.1 TCP数据流94 4.1.1 系统缓冲区94 4.1.2 粘包半包现象96 4.1.3 人工重现粘包现象97 4.2 解决粘包问题的方法97 4.2.1 长度信息法97 4.2.2 固定长度法98 4.2.3 结束符号法98 4.3 解决粘包的代码实现99 4.3.1 发送数据99 4.3.2 接收数据99 4.3.3 处理数据101 4.3.4 完整的示例104 4.3.5 测试程序106 4.4 大端小端问题109 4.4.1 为什么会有大端小端之分110 4.4.2 使用Reverse()兼容大小端编码111 4.4.3 手动还原数值111 4.5 完整发送数据112 4.5.1 不完整发送示例113 4.5.2 如何解决发送不完整问题113 4.5.3 ByteArray和Queue117 4.5.4 解决线程冲突120 4.5.5 为什么要使用队列121 4.6 高效的接收数据122 4.6.1 不足之处122 4.6.2 完整的ByteArray123 4.6.3 将ByteArray应用到异步程序129 第5章 深入了解TCP,解决暗藏问题133 5.1 从TCP到铜线133 5.1.1 应用层133 5.1.2 传输层134 5.1.3 网络层135 5.1.4 网络接口135 5.2 数据传输流程136 5.2.1 TCP连接的建立136 5.2.2 TCP的数据传输137 5.2.3 TCP连接的终止138 5.3 常用TCP参数138 5.3.1 ReceiveBufferSize138 5.3.2 SendBufferSize139 5.3.3 NoDelay139 5.3.4 TTL140 5.3.5 ReuseAddress141 5.3.6 LingerState142 5.4 Close的恰当时机144 5.5 异常处理146 5.6 心跳机制147 第6章 通用客户端网络模块148 6.1 网络模块设计148 6.1.1 对外接口148 6.1.2 内部设计149 6.2 网络事件150 6.2.1 事件类型151 6.2.2 监听列表151 6.2.3 分发事件152 6.3 连接服务端152 6.3.1 Connect152 6.3.2 ConnectCallback154 6.3.3 测试程序155 6.4 关闭连接156 6.4.1 isClosing?157 6.4.2 Close157 6.4.3 测试158 6.5 Json协议158 6.5.1 为什么会有协议类158 6.5.2 使用JsonUtility159 6.5.3 协议格式160 6.5.4 协议文件161 6.5.5 协议体的编码解码162 6.5.6 协议名的编码解码163 6.6 发送数据165 6.6.1 Send165 6.6.2 SendCallback166 6.6.3 测试167 6.7 消息事件168 6.8 接收数据170 6.8.1 新的成员171 6.8.2 ConnectCallback171 6.8.3 ReceiveCallback172 6.8.4 OnReceiveData172 6.8.5 Update174 6.8.6 测试175 6.9 心跳机制176 6.9.1 PING和PONG协议176 6.9.2 成员变量177 6.9.3 发送PING协议178 6.9.4 监听PONG协议178 6.9.5 测试179 6.10 Protobuf协议179 6.10.1 什么是Protobuf179 6.10.2 编写proto文件180 6.10.3 生成协议类181 6.10.4 导入protobuf-net.dll183 6.10.5 编码解码183 第7章 通用服务端框架186 7.1 服务端架构187 7.1.1 总体架构187 7.1.2 模块划分187 7.1.3 游戏流程188 7.2 Json编码解码189 7.2.1 添加协议文件189 7.2.2 引用System.web.Extensions190 7.2.3 修改MsgBase类191 7.2.4 测试192 7.3 网络模块193 7.3.1 整体结构193 7.3.2 ClientState194 7.3.3 开启监听和多路复用194 7.3.4 处理监听消息196 7.3.5 处理客户端消息197 7.3.6 关闭连接198 7.3.7 处理协议199 7.3.8 Timer200 7.3.9 发送协议201 7.3.10 测试202 7.4 心跳机制204 7.4.1 lastPingTime?204 7.4.2 时间戳204 7.4.3 回应MsgPing协议205 7.4.4 超时处理205 7.4.5 测试程序206 7.5 玩家的数据结构206 7.5.1 完整的ClientState206 7.5.2 PlayerData208 7.5.3 Player208 7.5.4 PlayerManager209 7.6 配置MySQL数据库211 7.6.1 安装并启动MySQL数据库211 7.6.2 安装NavicatforMySQL213 7.6.3 配置数据表214 7.6.4 安装connector215 7.6.5 MySQL基础知识216 7.7 数据库模块217 7.7.1 连接数据库218 7.7.2 防止SQL注入220 7.7.3 IsAccountExist220 7.7.4 Register221 7.7.5 CreatePlayer223 7.7.6 CheckPassword224 7.7.7 GetPlayerData225 7.7.8 UpdatePlayerData226 7.8 登录注册功能226 7.8.1 注册登录协议227 7.8.2 记事本协议228 7.8.3 注册功能229 7.8.4 登录功能229 7.8.5 退出功能231 7.8.6 获取文本功能231 7.8.7 保存文本功能231 7.8.8 客户端界面232 7.8.9 客户端监听233 7.8.10 客户端注册功能235 7.8.11 客户端登录功能235 7.8.12 客户端记事本功能236 7.8.13 测试236 第8章 完整大项目《坦克大战》239 8.1 《坦克大战》游戏功能239 8.1.1 登录注册239 8.1.2 房间系统240 8.1.3 战斗系统241 8.2 坦克模型242 8.2.1 导入模型242 8.2.2 模型结构243 8.3 资源管理器245 8.3.1 设计构想245 8.3.2 代码实现245 8.3.3 测试246 8.4 坦克类246 8.4.1 设计构想246 8.4.2 代码实现246 8.4.3 测试247 8.5 行走控制248 8.5.1 速度参数249 8.5.2 移动控制249 8.5.3 测试250 8.5.4 走在地形上251 8.6 坦克爬坡253 8.6.1 Unity的物理系统253 8.6.2 添加物理组件253 8.6.3 测试254 8.7 相机跟随255 8.7.1 功能需求255 8.7.2 数学原理255 8.7.3 编写代码257 8.7.4 测试258 8.8 旋转炮塔260 8.8.1 炮塔元素260 8.8.2 旋转控制261 8.8.3 测试262 8.9 发射炮弹262 8.9.1 制作炮弹预设262 8.9.2 制作爆炸效果263 8.9.3 炮弹组件264 8.9.4 坦克开炮266 8.9.5 测试268 8.10 摧毁敌人269 8.10.1 坦克的生命值269 8.10.2 焚烧特效270 8.10.3 坦克被击中处理271 8.10.4 炮弹的攻击处理272 8.10.5 测试272 第9章 UI界面模块274 9.1 界面模块的设计274 9.1.1 简单的界面调用274 9.1.2 通用界面模块275 9.2 场景结构277 9.3 面板基类BasePanel278 9.3.1 设计要点278 9.3.2 代码实现278 9.3.3 知识点279 9.4 界面管理器PanelManager281 9.4.1 层级管理281 9.4.2 打开面板282 9.4.3 关闭面板284 9.5 登录面板LoginPanel284 9.5.1 导入资源284 9.5.2 UI组件286 9.5.3 制作面板预设286 9.5.4 登录面板类289 9.5.5 打开面板289 9.5.6 引用UI组件290 9.5.7 网络监听291 9.5.8 登录和注册按钮293 9.5.9 收到登录协议293 9.6 注册面板RegisterPanel294 9.6.1 制作面板预设294 9.6.2 注册面板类296 9.6.3 按钮事件298 9.6.4 收到注册协议299 9.7 提示面板TipPanel300 9.7.1 制作面板预设300 9.7.2 提示面板类301 9.7.3 测试面板302 9.8 游戏入口GameMain303 9.8.1 设计要点303 9.8.2 代码实现304 9.8.3 缓存用户名305 9.9 功能测试306 9.9.1 登录306 9.9.2 注册307 9.9.3 下线309 第10章 游戏大厅和房间310 10.1 列表面板预设311 10.1.1 整体结构311 10.1.2 个人信息栏312 10.1.3 操作栏312 10.1.4 房间列表栏313 10.1.5 ScrollView315 10.1.6 列表项Room316 10.2 房间面板预设318 10.2.1 整体结构318 10.2.2 列表栏319 10.2.3 列表项Player320 10.2.4 控制栏322 10.3 协议设计322 10.3.1 查询战绩MsgGetAchieve协议323 10.3.2 查询房间列表MsgGetRoom--List协议323 10.3.3 创建房间MsgCreateRoom协议324 10.3.4 进入房间MsgEnterRoom协议324 10.3.5 查询房间信息MsgGetRoom-Info协议324 10.3.6 退出房间MsgLeaveRoom协议325 10.3.7 开始战斗MsgStartBattle协议325 10.4 列表面板逻辑326 10.4.1 面板类326 10.4.2 获取部件326 10.4.3 网络监听328 10.4.4 刷新战绩329 10.4.5 刷新房间列表329 10.4.6 加入房间330 10.4.7 创建房间331 10.4.8 刷新按钮332 10.5 房间面板逻辑332 10.5.1 面板类332 10.5.2 获取部件333 10.5.3 网络监听334 10.5.4 刷新玩家列表334 10.5.5 退出房间336 10.5.6 开始战斗336 10.6 打开列表面板337 10.7 服务端玩家数据337 10.7.1 存储数据338 10.7.2 临时数据338 10.8 服务端房间类339 10.8.1 管理器和房间类的关系339 10.8.2 房间类的设计要点340 10.8.3 添加玩家341 10.8.4 选择阵营343 10.8.5 删除玩家343 10.8.6 选择新房主345 10.8.7 广播消息345 10.8.8 生成房间信息345 10.9 服务端房间管理器347 10.9.1 数据结构347 10.9.2 获取房间347 10.9.3 添加房间348 10.9.4 删除房间348 10.9.5 生成列表信息348 10.10 服务端消息处理349 10.10.1 查询战绩MsgGet-Achieve350 10.10.2 查询房间列表MsgGetRoom-List350 10.10.3 创建房间MsgCreate-Room351 10.10.4 进入房间MsgEnterRoom351 10.10.5 查询房间信息MsgGet-RoomInfo352 10.10.6 离开房间MsgLeave-Room352 10.11 玩家事件处理353 10.12 测试354 第11章 战斗和胜负判定358 11.1 协议设计358 11.1.1 进入战斗MsgEnterBattle359 11.1.2 战斗结果MsgBattleResult359 11.1.3 退出战斗MsgLeaveBattle360 11.2 坦克360 11.2.1 不同阵营的坦克预设360 11.2.2 战斗模块361 11.2.3 同步坦克SyncTank362 11.2.4 坦克的属性362 11.3 战斗管理器363 11.3.1 设计要点363 11.3.2 管理器类363 11.3.3 坦克管理364 11.3.4 重置战场365 11.3.5 开始战斗366 11.3.6 产生坦克367 11.3.7 战斗结束369 11.3.8 玩家离开369 11.4 战斗结果面板369 11.4.1 面板预设369 11.4.2 面板逻辑371 11.5 服务端开启战斗373 11.5.1 能否开始战斗373 11.5.2 定义出生点373 11.5.3 坦克信息376 11.5.4 开启战斗377 11.5.5 消息处理377 11.6 服务端胜负判断378 11.6.1 是否死亡379 11.6.2 胜负决断函数379 11.6.3 定时器380 11.6.4 Room::Update380 11.7 服务端断线处理381 11.8 测试382 11.8.1 进入战场382 11.8.2 离开战场384 第12章 同步战斗信息386 12.1 同步理论387 12.1.1 同步的过程387 12.1.2 同步的难题387 12.2 状态同步389 12.2.1 直接状态同步389 12.2.2 跟随算法390 12.2.3 预测算法390 12.3 帧同步391 12.3.1 指令同步391 12.3.2 从Update说起392 12.3.3 什么是同步帧393 12.3.4 指令394 12.3.5 指令的执行394 12.4 协议设计395 12.4.1 位置同步MsgSyncTank396 12.4.2 开火MsgFire396 12.4.3 击中MsgHit397 12.5 发送同步信息397 12.5.1 发送位置信息397 12.5.2 发送开火信息398 12.5.3 发送击中信息399 12.6 处理同步信息400 12.6.1 协议监听400 12.6.2 OnMsgSyncTank401 12.6.3 OnMsgFire401 12.6.4 OnMsgHit402 12.7 同步坦克SyncTank402 12.7.1 预测算法的成员变量402 12.7.2 移动到预测位置403 12.7.3 初始化404 12.7.4 更新预测位置405 12.7.5 炮弹同步406 12.8 服务端消息处理406 12.8.1 位置同步MsgSyncTank407 12.8.2 开火MsgFire408 12.8.3 击中MsgHit409 12.8.4 调试410 12.9 完善细节412 12.9.1 滚动的轮子和履带412 12.9.2 灵活操作413 12.9.3 准心413 12.9.4 自动瞄准414 12.9.5 界面和场景优化414 12.9.6 战斗面板415 12.9.7 击杀提示416 12.10 结语416

Unity3D网络游戏实战(第2版).epub"网盘下载"

版权说明

1、本站不保存、不存储任何实质资源,以上二维码指向为网盘资源链接,其内容归对应版权方所有
2、如有侵犯版权的情况,请点击下面举报/反馈按钮反馈或发送邮件76556431@qq.com投诉说明情况
3、我们核实后将第一时间删除相关页面内容,谢谢理解和配合

这些人下载过 (12)
  • 精致妆容
  • 浮生若舢
  • 我是世勋他二嫂
  • 狼声呜咽
  • Rebirth重生
  • 拥千山
  • 一碗人间
  • 人间不值得
  • 彼岸花逝去的爱
  • 庭外院说客
  • 深山見聞
  • 自渡
最新回复 (0)

    暂无评论

请先登录后发表评论!

返回
请先登录后发表评论!