前言
为什么要写这本书
玩到好玩的游戏时,我总希望有朝一日能做出优秀的游戏作品;对生活有感悟时,也总会期待在游戏中表达感想。自Unity引擎流行开来,个人和小团队也能制作精良的游戏,实现梦想不再遥远。
使用Unity引擎,游戏开发者再也不用过度关心底层复杂系统的实现,只需关心具体的游戏逻辑。一般来说,游戏引擎都能够很好地处理渲染、物理等通用的底层模块,但对于那些不完全通用的功能,比如本书介绍的网络模块,引擎往往没能提供通用的解决方案。这就要求开发者对网络底层有足够深刻的理解,才能做出优质的网络游戏。
如今,游戏联网是一大趋势。几大热门的手机游戏厂商只开发网络游戏,老牌单机游戏也纷纷添加联网功能。作为有志于从事游戏行业、渴望做出顶级产品的我们,更需要深入探讨网络游戏的开发技术。然而市面上的Unity教程,大多是介绍引擎的使用方法和简单的单机游戏的开发过程,就算涉及网络,也只是简单带过。市面上也有不少介绍网络底层的资料,但大部分没有和游戏开发结合起来,更不可能提供完整的游戏示例。想要制作当今热门的网络游戏,特别是开发手机网络游戏,或者想要到网游公司求职,很难找到实用的教程。
本书以制作一款完整的多人坦克对战游戏为例,详细介绍网络游戏的开发过程。书中还介绍一套通用的服务端框架和客户端网络模块——它是商业游戏的简化版本。相信通过本书,读者能够掌握Unity网络游戏开发的大部分知识,能够深入了解TCP底层机制,能够亲自搭建一套可重复使用的客户端框架,也能够从框架设计中了解商业游戏的设计思路。本书分为三个部分,分别是“扎基础”“搭框架”和“做游戏”,本书结合实例,循序渐进,深入地讲解网络游戏开发所需的知识。
2013年8月,在筹备第一本著作《手把手教你用C#制作RPG游戏》的同时,我也在规划这本介绍网络游戏技术的书籍。2016年11月,《Unity3D网络游戏实战》正式出版。此后一年多的时间里,陆续有热心读者与我交流,探讨网络游戏的开发知识,我也一直在学习和积累。2018年1月,在收集了足够多的反馈,也相信自己的技术水平又上一个层次之后,我便着手本书第2版的写作。第2版的结构与第1版有颇多差异,对网络底层有更详细的介绍,而对场景搭建和单机游戏部分做了必要的精简,代码质量也有了很大提高,可以说全书几乎重写。
这本书凝结了我多年的工作经验,也凝结着我对国产游戏的美好愿景。愿与诸位一同努力,造就举世瞩目的游戏。