Unity3D网络游戏实战

Unity3D网络游戏实战

编辑推荐

带你初步拥有开发一款完整网络游戏的能力。

内容简介

本书分为两个部分,第一部分“单机游戏”在于开发一款功能完整坦克单机游戏,除了让坦克行走、开炮,还将介绍基于代码和资源分离的界面系统、敌人AI。第二部分“网络游戏”主要介绍网络通信的原理,并开发客户端的网络模块和服务端程序框架。然后将一部分的坦克游戏改造成联网对战的多人游戏。本书基于Unity3D 5.2编写,Unity3D 5.X版本都适用。书中例子为商业游戏简化版本,读者可以从中了解商业游戏的设计思路和实现方法。读者看完本书,初步拥有开发一款完整网络游戏的能力。

作者简介

作者罗培羽,投身于游戏行业。组织和参与多款游戏的开发。发布了《教你用VB制作RPG游戏》《教你制作3DRPG游戏》《掌握X3D》《不会电脑也汇编》等教程。

章节目录

版权信息

前言

第1章 掌握Unity3D基本元素

1.1 最最简单的游戏

1.1.1 Unity3D的界面构成

1.1.2 在场景中创建立方体

1.1.3 编写第一个程序

1.1.4 测试游戏

1.1.5 总结

1.2 导入资源

1.2.1 从本地导入素材

1.2.2 从本地导入包文件

1.2.3 从AssetStore导入

1.3 山体系统

1.4 灯光

1.5 材质

1.5.1 什么是材质

1.5.2 如何创建材质

1.5.3 Mesh Renderer组件

1.5.4 着色器

1.6 预设

1.6.1 制作预设

1.6.2 预设的实例化

1.6.3 使用预设的例子

1.7 声音

1.7.1 音源

1.7.2 接收器

1.7.3 简单播放器

1.8 GUI

1.8.1 GUI绘图基础

1.8.2 编写HelloWorld程序

1.8.3 绘制登录框

1.9 场景

1.9.1 创建场景

1.9.2 场景切换

1.10 导出游戏

第2章 坦克控制单元

2.1 导入坦克模型

2.1.1 导入模型

2.1.2 调整尺寸

2.1.3 材质和贴图

2.2 行走控制

2.2.1 基础知识

2.2.2 上下左右移动

2.2.3 转向和前后移动

2.3 相机跟随

2.3.1 数学原理

2.3.2 跟随算法

2.3.3 设置跟随目标

2.3.4 横向旋转相机

2.3.5 纵向旋转相机

2.3.6 滚轮调节距离

2.4 旋转炮塔

2.4.1 坦克的层次结构

2.4.2 炮塔

2.4.3 炮管

2.5 车辆行驶

2.5.1 Unity3D的物理系统

2.5.2 车轮碰撞器

2.5.3 控制车辆

2.5.4 制动(刹车)

2.6 轮子和履带

2.6.1 轮子转动

2.6.2 履带滚动

2.7 音效

第3章 火炮与敌人

3.1 发射炮弹

3.1.1 制作炮弹

3.1.2 制作爆炸效果

3.1.3 炮弹轨迹

3.1.4 坦克开炮

3.2 摧毁敌人

3.2.1 坦克的控制类型

3.2.2 坦克的生命值

3.2.3 焚烧特效

3.2.4 坦克被击中后的处理

3.2.5 炮弹的攻击处理

3.3 准心

3.3.1 概念和原理

3.3.2 计算目标射击位置

3.3.3 计算实际射击位置

3.3.4 绘制准心

3.4 绘制生命条

3.4.1 生命条素材

3.4.2 绘制生命条

3.5 击杀提示

3.5.1 谁发射了炮弹

3.5.2 谁被击中

3.5.3 显示击杀提示

3.6 炮弹的音效

3.6.1 发射音效

3.6.2 爆炸音效

第4章 人工智能

4.1 基于有限状态机的人工智能

4.1.1 有限状态机

4.1.2 分层有限状态机

4.2 程序结构

4.2.1 AI类的结构

4.2.2 在Tank中调用

4.3 搜寻目标

4.3.1 搜寻规则

4.3.2 坦克标签

4.3.3 主动搜寻算法

4.3.4 被动搜寻算法

4.3.5 调试

4.4 向敌人开炮

4.4.1 电脑控制的方式

4.4.2 炮塔炮管的目标角度

4.4.3 调试程序

4.4.4 开炮

4.5 走向目的地

4.5.1 路点

4.5.2 路径

4.5.3 根据场景标志物生成路径

4.5.4 给AI指定路径

4.5.5 操控坦克

4.5.6 调试程序

4.6 使用NavMesh计算路径

4.6.1 NavMesh的原理

4.6.2 生成导航图

4.6.3 生成路径

4.7 行为决策

4.7.1 巡逻状态

4.7.2 进攻状态

4.7.3 调试

4.8 战场系统

4.8.1 单例模式

4.8.2 BattleTank

4.8.3 战场逻辑

4.8.4 敌我区分

4.8.5 出生点

