科技
类型
8.1
豆瓣评分
可以朗读
语音朗读
178千字
字数
2016-11-01
发行日期
展开全部
主编推荐语
带你初步拥有开发一款完整网络游戏的能力。
内容简介
本书分为两个部分,第一部分“单机游戏”在于开发一款功能完整坦克单机游戏,除了让坦克行走、开炮,还将介绍基于代码和资源分离的界面系统、敌人AI。第二部分“网络游戏”主要介绍网络通信的原理,并开发客户端的网络模块和服务端程序框架。然后将一部分的坦克游戏改造成联网对战的多人游戏。本书基于Unity3D 5.2编写,Unity3D 5.X版本都适用。书中例子为商业游戏简化版本,读者可以从中了解商业游戏的设计思路和实现方法。读者看完本书,初步拥有开发一款完整网络游戏的能力。
目录
- 版权信息
- 前言
- 第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 完整的游戏
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。