展开全部

主编推荐语

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

内容简介

本书分为两个部分,第一部分“单机游戏”在于开发一款功能完整坦克单机游戏,除了让坦克行走、开炮,还将介绍基于代码和资源分离的界面系统、敌人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 完整的游戏
展开全部

评分及书评

评分不足
1个评分

出版方

机械工业出版社有限公司

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。