4.8.6 坦克预设

4.8.7 开启一场两军对峙的战斗

4.8.8 战场结算

4.8.9 开始战斗

第5章 代码分离的界面系统

5.1 Unity UI系统

5.1.1 创建UI部件

5.1.2 Canvas画布

5.1.3 EventSystem

5.1.4 RectTransform

5.1.5 其他UGUI组件

5.1.6 事件触发

5.1.7 简单的面板调用

5.2 制作界面素材

5.2.1 标题面板和信息面板

5.2.2 制作预设

5.3 面板基类PanelBase

5.3.1 代码与资源分离的优势

5.3.2 面板系统的设计

5.3.3 面板基类的设计要点

5.3.4 面板基类的实现

5.4 面板管理器PanelMgr

5.4.1 层级管理

5.4.2 打开面板OpenPanel

5.4.3 关闭面板ClosePanel

5.5 面板逻辑

5.5.1 标题面板TitlePanel

5.5.2 信息面板InfoPanel

5.6 调用界面系统

5.6.1 界面系统的资源

5.6.2 界面系统的调用

5.7 胜负面板

5.7.1 面板素材

5.7.2 面板逻辑

5.7.3 面板调用

5.8 设置面板

5.8.1 面板素材

5.8.2 面板逻辑

5.8.3 面板调用

第6章 网络基础

6.1 七层网络模型

6.1.1 应用层

6.1.2 传输层

6.1.3 网络层

6.1.4 数据链路层

6.1.5 物理层

6.2 IP与端口

6.2.1 IP地址

6.2.2 端口

6.2.3 C#中的相关类型

6.3 TCP协议

6.3.1 TCP连接的建立

6.3.2 TCP的数据传输

6.3.3 TCP连接的终止

6.4 Socket套接字

6.4.1 Socket连接的流程

6.4.2 Socket类

6.5 同步Socket程序

6.5.1 新建控制台程序

6.5.2 编写服务端程序

6.5.3 客户端界面

6.5.4 客户端程序

6.6 异步Socket程序

6.6.1 BeginAccept

6.6.2 BeginReceive

6.6.3 Conn(state)

6.6.4 服务端程序(主体结构)

6.6.5 服务端程序(Accept回调)

6.6.6 服务端程序(接收回调)

6.6.7 开启服务端

6.6.8 客户端界面

6.6.9 客户端程序

6.6.10 调试程序

6.7 MySQL

6.7.1 配置MySQL环境

6.7.2 建立MySQL数据库

6.7.3 MySQL基础知识

6.7.4 MySQL留言板服务端程序

6.7.5 调试程序

6.8 类的序列化

6.9 定时器

6.10 线程互斥

6.11 通信协议和消息列表

6.11.1 通信协议

6.11.2 服务端程序

6.11.3 消息列表

6.11.4 客户端场景

6.11.5 客户端程序

6.11.6 调试

第7章 服务端框架

7.1 服务端架构

7.1.1 总体架构

7.1.2 游戏流程

7.1.3 连接的数据结构

7.1.4 数据库结构

7.1.5 项目结构

7.2 数据管理类DataMgr

7.2.1 数据表结构

7.2.2 角色数据

7.2.3 Player的初步版本

7.2.4 连接数据库

7.2.5 防止sql注入

7.2.6 Register注册

7.2.7 CreatePlayer创建角色

7.2.8 登录校验

7.2.9 获取角色数据

7.2.10 保存角色数据

7.2.11 调试

7.3 临时数据

7.4 网络管理类ServNet

7.4.1 粘包分包现象

7.4.2 粘包分包的处理方法

7.4.3 Conn连接类

7.4.4 ServNet网络处理类

7.4.5 ReceiveCb的粘包分包处理

7.4.6 发送消息

7.4.7 启动服务端

7.4.8 调试

7.5 心跳

7.5.1 心跳机制

7.5.2 时间戳

7.5.3 使用定时器

7.5.4 心跳协议

7.5.5 调试心跳协议

7.6 协议

7.6.1 协议基类

7.6.2 字符串协议

7.6.3 字节流协议

7.6.4 字节流辅助方法

7.6.5 使用协议

7.6.6 调试

7.7 中间层Player类

7.7.1 登录流程

7.7.2 下线

7.7.3 Player类的实现

7.8 消息分发

7.8.1 消息处理的类

7.8.2 消息处理类的实现

7.8.3 反射

7.9 注册登录

7.9.1 协议

7.9.2 注册功能

7.9.3 登录功能

7.9.4 登出功能

7.9.5 获取分数功能

7.9.6 增加分数功能

7.9.7 输出服务端信息

7.9.8 Main中的调用

7.9.9 测试用客户端

7.9.10 调试

第8章 客户端网络模块

8.1 网络模块设计

8.1.1 整体架构

8.1.2 监听表

8.1.3 类结构

8.2 委托

8.2.1 使用委托

8.2.2 示例

8.2.3 操作符

8.3 MsgDistribution消息分发

8.3.1 MsgDistribution的成员

8.3.2 DispatchMsgEvent

