编辑推荐
适读人群 :游戏开发爱好者:想要自己制作一款游戏的人,作为自学参考书。游戏开发岗位求职者:想要谋求游戏公司开发岗位的人,作为自学参考书。职场新人:游戏公司程序员,作为自学参 本书作者对对服务端技术、游戏客户端、人工智能和虚拟现实等领域都有研究,曾组织“民间团队”开发仙剑同人游戏《仙剑5前传之心愿》。
本书以实现一款完整的多人对战游戏为目的,全书涉及行走控制、人工智能系统、界面系统、服务端框架、客户端框架、房间系统、战场系统等多项内容,详细讲解开发的整个过程!
内容简介
本书在一开始便提出一个明确的学习目标,便是要制作一款完整的多人对战游戏,然后一步一步去实现它。全书分为3个部分:
第一部分“单机游戏”:第1章至第5章,主要在于开发一款功能完整坦克单机游戏。除了让坦克行走、开炮,还将介绍基于代码和资源分离的界面系统、敌人AI。了解开发单机游戏的知识,也是为接下来的网络开发学习奠定基础。
第二部分“网络原理”:第6章至第8章,主要介绍网络通信的原理,开发客户端的网络模块和服务端程序框架。这套框架具有较高的通用性,可以运用在多种游戏上。
第三部分“网络游戏”:第9章至第12章,主要讲解房间系统和同步系统的逻辑实现,将单机坦克游戏改造成多人对战网络游戏。
作者简介
罗培羽,广州四三九九信息科技有限公司项目负责人、主程序,参与《卡布魔镜》《卡布西游》《卡布仙踪》等多款游戏的开发工作。对游戏程序开发有着深入了解,对游戏项目的组织和管理有着一定的实战经验。目前关注休闲手机游戏、虚拟现实和现实增强、独立游戏等领域。
曾组织团队开发3D仙剑同人游戏《仙剑5前传之心愿》,该项目为目前仅有的一款成功的3D仙剑同人,引起仙侠游戏圈的普遍关注。发布后获得游侠网单机RPG类下载排行第四名,仙剑官方也给予高度评价。
自2009年开始,发布《教你用vb制作rpg游戏》、《教你制作3DRPG游戏》、《掌握X3D》、《不会电脑也汇编》等大量教程。2004年出版专著《手把手教你用c#制作rpg游戏》,该书为《十二五全国高校数字游戏设计精品教材》系列之一。
内页插图
精彩书评
本书不仅是一本适合U3D初学者的入门教材,对于初中级策划来说也是一个不错的选择。无论什么引擎、什么工具软件,都是可以通过学习来应用的,但只有从内心游戏的情怀出发去做技术,才能做好游戏。本书简洁明了,内容几乎以添砖加瓦的方式,覆盖U3D制作的所有方面,甚至可以读出在软件工程的理解。我要将此书推荐给所有有梦想的游戏人。
——独立游戏开发者,前盛大游戏产品经理 黄天健
通过本书,读者可以学习如何制作一款带AI的Unity游戏,并能了解服务端的工作原理,以及使用unity接入服务端等实际开发中所需的知识。从内容思路和字行间可以感受到作者是一名拥有丰富实战经验的游戏开发者。作为unity客户端开发人员工作业余提升自我的学习教材,本书是一个很好的选择!
——佛山市超体软件科技有限公司联合创始人、CTO 区乐辉
目录
第1章 掌握Unity3D基本元素
1.1 最最简单的游戏
1.1.1在场景中创建一个立方体
1.1.2编写可以使立方体运动的程序
1.1.3测试游戏
1.1.4总结
1.2 资源导入
1.3 山体系统
1.4 灯光
1.5 材质
1.6 预设
1.6.1制作预设
1.6.2例子
1.7 声音
1.7.1音源
1.7.2接收器
1.7.3简单播放器
1.8 GUI
1.8.1用Unity3D编写HelloWorld程序
1.8.2用Unity3D编写登录框
1.9导出游戏
第 2 章 驾驶梦想中的坦克
备用章节名:坦克控制单元
2.1行走控制
2.1.1Unity3D的脚本
2.1.2获取输入操作
2.1.3坐标变换
2.2 相机跟随
2.2.1跟随的数学原理
2.2.2相机跟随的功能实现
2.2.3鼠标控制相机的角度
2.2.4滚轮调整相机与坦克的距离
2.3 坦克的物理特征
2.3.1 Unity3D的物理引擎
2.3.2 车轮碰撞器
2.4 驾驶坦克
2.5转动的轮子
2.6滚动的履带
第3章 开炮击毁敌人
备用章节名:火炮系统
3.1 旋转的炮塔
3.2 俯仰的炮管
3.3 开炮!
3.3.1制作炮弹
3.3.2制作爆炸效果
3.3.3炮弹逻辑
3.3.4开火
3.4 坦克的控制类型
3.5 摧毁敌军
3.6 准心
3.7 生命指示条
3.8 击中提示
3.8.1谁发射了炮弹
3.8.2被谁击中
3.8.3击杀提示
3.9 炮弹的音效
3.9.1射击音效
3.9.2爆炸声音
第4章 进击的人工智能
备用章节名:人工智能
4.1 实现人工智能的一般方法
4.1.1有限状态机
4.1.2分层有限状态机
4.2 搜寻目标
4.2.1编写AI类
4.2.2在Tank中调用AI类
4.3 向敌人开炮
4.3.1旋转的炮塔
4.3.2俯仰的炮管
4.3.3开炮!
4.4 路点和路径
4.4.1路点
4.4.2路径
4.4.3一种生成路径的方法
4.4.4给坦克指定路径
4.5 走向目的地
4.6 使用NavMesh计算路径
4.6.1NavMesh的原理
4.6.2生成导航图
4.6.3生成路径
4.7 行为决策
4.8 战场
4.8.1战场逻辑
4.8.2两军对峙
第5章 代码分离的界面系统
5.1 了解Unity UI系统(UGUI)
5.1.1 Canvas画布
5.1.2 EventSystem
5.1.3 RectTransform
5.1.4 其他UGUI组件
5.1.5 事件触发
5.2 制作坦克游戏界面
5.3 界面基类PanelBase
5.3.1 代码与资源分离的优势
5.3.2 界面系统的设计
5.3.3 PanelBase的设计
5.4 界面管理器PanelMgr
5.4.1 层级管理
5.4.2 打开面板OpenPanel
5.4.3 关闭面板ClosePanel
5.5 TitlePanel和InfoPanel
5.6 调用界面系统
5.7 胜负面板
5.8 设置面板
第6章 网络基础
6.1 七层网络模型
6.1.1 应用层
6.1.2传输层
6.1.3网络层
6.1.4数据链路层
6.2 IP与端口
6.3 TCP协议
6.3.1 TCP连接的建立
6.3.2 TCP的数据传输
6.3.3 TCP连接的终止
6.4 Socket套接字
6.5 同步Socket程序
6.5.1 新建控制台程序
6.5.2编写服务端代码
6.5.3编写客户端程序
6.6 异步socket程序
6.6.1 连接类(state)
6.6.2 异步服务端
6.6.3 开启服务端
6.6.4 编写客户端程序
6.7 Mysql
6.7.1 Mysql基础入门
6.7.2 留言板服务端程序
6.7.3 调试程序
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.3.1 Conn类
7.3.2 ServNet网络处理类
7.3.3 ReceiveCb的沾包分包处理
7.3.4 发送消息
7.3.5 启动服务端
7.3.6 客户端程序
7.4 心跳
7.4.1 时间戳
7.4.2使用定时器
7.4.3心跳消息
7.4.4调试
7.5 协议
7.5.1协议基类
7.5.2字符串协议
7.5.3字节流协议
7.5.4字节流辅助方法
7.5.5使用协议
7.5.6客户端程序
7.5.7调试
7.6 中间层player类
7.7 消息分发
7.7.1消息分发类
7.7.2 NetServ的消息分发
7.8 注册登录
7.8.1 协议
7.8.2 注册
7.8.3 登录
7.8.4 登出
7.8.5 获取分数
7.8.6 增加分数
7.8.7 Print输出服务端信息
7.8.8 Main
7.8.9 客户端
7.8.10 调试
第8章 客户端网络模块
8.1 网络模块设计
8.2 委托
8.3 MsgDistribution消息分发
8.4 Connection连接
8.4.1 连接服务端
8.4.2 异步回调
8.4.3 添加消息
8.4.4 发送数据
8.4.5 心跳处理
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.2 服务端房间类
9.3 服务端协议处理
9.4 客户端界面制作
9.5 客户端协议处理
第10章 同步战场系统
10.1 战场协议
10.2 服务端战场类
10.3 服务端协议处理
10.4 客户端界面制作
10.5 客户端协议处理
10.6
《数字织梦:虚实交互的艺术与科学》 一、 序言:超越平面的想象,构建沉浸的体验 我们生活在一个日益数字化的时代,虚拟与现实的界限正在模糊。从社交媒体的即时互动,到在线协作的无远弗届,再到娱乐体验的推陈出新,数字技术以前所未有的深度和广度渗透进我们的生活。而在这场变革的浪潮中,那些能够将我们从日常琐碎中抽离,带入一个全新维度、能够自由探索、互动、创造的数字世界,无疑是最具吸引力的存在。《数字织梦:虚实交互的艺术与科学》正是这样一本旨在揭示构建这些沉浸式数字体验背后原理与实践的著作。它将带领读者走进一个由代码、算法、设计和想象力共同编织而成的宏大世界,探索如何将抽象的概念转化为触手可及、生动鲜活的数字现实。 本书并非专注于单一的某个技术领域,而是以一种宏观而又深入的视角,审视构建现代数字体验的方方面面。我们关注的不仅仅是表面的华丽效果,更在于支撑这些效果的深层逻辑和创新思维。从三维空间的构建,到用户与环境的自然交互,再到多玩家协同的乐趣,每一个环节都蕴含着精妙的设计与严谨的工程。我们将一同探讨这些数字世界的“骨骼”与“血肉”是如何被塑造,它们如何协同工作,最终呈现出令人惊叹的沉浸感和互动性。 二、 第一章:三维空间的基石——几何、渲染与物理学的融合 任何一个引人入胜的数字世界,都离不开一个可靠的三维空间作为载体。本章将深入浅出地剖析构建这个虚拟空间的根本要素。我们将从最基础的几何学原理出发,理解点、线、面如何构成复杂的模型,并探讨多边形建模、纹理映射等技术,如何赋予这些几何体以丰富的视觉细节。 随后,我们将聚焦于“渲染”这一核心概念。从光线如何与物体表面交互,到色彩、阴影、反射的计算,我们将揭示图像如何在计算机中被绘制出来。光照模型、着色器、后期处理等关键技术将被详细阐述,让你明白为何虚拟世界的光影如此逼真,为何物体的质感如此细腻。 更进一步,我们还将探讨“物理学”在三维空间中的重要作用。物体的运动、碰撞、重力以及各种力的作用,都需要通过物理引擎来模拟。我们将了解如何让虚拟世界中的物体遵循现实世界的物理规律,从而产生可信的动态行为。从简单的弹跳球到复杂的布娃娃效果,物理模拟是实现逼真互动的关键。本章的最终目标是让你理解,一个令人信服的三维空间,是几何学、渲染技术与物理模拟巧妙结合的产物。 三、 第二章:交互的艺术——直观、自然与响应式的设计 虚拟世界之所以迷人,很大程度上在于它允许我们与其互动,而这种互动体验的好坏,直接决定了用户是否能真正沉浸其中。《数字织梦》将花费大量篇幅探讨“交互设计”的艺术与科学。我们不仅仅是观看,更是参与。 本章将首先关注“用户输入”的多样性。从传统的键盘鼠标,到更先进的触摸屏、体感控制器,乃至未来的脑机接口,我们将分析不同输入方式的优劣,以及如何根据平台和目标用户选择最合适的交互方式。 随后,我们将深入探讨“用户界面(UI)”与“用户体验(UX)”的设计原则。一个好的UI应该清晰、简洁、易于理解,而一个优秀的UX则能让用户在不知不觉中完成操作,感受到愉悦和流畅。我们将讨论如何设计直观的菜单、有意义的反馈机制,以及如何通过动画和音效来增强交互的沉浸感。 “事件驱动编程”和“状态管理”是实现响应式交互的基石。我们将学习如何编写代码,让虚拟世界能够实时响应用户的操作,并根据不同的状态变化呈现不同的表现。从简单的按钮点击,到复杂的角色控制,再到多玩家之间的信息同步,理解事件流和状态转换是构建流畅互动体验的关键。本章的目标是让读者掌握设计既直观又富有表现力的交互方式,让用户在虚拟世界中感受到“掌控感”和“参与感”。 四、 第三章:多玩家的协奏曲——同步、网络与协同的挑战 当虚拟世界的想象力延伸到多人在线时,我们将进入一个更加宏大而复杂的领域——“多玩家交互”。《数字织梦》将系统地剖析构建多人数字体验所面临的独特挑战,并提供相应的解决方案。 “网络通信”是多人世界赖以生存的命脉。我们将探讨客户端-服务器(Client-Server)架构、对等网络(Peer-to-Peer)架构等主流网络模型,并分析它们的适用场景。数据传输的效率、带宽的优化、网络延迟的处理,这些都是构建流畅多人体验必须克服的难关。 “状态同步”是多人游戏中最核心的问题之一。如何确保所有玩家看到的虚拟世界状态是一致的,即使网络条件不尽相同?我们将深入研究各种同步策略,如确定性同步、状态同步、事件同步,并分析它们的优缺点。如何处理玩家的动作、物体的状态、游戏进程的同步,将是本章的重点。 “安全与反作弊”是多人世界不可忽视的另一个重要方面。我们将探讨如何保护游戏免受恶意攻击,如何设计合理的验证机制,以维护公平的游戏环境。 此外,本章还将触及“社交互动”的设计。如何在虚拟世界中促进玩家之间的交流与合作?如何设计有效的社交系统,让玩家能够轻松地组队、聊天、分享体验?《数字织梦》将带领读者理解,一个成功的多人数字世界,是网络技术、同步策略、安全机制与社交设计的完美融合。 五、 第四章:智能的注入——AI、算法与动态生成 一个充满生命力的数字世界,不仅仅是静态的场景和可预测的互动,它还需要具备一定程度的“智能”。本章将探索如何为虚拟世界注入活力,使其能够自主地、动态地生成内容,并与玩家进行更深层次的互动。《数字织梦》将聚焦于人工智能(AI)和高级算法的应用。 我们将首先介绍“行为树”、“状态机”等AI基础算法,以及它们如何在NPC(非玩家角色)的决策和行为中发挥作用。如何让NPC拥有独立的思考能力,能够根据环境和玩家的行为做出反应?我们将探讨如何设计复杂的AI逻辑,使其能够执行各种任务,并表现出令人信服的个性。 “路径寻找”与“寻路”算法是AI实现复杂导航和探索的基础。我们将学习如何让AI在复杂的三维环境中找到最优路径,从而实现逼真的移动和追逐。 “动态生成”是赋予数字世界无限可能性的关键。本章将介绍程序化生成(Procedural Generation)技术,例如用于生成地形、植被、建筑甚至任务的算法。这将使我们能够构建规模庞大、内容丰富、每次体验都略有不同的虚拟世界。 “机器学习”在现代AI中的地位日益重要。我们将简要介绍机器学习如何被应用于游戏AI,例如用于学习玩家的行为模式,或者用于优化游戏平衡。 本章的最终目标是让你理解,AI和算法并非遥不可及的理论,而是构建更加生动、智能、富有趣味性的数字体验的强大工具。 六、 第五章:性能的优化与扩展——流畅体验的保障 再宏大、再精美的数字世界,如果运行起来卡顿缓慢,都将大打折扣。《数字织梦》不会忽略“性能优化”这一至关重要的环节,它关乎用户体验的根本。《数字织梦》将深入探讨如何让你的数字世界运行得既流畅又高效。 我们将首先关注“渲染性能”的优化。从“多边形数量”的控制、“纹理压缩”的技巧,到“遮挡剔除”、“视锥剔除”等场景优化技术,我们将学习如何减少不必要的计算,让画面渲染更加高效。 “内存管理”与“资源加载”是保证程序稳定运行的关键。我们将探讨如何合理地分配和管理内存,如何高效地加载和卸载资源,以避免内存泄漏和程序崩溃。 “代码效率”是软件性能的根本。我们将学习编写高效的代码,避免不必要的循环和计算,并利用并行计算等技术来提升执行速度。 “跨平台开发”与“部署”也是实现数字世界广泛传播的重要考量。我们将探讨如何设计能够适应不同硬件和操作系统的项目,以及如何将你的作品有效地发布给用户。 本章的目标是让你掌握一套完整的性能优化方法论,确保你的数字世界能够在各种环境下提供稳定、流畅、令人愉悦的体验。 七、 结语:数字世界的无限未来 《数字织梦:虚实交互的艺术与科学》并非终点,而是旅程的开端。我们所探讨的每一个领域,都蕴含着无限的探索空间和创新的可能。从更逼真的渲染技术,到更自然的交互方式,再到更智能的AI,数字世界的未来充满了激动人心的潜力。 本书希望能够激发你对数字创造的热情,为你提供构建属于自己数字世界的坚实基础。无论你是想要设计一场身临其境的冒险,还是构建一个高效的协作平台,亦或是探索全新的娱乐形式,本书都将为你提供宝贵的知识和启发。 数字时代正以前所未有的速度发展,而那些能够理解并驾驭虚拟与现实交织的创造者,必将在未来的浪潮中占据重要地位。让我们一同踏上这段数字织梦的旅程,用想象力和创造力,构建属于我们的虚实交互的未来。