课程介绍

这本书主要讲述大规模多人网络游戏开发的框架和编程实践,以实际案例介绍使网络游戏框架无益的整个过程,并告诉读者网络游戏制作的所有细节。

全书共12章,从网络游戏的底层网络编程开始,逐步引导读者学习网络游戏开发的各个步骤。

本书通过近50个真实示例、近80个流程图,以直观的方式阐述和还原游戏制作的全过程,涵盖了网络游戏设计的核心概念和实现,包括游戏主循环、线程、Actor模式、定时器、对象池、组件编码、架构层的解耦等。

本书既可以作为网络游戏行业从业人员的编程指南,也可以作为大学计算机相关专业网络游戏开发课程的参考书。

关键词:网络游戏,游戏程序,程序设计

1.1节介绍了 单机游戏与网络游戏的区别,本文带你理解IP地址和TCP/IP。

1.2 理解IP地址

在开始真正的网络编程之前,需要理解一些基本概念,IP地址就是其中之一。

在工作和生活中安装和使用WiFi时,经常听人说起IP地址,相信大家一定不会陌生。但它究竟是什么,可能有些读者还不太清楚。IP地址对大众而言就是类似于127.0.0.1这种字符串,但对于编程者来说,我们必须了解这个字符串的本质是一个32位的整数。IP地址具体地确定了一台计算机,它是这台计算机在整个网络中的ID,就像人们使用的身份证一样。

我们看到的IP地址通常是4个十进制数,以“.”隔开,每个十进制数不超过255。

读者想过为什么它不能超过255吗?之前讲过IP地址的本质是一个32位的整数,也就是4字节。为了便于记忆,把每个字节用数字的方式呈现出来,以“.”分隔来显示。也就是说,在127.0.0.1这个串中,每个数值都表示一个字节,一个字节当然不可能超过255。

在使用网络通信的时候,除了IP之外,还需要一个端口。例如,常用的HTTP的默认端口就是80。当我们访问网站的时候,其实就是通过80端口与主机进行通信的。有了IP地址和端口,就可以指定一个确定且唯一的通信链路。

随着互联网的发展,网络变得越来越庞大,之前定义的32位IP地址已经不够用了,所以新的长达128位的IP地址出现了,即IPv6,而旧的32位地址称为IPv4。

1.3 理解TCP/IP

在互联网上,任意两台计算机都必须通过网络协议进行通信。游戏中常用的网络通信协议为TCP/IP(Transmission Control Protocol/Internet Protocol)。

协议是什么呢?简单来说就是有格式的数据。A机向B机发送一串字符,这串字符经过层层包装发送到B机,B机根据约定的格式一步步分解成最初的字符串。使用网络通信工具进行网络通信或者浏览网络视频时,通信信息或视频数据从A机到B机,大部分人理解的情况可能如图1-5左侧所示,但实际上复杂度远远超过我们的想象,真实情况更趋近于图1-5右侧所示。

图1-5 网络拓扑

数据通过层层局域网或者交换机才能到达目标机器。这么长的传输距离,为了保证数据有效地传送到目标机器,设计出了网络通信协议。

常用的网络通信协议有TCP、UDP两种。TCP用于可靠的长连接,UDP一般用于速度比可靠性更重要的情况,例如传输视频流时,直播一般采用的也是UDP。UDP允许有数据的丢失,TCP则不允许。本书主要讲解的是TCP/IP,因为游戏数据是要基于数据稳定性的,TCP对于没有发送成功的包会重复发送,UDP则会直接丢弃。试想一下,看视频时,画面卡顿几秒不会有什么感觉,但在竞技游戏中,少发送一个技能则可能使我们输掉整场比赛。

理论上,开放系统互连参考模型(Open System Interconnection Reference Model,OSI参考模型)为7层。TCP/IP并不完全匹配这7层,它有4层协议。

图1-6简洁地说明了TCP/IP四层协议中的基本结构。链路层囊括网络层的数据,而网络层又囊括传输层的数据。像洋葱一样,数据发送时一层一层被包裹起来,到了发送目的地,像剥洋葱一样,又一层一层剥离,最终得到应用层需要的数据。在这个过程中,首先需要理解“层”的概念,表1-1详细说明了每个协议层级的作用。

图1-6 网络通信协议层级

表1-1 协议层级说明表

简单理解这几个层级之后,下面从应用与操作系统的层面来看协议在这几个层级的处理。发送数据时,如图1-7所示,数据从左侧自上而下叠加,而到了目标主机,数据是自下而上剥离的,最终到了应用层面,就变成了当初发送的数据。因为本书偏重于游戏编程,所以对于TCP/IP的底层协议不进行过多解释。如果读者对网络协议感兴趣,可以阅读一些相关的图书。

图1-7 操作系统与网络

作为一本编程图书,我们重点关心的是自定义协议与Socket库的相关操作,将目光锁定在数据应用层,而对于整个TCP/IP只需要有大概的了解即可。后续章节将由浅入深地介绍几个经典的网络编程模型。对于网络游戏来说,网络编程属于系统底层逻辑的部分,因此本书会花费一整章来细细讲解,以便读者充分了解并在以后好好使用,为上层逻辑打好基础。

课程完整版可前往UWA学堂观看《多人在线游戏架构实战:基于C++的分布式游戏编程》

本书特色

1、从网络游戏的底层编码开始,深入讲解游戏开发的详细步骤、游戏主循环、线程的使用、Actor模式的应用等。

2、以直观的方式阐述和还原游戏制作的全过程,全面介绍游戏编码过程中众多的核心概念和具体实现,如定时器、对象池、组件编码、架构层的解耦等。

3、使用C++来实现游戏的架构,读者也可以举一反三,使用其他的编程语言轻松实现游戏开发目标。

你将获得

1、充分了解业务逻辑和底层框架的设计意图

2、立足实践的服务端学习思路,深入浅出

3、用实际案例贯穿各知识点,在实践中学习

4、了解商业游戏的设计思路和实现方法

1.《多人在线游戏架构实战——理解IP地址和TCP/IP》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《多人在线游戏架构实战——理解IP地址和TCP/IP》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3017117.html