8.3.3 AddListener

8.4 Connection连接

8.4.1 Connection的成员

8.4.2 连接服务端

8.4.3 关闭连接

8.4.4 异步回调

8.4.5 消息处理

8.4.6 发送数据

8.4.7 心跳机制

8.5 NetMgr网络管理

8.6 登录注册功能

8.6.1 界面资源

8.6.2 登录面板功能

8.6.3 注册面板功能

8.7 位置同步的服务端程序

8.7.1 协议

8.7.2 场景

8.7.3 协议处理

8.7.4 事件处理

8.8 位置同步的客户端程序

8.8.1 客户端资源

8.8.2 客户端程序

8.9 调试框架

第9章 房间系统

9.1 游戏界面

9.1.1 登录面板

9.1.2 注册面板

9.1.3 提示面板

9.1.4 UGUI的滑动区域

9.1.5 房间列表面板

9.1.6 房间面板

9.1.7 创建预设

9.2 协议设计

9.3 提示框的功能实现

9.4 登录注册的功能实现

9.4.1 登录面板的功能

9.4.2 GameMgr

9.4.3 注册面板的功能

9.4.4 调试

9.5 房间列表面板的功能

9.5.1 获取部件

9.5.2 开启监听

9.5.3 刷新成绩栏

9.5.4 刷新房间列表

9.5.5 刷新按钮

9.5.6 加入房间

9.5.7 新建房间

9.5.8 登出

9.5.9 测试面板

9.6 房间面板的功能

9.6.1 获取部件

9.6.2 监听

9.6.3 刷新列表

9.6.4 退出按钮

9.6.5 开始战斗

9.6.6 测试面板

第10章 房间系统服务端

10.1 玩家数据

10.2 房间类

10.2.1 数据结构

10.2.2 添加玩家

10.2.3 删除玩家

10.2.4 更换房主

10.2.5 广播消息

10.2.6 输出房间信息

10.3 房间管理器

10.3.1 数据结构

10.3.2 创建房间

10.3.3 离开房间

10.3.4 输出房间列表

10.4 玩家消息处理

10.4.1 查询成绩GetAchieve

10.4.2 获取房间列表GetRoomList

10.4.3 创建房间CreateRoom

10.4.4 加入房间EnterRoom

10.4.5 获取房间信息GetRoomInfo

10.4.6 离开房间LeaveRoom

10.5 玩家事件处理

10.6 调试

第11章 战场系统

11.1 协议设计

11.2 开始战斗

11.2.1 客户端战场数据

11.2.2 获取阵营

11.2.3 清理场景

11.2.4 开始战斗

11.2.5 产生坦克

11.2.6 服务端战场数据

11.2.7 服务端条件检测

11.2.8 服务端开启战斗

11.2.9 服务端消息处理

11.2.10 调试程序

11.3 三种同步位置方案

11.3.1 瞬移式位置同步

11.3.2 移动式位置同步

11.3.3 预测式位置同步

11.4 位置同步的服务端处理

11.5 位置同步的客户端处理

11.5.1 发送同步信息

11.5.2 网络同步类型

11.5.3 预测目标位置

11.5.4 向目标位置移动

11.5.5 监听服务端协议

11.5.6 调试

11.6 同步炮塔炮管

11.7 轮子和履带

第12章 炮火同步

12.1 炮弹同步

12.1.1 协议设计

12.1.2 服务端处理

12.1.3 客户端发送同步信息

12.1.4 客户端接收同步信息

12.2 伤害同步

12.2.1 协议设计

12.2.2 服务端处理

12.2.3 客户端发送伤害信息

12.2.4 客户端接收伤害信息

12.3 胜负判断

12.3.1 协议设计

12.3.2 服务端胜负判断

12.3.3 服务端处理战斗结果

12.3.4 客户端接收战斗结果

12.4 中途退出

12.5 完整的游戏

Unity3D网络游戏实战是2016年由机械工业出版社华章分社出版,作者罗培羽。

得书感谢您对《Unity3D网络游戏实战》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

你可能喜欢
Terraform实战 电子书

本书基于实际项目,揭示如何使用Terraform自动扩展和管理基础架构。
Kafka实战 电子书

本书介绍Kafka的应用和使用,适合Java开发者和数据工程师。
数据科学实战 电子书

本书注重人文精神,多角度、全方位、深入介绍数据科学的实用指南,堪称大数据时代的实战宝典。
Kafka Streams实战 电子书

本书教读者在Kafka平台上实现流式处理。在这本易于理解的书中,读者将通过实际的例子来收集、转换和聚合数据,使用多个处理器,处理实时事件。
机器学习实战 电子书

《机器学习实战》面向日常任务的高效实战内容,介绍并实现机器学习的主流算法。
AppInventor开发实战 电子书

AppInventor是MIT开发的流行的可视化编程工具,编程爱好者可以在短时间学会创建炫目的安卓手机应用。
ExcelVBA案例实战 电子书

本书以案例讲解的形式,由浅入深地介绍了VBA在Excel中的应用。