游戏的结构

游戏的结构,第1张

网络游戏运行原理
一套网络游戏(以下简称“网游”)程序通常由两部分构成:一是服务器端程序,二是客户端程序。两部分程序都是对源程序编译后得到的可执行的目标程序。服务器端程序由网游运营商掌握并运行。网络游戏运营商在开始运营游戏之前,需要进行一系列准备工作,如购买服务器(硬件)、配置服务器所用的 *** 作系统、准备网络带宽等等,并在此基础上安装服务器端程序,将服务器在电信企业托管。客户端程序由运营商通过网络或传统发行渠道向玩家推广。玩家得到客户端程序并将其安装在自己的个人电脑硬盘中。玩家只要具备上网的环境(在家上网或者在网吧上网)并运行客户端程序,就可以使客户端程序与服务器端程序进行数据传输通信。整个网络游戏的运行环境就此建成。(如图1所示)
正是因为有了运算功能强大的服务器,使得网络游戏能够实现游戏内角色的之间的对话和互动;正是因为有了遍布全球的互联网,使得网络游戏能够吸引数已亿计的广大玩家共同参与,带来激烈竞争的无穷魅力。玩家就在网络游戏世界的虚拟竞争中得到愉悦、获得满足。
我的理解是网络游戏的结构有1 地图 2 副本
3 职业(远程和近程) 任务,,级别 ,道具
技能

游戏服务器是现在国内很多游戏玩家比较熟悉的一种工具,因为现在很多海外的游戏在大陆都没有架设服务器,所以想要玩这些海外的游戏就需要用到游戏加速。

游戏加速有很多时候也会被拿来和或者代理服务器做比较,因为和代理服务器都是能够连接国际互联网的工具,有些时候也可以用来给游戏加速。

工作原理

网速是影响玩家网游体验时的难题,经常的登陆不上去,网络不稳,网络卡而且经常掉线,这些问题的存在已经成为所有网游的软肋。

而解决这些问题不只是网游运营商能够解决的,它需要重新排布服务器,这是一个十分繁琐又浪费财力的问题,运营商无法满足所有用户的需求,所以就衍生出另一个网游辅助工具——网游加速。

网游加速的工作原理是:在全国各大网络节点均架设服务器,让全国各地的玩家均可选择最优的节点从而享受完美的网游速度。无论是从联通到电信,从电信到联通,还是从教育网到联通与电信,都可以完美解决跨网所造成的网络屏障,从而实现联通-电信-教育网,网络无边界。

以下一篇是以服务器为例的,希望对你有帮助。

-------------

学习游戏服务器编程基础篇

姜雪伟

前段时间,一直给开发者灌输学习3D游戏引擎技术,包括游戏底层数据结构封装,算法与游戏实战技术分享视频课程,以及编写了一些使用算法解决游戏实际问题等等方面的文章。再给读者介绍3D游戏引擎的同时,也有人问我关于如何学习游戏服务器编程技术,其实我也喜欢游戏服务器编程。在游戏开发过程中,游戏服务器开发的工作量相对客户端来说少的多,比如游戏开发后期客户端要调各种效果,更换UI等。当然网上关于开源的服务器代码也很多,在Github上能搜到很多代码,比如java的,C#的,C++的,C的,erlang,python等等,很多人为此比较迷惑不知道到底该学习那种编程语言。服务器编程开发也是随着地区不同而不同,IT行业发展的中心是北京,上海,广州,它们对于游戏服务器编程语言的需求也是不同的,北京偏向于java语言编程,上海偏向于C++语言编程,广州偏向于erlang编程,这个也是告诉开发者,如果想去不同的地方可以根据需求有针对性的学习。本篇文章就是告诉读者如何学习游戏服务器编程开发?

我本人还是喜欢C++编程,其实语言只是一方面,原理还是要清楚的,下面我谈谈学习服务器编程的一点体会。

学习游戏服务器编程也要分阶段的,先把基础学习好,编程语言是必须具备的,可以学习java,C++,C#,erlang任意一种要熟练掌握,还是以C++为例,游戏编程中经常会使用一些宏定义或者模版定义,开发者要知道宏定义的含义以及模版定义的含义。服务器开发中经常会使用STL模版中的对象,比如Map,Dictionary,List,Vector等等。网上有很多学习资料,另外在这里还是要谈到数据结构,不论在客户端开发还是在服务器端开发,数据结构都会用到,比如哈希表,二叉树,队列,堆栈等等,以上提到的是关于语言方面必须具备的。

语言基础掌握牢固的,可以直接略过这一阶段的学习,直接学习第二阶段,关于网络通信协议,比如我们TCP/IP协议一共分七层,各个层的作用是什么?服务器传输有几种常用的协议分别是TCP协议,UDP协议,还有Web使用的>

应用层:TFTP,>

传输层:TCP,UDP

网络层:IP,ICMP,OSPF,EIGRP,IGMP

数据链路层:SLIP,CSLIP,PPP,MTU

通过上面列举的点,我们知道了各个层都有哪些通信协议,当然各个层不是孤立存在的,它们之间是有关系的,在计算件原理中也有这方面的介绍,这里借用网上的图给读者展示如下:

应用层主要是我们自己程序处理的,它可以通过传输层和网络层进行消息的传输,将上图再进一步细分如下所示:

通过上图可以很清晰的看到TCP/IP协议组的组成,具体大家可以查看大学课程《计算机原理》。这些基础的通信协议掌握了后,接下来就要掌握Socket套接字了。socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的 *** 作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

Socket套接字是通信的最基本方式,在游戏中的服务器和客户端之间通信,以游戏登录为例,客户端先创建Socket,然后把玩家的用户和密码以及登录服务器的IP地址,端口号这些数据写入到Socket中传送到服务器端,服务器会做监听,接收到消息后,打开读取Socket信息进行处理比如验证信息的正确性,然后服务器创建Socket,把传送给客户端的消息写入到Socket,发送给客户端,客户端也会做监听 *** 作,客户端接收到消息后,客户端打开Socket,读取消息。客户端和服务器之间的通信方式如下所示:

在TCP/IP协议中有三次握手,通过三次握手可以建立一个可靠连接,效果如下图所示:

三次握手在服务器端程序员面试中,经常被提到,掌握了TCP/IP协议后,接下来进入实兵演练阶段,也看看自己对网络这块掌握程度。以Unity为例,可以学习TNet超轻量级的网络传输,因为它没有数据库,但是可以很好的验证学习的TCP协议以及Socket套接字,自己可以在此基础上再尝试做一些消息传递,最后要学习一下服务器存储所需要的数据库MySql。

学习数据库的安装,数据库 *** 作比如新建表,插入数据,删除数据,读去数据等,掌握数据库后,接下来就需要通过游戏服务器编程对它进行 *** 作了,建议先学习网上的PhontonServer,它是使用C#编写的,方便开发者学习,另外它提供了Unity实现的Demo,开发者可以调试连接,从而熟悉Mysql。

以上这些知识也是作为服务器开发者必须掌握的,掌握了这些技术后,继续提升的最好方法是去公司跟着项目走,在后面章节还会给读者介绍关于如何架设真正的游戏服务器以及知名IT游戏公司的服务器架构设计以及服务器负载均衡的设计,最终会介绍如何搭建全球同服服务器。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13264269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-28
下一篇 2023-06-28

发表评论

登录后才能评论

评论列表(0条)

保存