网络游戏服务器编程端用什么架构好

trackbacks-0
浅谈网络游戏的设计——服务器端编程(2)
  非常感谢大家对上一篇文章的支持,在大家的支持下,我决定推出浅谈网络游戏开发(2)这篇文章。  
首先,再次强调一下,网络游戏开发极为困难,技术含量相当的高,其编程知识涉及网络编程,操作系统进程、线程编程,图形图像编程(DirectX
/ OpenGL),WIN32
API编程(Windows下开发),以及各种算法和数据结构,同时对设计人员策划能力要求也颇高,如不能构思出一个吸引玩家的游戏世界,也必将导致开发失败。  
目前,国内的网络游戏市场被韩国游戏霸占,情形让人心寒。在国内网络游戏编程资源奇缺的环境下,我希望把自己的一些经验和想法说出来,供大家参考,起一个抛砖引玉的作用。  
对于我在浅(1)中提出的架构,如果大家有更好的修改建议,欢迎大家共同探讨修改,把我国的网络游戏开发水品提高到世界级标准。最起码,也要在国内市场是立足!  
好了,费话就不多说了,正文开始。  
在浅(1)中,关于游戏世界管理模块和通讯模块我没有详细说明,本篇中将补充介绍。&浅谈网络游戏的设计——服务器端编程(1)
  本游戏服务器端操作系统采用UNIX,因为UNIX是标准的服务器操作系统,可保证网络游戏的稳定性。因此,以下所有的编程都将针对UNIX进行。
  服务器端的整体构架如下:通讯模块,消息传递模块,游戏规则模块,线程管理模块,游戏世界管理模块。  
通讯模块:
  通讯模块主要实现与客户端的通讯功能,实际上,通讯模块就是对套结字Socket的封装。Socket是UNIX下的网络通讯基础,对于一个Socket我们可以对其进行读写操作,读入的数据来自客户端,写入的数据可供客户端读取。
  Socket主 要有阻塞套接字和无阻塞套接字两种,对于无阻塞套结字,每次读写后,不管读写的字节数是否达到要求,都立即返回;而对于阻塞套结字,若读写字节数不够,函 数将被阻塞,直到所有待处理的数据都处理完毕才返回。可以看出,若采用无阻塞套结字,则将使网络传输变得很不稳定,在网络环境不好时很难控制传输。因此, 对于我们的系统,将采用阻塞模式。   我们下一个面临的问题是怎么知道何时读入,如果在不合适的时候从阻塞套接字读入数据,那线程很可能将被阻塞,这里采用了select——多路复用技术,原理是对我们的socket进行监视,如果socket上有读事件发生,将调用消息模块发送消息给socket的携带对象,对其进行读写。
以下是对Socket的简单封装:
class SSocket
&&& fd_set *SockS&&&&&&&&&&&&&&& && &&&&&&& //fd_set,也就是我们的select监听集合
&&& char IsListenS&&&&&&&&&&&&&&&&&
&& & //是否是监听套接字
&&& int ServerP&&&&&&&&&&&&&&&&&&
&&&&&&&& //监听套接字的监听端口号
&&& struct sockaddr_&&&&&&&&&&&&&&&&&& //地址信息
&&& SSocket();
&&& ~SSocket();
&&& int S&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //socket
&&& int CreateListenSocket(fd_set *sset, int
Port, char* addr); //初始//化一个监听socket
&&& int AcceptSocket(int listen_fd, fd_set
*sset);&&& &&&&&&&&&
//初始化一个非监听socket
CloseSocket();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//关闭
&&& int SendBuf(void *buf, int size);&&&&&&& & //发送数据
&&& int RecvBuf(void *buf, int size);&&&&&&&&& //接收数据
SetSocketFd();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //将socket加入到监听集合中
ClrSocketFd();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //将socket从监听集合中清除
通过对socket的封装,我们完成了通讯模块的基本任务。下一步要做的是传输网络上的消息,此时需要对SSocket继续封装,首先定义一个消息结构体,然后就是读写消息,消息结构根据各个游戏不同,在此就不再深入探讨了。    
线程管理模块:
由于我们用了阻塞模式,这就意味着必须要为各个socket创建单独的线程,否则很可能会引起服务器端停止工作。因此我们需要封装线程,封装内容主要包括:线程函数地址,线程开始时间,线程上次阻塞时间,线程最大阻塞时间,线程start方法,线程stop方法。线程stop方法可以通过发送信号给线程来达到杀死线程的目的。
线程类封装完成后,我们就可以开始编写管理模块代码了。管理模块其实也是一个线程,其第一功能就是监视各个线程是否阻塞超时,通过察看线程上次阻塞时间和最大阻塞时间来完成。一旦发现当前时间超过线程最大阻塞时间加上线程上次阻塞时间,既可断定线程阻塞超时,此时就需要kill该线程。另外,其他一些根线程有关的管理方法都有此模块负责。
消息传递模块:
对象、模块之间怎样传递消息,这也是服务器端设计的重点。举一个简化的例子说明如下:若某一玩家对另一玩家发了一条信息,先通过通讯模块接收数据,然后用消息传递模块通知另一玩家,再由另一玩家的线程调用通讯模块把消息发回客户端,这就是消息传递模块的作用。
要怎样封装消息模块呢?第一步就是做一个MessageBox类,它是一个堆栈,用来装消息,主要由pop和push方法,当然这里不能忘了必须实现一个存储消息数据结构。第二步封装就是HandleMessage类,这就是我们的消息模块的主要实现。其中有一个WaitMessage方法,调用此方法后,线程将被阻塞,直到有消息到达。在此可通过无名信号量来实现,也就是UNIX下的sem,它可以增加或减少信号量来实现互斥。然而,有人一定会问,为什么我们要有WaitMesssage呢,这不是将造成线程阻塞吗?其实,服务器端是一个被动驱动的模型,就像没有踩油门汽车就不会走一样,如果没有消息来驱动,服务器端就不会运行下去。
实现以上封装后,在两个对象之间发消息就变得很简单,我们直接用SendMessage方法就可以,SendMessage的实现也很简单,就是调用MessageBox里Push方法向里边放消息,之后把sem加一,这样接受这就可以收到消息了。
剩下的两个模块,都是与游戏相关的,事实上他们是两个更为复杂的模块,根据要编写的游戏的不同,这两个模块实现也不同。但是,他们究竟是做什么的,下面通过一个例子来说明:
假设我们现在开发的是一个RPG游 戏,我们的玩家在屏幕上让游戏人物向前走了一步,此时发送移动请求给服务器端,服务器端的通讯模块收到后,便通知游戏世界管理模块,游戏世界管理模块调用 游戏规则模块,判断玩家请求是否符合规则(是否合法),若可以移动,再由游戏管理模块将其坐标改变,最后再通知其相关玩家。也就是说,规则模块实际上是专 门处理游戏业务逻辑的,管理模块实际上是专门处理游戏对象的。
  网络游戏的开发入门是挺难的,实际上,本文只能起到抛砖引玉的作用,仅告诉大家一个入门的方法而已,剩下的,还有那烦人的一行一行实现代码。
非常希望对网络游戏设计感兴趣的与我交流 &
游戏世界管理模块: &
本模块专门管理游戏世界里的数据模型,也就意味着,所有游戏里的对象基本上都由他来管理所以,此模块极为复杂,甚至在大型系统里,也可以把它再划分成很多子模块来协同工作。  
这个模块该怎么封装呢?首先,自然是需要一个消息处理类,因为游戏世界管理模块同样是需要消息驱动的,此模块每收到一个消息后,就察看消息类型,看是转发 类型还是管理类型的消息,如果是转发类型,就将消息转发给消息目的地模块,如果是管理类型的消息,就察看管理的目标以及管理的方法,然后执行管理方法。因 此,我们还需要的就是一个辨别消息的方法,以及一些数据及操作数据的方法。
游戏规则模块
本模块按照游戏策划者制定的规则来进行业务逻辑处理。同样,首先需要封装的也是消息处理类。然后就是辨别消息,按照消息提示进行规则处理,随后就是将处理结果封装成消息,发给管理模块,基本上与游戏世界管理模块模式相同。  
以上谈了两个模块的封装思想,但是,实际上,这两个模块是不可能像上面写得那样运用的,很多朋友也谈到这个构架并不适合作大型网络游戏,那么,真正的大型网络究竟是怎样的架构呢?
就像我们的OSI模型和TCP/IP模 型一样,只有后者能真正运用在工业标准中,前者固然是好的,但是他封装得太细了,太过于复杂了,不适合现在的情况使用。在真正的网络游戏中,以上的两个模 块是合在一起的!我把它们统称为游戏世界模块。请大家注意看下面这个模型(发了几次图片都失败了,所以用文本弄了一个,请谅解)
从上图可以看出,实际上,游戏规则模块和游戏管理模块被合并在一起了,也就是说,这两个模块之间不需要消息传递,他们只是简单的函数调用关系。
规则判定要做的主要工作就是辨别消息,把我们的消息翻译成对对象的处理方式。
我们的游戏世界是有很多对象构成的,一个对象同时也可以携带多个对象,对象也可以不断增加、扩充。每当我们添加或扩充一个新对象,我们可以把它include进来,再在规则模块里加入对他的方法调用。  
这里要说明的一点就是,其实,所有的对象都是无差别的。大家都是数据模型,不管你是一个人,还是一棵树,或者一种道具,甚至魔法,他们都只是一些属性而 已。这些属性,统统都存在我们的配置文件中,甚至可以存在数据库中。到时候创建对象的时候把属性带入就可以了。当然,关于游戏世界对象的想法,有很多好的 提议,我甚至想过可以不要对象的方法,只要它的属性,反正我们只是改变对象的属性而已,而把怎么改变这些属性按一定的格式写在文件或数据库中,比如inc
XX 0.3表示XX属性+30%之类的,这样就可以很方便的改变规则和对象。  
下面,我针对大家的问题提出一些看法:
首先,可能大家会有疑问,这样的系统架构,似乎很慢啊,怎么维持那么多玩家在线呢?如果有那么多对象要处理的话,怎么可能保持速度?
1.&服务器不是大家用的PC机,只要你能用一下服务器和PC机,你就知道他们的区别了,用unix开发也是为了确保游戏能在小型机之类的服务器上运行。
2.& 很多人认为网络游戏应该支持数十万人的玩家同时在线,比如说传奇,联众,他们确实是30-40万人在线哪!实际上,大家看仔细了,每台服务器到底是多少人,有的服务器才6XX人就说满了,这就是网络游戏的真实情况。
3.&UDP和TCP的争议问题,有的朋友可能认为应该用udp,就因为它快,其实这个问题没什么好争的,我们的ftp为什么不用udp呢?如果用udp,我们就得自己封装一套tcp的确认机制出来,
4.& 对于同步问题,一般来说,客户端确实就是有什么发什么,但是要控制发送的间隔时间,这也是为了防止变速齿轮和解决同步问题。比如客户端一旦发出移动命令 后,客户端自己首先判断是否在间隔时间内,再判断是否能移动,能移动了才发消息给服务器端,同时开始移动,如果服务器端发回消息移动成功,那就成功,否 则,屏幕上的人物就会被拉回来。 &
连接池技术
很多朋友都比较关心的一个问题就是:为每个连接分配一个线程,是否太浪费了!实际上,apache大家都知道吧,他为每个连接分配的可是一个进程呢!线程比进程开销要小得多,如果用户数不是很多的话,那是没有问题的。但用户数不是很多要怎么理解呢:linux6.2下测试,每个进程最多能创建1000个线程左右(实际应该是1024),win2000
advance server sp3下测试,每个进程最多能创建2000个线程左右(实际应该是2048),这下大家明白了吧。  
不过,再怎么说连接线程只是用在网络通讯上,要支持更多的用户的话,太不划算,因此在这里就介绍一下连接池技术。  
所谓连接池,实际上是我们事先创建一些线程,每次通讯模块要发消息时,就找一个空闲的线程,然后把要发的消息给它,让它去发送。这样处理的话,创建很少的线程就够用了。这有点类似于apache的进程预处理,又更像jdbc的数据库连接池。这就要求封装一个连接池控制类。  
总之,如果要用连接池技术的话,就会使通讯模块复杂化,但是它能大量节约系统资源,建议大家设计的时候可以让用户在配置时选择是否使用连接池技术,这样根据不同的系统,就可以有不同的配置方案。
这次探讨就到这里,不知这次又要引出多少反对意见,不过,我真的很希望看到大家的意见,因为任何软件开发本身就是仁者见仁,智者见智的问题,在这里,没有绝对的标准,更没有绝对的真理,我们要的是真正能实现的方法,希望大家在给出意见的同时,最好能给出好的建议。
阅读(...) 评论()大型网络棋牌游戏服务器端设计与实现--《山东大学》2011年硕士论文
大型网络棋牌游戏服务器端设计与实现
【摘要】:棋牌游戏一般是将棋类游戏与牌类游戏并称而得。由于其玩法众多,具有非常坚实的群众基础。因而其与互联网一旦联手,产生出了让世人震惊的网络现象之一:一夜之间红遍大江南北。
从1998年6月联众游戏世界正式开始服务算起,中国的网络棋牌游戏已经走过了十三年的时间。今天在如GOOGLE这样的网络搜索引擎中,用“网络棋牌游戏”进行搜索,可以得到483,000条与其有关的搜索结果,大多为网络棋牌游戏的开发与运营。这已经充分证明其在中国具有的市场大小。
但由于技术保守、商业竞争、游戏开发等方面的原因,许多棋牌游戏的系统构架等并不为人所知,造成棋牌开发严重浪费人力、物力和财力。许多公司在经验不足的基础上设计开发了许多棋牌游戏系统。但其设计与开发出来的系统也没有经过大量用户的验证,系统稳定性、扩展性等无法得到保证。
为此,我们根据网络棋牌游戏平台整体系统的设计,研究设计出大型棋牌游戏平台的系统架构。
平台包括服务器端与客户端及管理部分。整个系统采用多服务器分布式系统架构,能有效地实现负载平衡和服务器扩展(即增加、删除游戏服务器和登录服务器)。服务端采用目前性能最优的完成端口(IOCP)的设计方案,支持百万级别的在线用户。
整个系统由服务器(包括软、硬件环境),和客户端(包括软,硬件环境)组成。服务器由中心服务器、登录服务器、游戏服务器、WEB服务器和数据库服务器和数据库服务中间件组成,负责整个网络数据传输和通信服务。客户端由浏览器,大厅和各个游戏程序组成。服务器的各个部分可以有多个管理端实现服务器和用户的后台管理。
文章将所有服务器端的组件设计思想、主要代码结构等进行详细说明与论述。
本文创新之处在于第一次将实际的大型网络棋牌游戏的服务器端的架构进行论述与说明,并将主要组件的代码进行详细展述。同时本文也将一个可实际运营的系统的主要组成及其组件进行详细说明。
【关键词】:
【学位授予单位】:山东大学【学位级别】:硕士【学位授予年份】:2011【分类号】:TP393.09【目录】:
摘要8-10ABSTRACT10-12第一章 导言12-22 第一节. 网络游戏发展现状12-15 第二节. 棋牌游戏及其网络化15-17 第三节. 棋牌游戏服务器端设计研究综述17-22第二章 WINDOWS SOCKETS I/O模型22-33 第一节. WINOWS SOCKETS I/O模型22-28
2.1.1 阻塞(blocking)模型22-26
2.1.1.1 选择(se1eet)模型23
2.1.1.2 WSAAsyncSelect模型23-25
2.1.1.3 WSAEventSelect模型25-26
2.1.2 重叠(overlapped)模型26-28 第二节. IOCP模型28-33
2.2.1 IOCP原理28-29
2.2.2 IOCP基本架构29-33第三章 棋牌游戏平台服务端设计33-42 第一节. 系统整体架构33-38
3.1.1 物理架构说明34
3.1.2 系统的整体功能划分34-36
3.1.3 系统结构36-37
3.1.4 服务器架构示意图37-38 第二节. 平台组件设计38-42第四章 平台服务端设计与实现42-73 第一节. 服务器端类库设计与实现42-56
4.1.1 服务器端类库42-43
4.1.2 类库实现43-56 第二节. 中心服务器(CenterServer)设计与实现56-61
4.2.1 设计思想56
4.2.2 代码实现与说明56-61 第三节. 主服务器(MainServer)设计与实现61-67
4.3.1 设计思想62
4.3.2 代码示例与说明62-67 第四节. 本地服务器(LocalServer)设计与实现67-73
4.4.1 设计思想67-68
4.4.2 代码示例与说明68-73第五章 总结与展望73-74致谢74-75攻读学位期间发表的学术论文目录75-76参考文献76-78学位论文评阅及答辩情况表78
欢迎:、、)
支持CAJ、PDF文件格式
【引证文献】
中国硕士学位论文全文数据库
孙博;[D];北京邮电大学;2013年
【参考文献】
中国期刊全文数据库
,李春贵;[J];广西工学院学报;2005年S3期
程远忠,杜平安;[J];计算机工程;2001年01期
张静华,张玉明;[J];计算机与现代化;2004年09期
盛利,刘旭;[J];现代计算机(专业版);2001年07期
中国硕士学位论文全文数据库
马明;[D];浙江大学;2002年
池莹;[D];西南交通大学;2006年
李改;[D];国防科学技术大学;2005年
蒋臻甄;[D];华东师范大学;2006年
吴兆定;[D];上海交通大学;2007年
张越;[D];华北电力大学(北京);2007年
陈慧珍;[D];中南大学;2007年
【共引文献】
中国期刊全文数据库
王佩贤;马真安;孙艳崇;;[J];测绘科学;2008年06期
肖小玲;张筱祥;;[J];长江大学学报(自然科学版)理工卷;2010年03期
胡健生;夏靖波;钱渊;;[J];电光与控制;2009年01期
宋方儒;王中胜;张传江;朱镜灵;;[J];电力建设;2012年03期
范嵩;路莹;马立权;;[J];大连轻工业学院学报;2006年04期
范嵩;李明霞;于智;路莹;;[J];大连工业大学学报;2008年04期
孙桂斌;;[J];电脑编程技巧与维护;2009年20期
江洪;;[J];电脑编程技巧与维护;2010年15期
杨忠仪;章正辉;;[J];电脑知识与技术;2006年17期
蒋华;邓军;;[J];电脑知识与技术;2008年29期
中国重要会议论文全文数据库
付强;李双田;兰书梅;;[A];全国第二届嵌入式技术联合学术会议论文集[C];2007年
刘建强;袁怡;杨喜昆;谢静敏;王建民;叶晓俊;;[A];第二十四届中国数据库学术会议论文集(研究报告篇)[C];2007年
丁亮;郑梁;秦会斌;沈煜;秦惠民;;[A];2012(杭州)中国长三角照明科技论坛论文集[C];2012年
中国博士学位论文全文数据库
赵晓平;[D];南京航空航天大学;2009年
孙兴;[D];云南大学;2010年
中国硕士学位论文全文数据库
陈强;[D];郑州大学;2010年
高春旭;[D];哈尔滨工程大学;2010年
任春云;[D];中国海洋大学;2010年
许诗;[D];华南理工大学;2010年
付丽霞;[D];昆明理工大学;2008年
张勇;[D];电子科技大学;2010年
杨晓波;[D];电子科技大学;2011年
刘茂雄;[D];昆明理工大学;2009年
刘月;[D];西安电子科技大学;2009年
李芳;[D];西安电子科技大学;2010年
【同被引文献】
中国期刊全文数据库
李伦;李东;田志宏;;[J];智能计算机与应用;2011年03期
蒋序平,陈鸣,赵金;[J];电信科学;2003年08期
陈正虎;兰巨龙;黄万伟;李玉峰;;[J];电子与信息学报;2011年09期
井艳芳,孟晓景;[J];安徽理工大学学报(自然科学版);2004年03期
蔡文郁;金心宇;张昱;;[J];江南大学学报;2006年04期
唐谦,张大方;[J];计算机工程与应用;2005年17期
姚晓宇,赵晨;[J];计算机工程;2003年08期
刘胤;杨世平;;[J];计算机工程;2008年06期
孙敏;古晓明;张志丽;;[J];计算机工程;2009年11期
梁萍;帅建梅;谭小彬;周宇;;[J];计算机工程;2011年02期
中国博士学位论文全文数据库
刘鹏;[D];北京邮电大学;2010年
中国硕士学位论文全文数据库
李建辉;[D];湖南大学;2007年
张立明;[D];北京邮电大学;2008年
陈岚;[D];武汉科技大学;2008年
丁健;[D];武汉理工大学;2009年
【二级参考文献】
中国期刊全文数据库
黄文博;燕杨;;[J];长春师范学院学报;2006年08期
靳辉,江务学,郑羽,孟菊;[J];电脑开发与应用;2005年02期
胡文生,李祥;[J];电脑与信息技术;2005年02期
徐拥军;[J];信息技术与标准化;2005年03期
王丹,魏红;[J];沈阳航空工业学院学报;2003年02期
周珂,李子丰;[J];航空计算技术;2004年02期
郑庆良,张翔,杨莹;[J];杭州电子工业学院学报;2004年04期
魏华;;[J];程序员;2005年06期
赵青;;[J];程序员;2005年06期
尚海忠;;[J];程序员;2005年06期
中国硕士学位论文全文数据库
刘志英;[D];北京工业大学;2001年
郭洪新;[D];天津工业大学;2004年
秦可;[D];浙江大学;2005年
刘业辉;[D];武汉理工大学;2005年
赵海;[D];四川大学;2005年
【相似文献】
中国期刊全文数据库
宋长青;孙艳云;白福宇;;[J];气象与环境学报;2005年04期
小田;;[J];电脑爱好者;2005年23期
张金淦;;[J];软件世界;2007年13期
翟惊卿;[J];微电脑世界;2004年16期
飞浪;;[J];中国电子商情;2001年27期
狐瞳;;[J];网友世界;2010年24期
文硕华;;[J];每周电脑报;2002年27期
李波,侯华,程军,韩燮;[J];电脑开发与应用;2005年05期
一心;微风;兰洋;;[J];电脑迷;2003年08期
孔令华,赵隆军;[J];胜利油田职工大学学报;2005年01期
中国重要会议论文全文数据库
许力琴;陈斌;;[A];学报编辑论丛(第十五集)[C];2007年
贾济红;钟金;王红梅;;[A];江苏省测绘学会2007年学术年会论文集[C];2008年
杨宇;;[A];高效 清洁 安全 电力发展与和谐社会建设——吉林省电机工程学会2008年学术年会论文集[C];2008年
韦振锦;方华;成春艳;;[A];广西计算机学会2007年年会论文集[C];2007年
宇振全;李松辉;张天亮;;[A];第六届全国计算机应用联合学术会议论文集[C];2002年
李洋;刘真;;[A];全国第十五届计算机科学与技术应用学术会议论文集[C];2003年
邓春蕊;刘文树;马卫山;高远;;[A];2009年河北省轧钢技术与学术年会论文集(下)[C];2009年
孙利民;汪家宇;李文稳;邓奕伟;张宁;;[A];广西计算机学会2004年学术年会论文集[C];2004年
孙厚庆;孙奕奇;郝晓艳;;[A];山东省计算机学会2005年信息技术与信息化研讨会论文集(二)[C];2005年
于爱荣;王俊;曹雷;;[A];'2008系统仿真技术及其应用学术会议论文集[C];2008年
中国重要报纸全文数据库
;[N];中国计算机报;2008年
朱毅;[N];政府采购信息报;2006年
美国《Network World》专栏作家James K[N];网络世界;2003年
刘杰;[N];网络世界;2006年
《计算机世界》评测实验室 秦钢;[N];计算机世界;2005年
韩国良;[N];中国电脑教育报;2003年
陈曦;[N];中国计算机报;2008年
浙江省上虞中学 何立峰;[N];中国电脑教育报;2004年
星之海洋;[N];电脑报;2004年
;[N];国际商报;2001年
中国博士学位论文全文数据库
刘雪梅;[D];哈尔滨工程大学;2010年
陈庆涛;[D];成都理工大学;2008年
陈强;[D];华东师范大学;2004年
齐芳;[D];中南大学;2007年
詹骞;[D];中国地质大学(北京);2008年
夏楠;[D];合肥工业大学;2007年
李学东;[D];中国地质大学(北京);2009年
张谷丰;[D];南京农业大学;2009年
李卓;[D];国防科学技术大学;2006年
臧铖;[D];浙江大学;2008年
中国硕士学位论文全文数据库
罗永刚;[D];山东大学;2011年
宋乔;[D];大连海事大学;2013年
马鹤楼;[D];华北电力大学(北京);2011年
陈思洁;[D];北京邮电大学;2012年
李蔚;[D];北京邮电大学;2011年
薛鹏;[D];北京交通大学;2012年
颜志伟;[D];北京邮电大学;2010年
蔡文健;[D];北京邮电大学;2010年
赖勇浩;[D];华南理工大学;2011年
王哲;[D];北京邮电大学;2012年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
地址:北京清华大学 84-48信箱 知识超市公司
出版物经营许可证 新出发京批字第直0595号
同方知网数字出版技术股份有限公司
订购热线:400-819-82499
在线咨询:
传真:010-
京公网安备74号学术市场校聘单位资讯
您当前的位置:&>&&>&
[b]职位名称:
JAVA游戏服务器主程[/b]职位概述:
1. 负责服务器端整体架构和设计,保障服务的稳定性2. 负责对服务器端程序员分配工作,审核代码,完成相关的技术文档编写3. 负责制定服务端开发工作计划,进行风险控制4. 负责对策划提出的设计需求的技术可行性进行评估和更正5. 负责研究及优化游戏和架构的方法6. 负责对游戏上线运营期间产生的各种故障和问题及时解决任职条件:
1、 本科以上学历,5年以上java游戏服务器端开发经验,精通java语言,有良好的编程习惯2、 熟悉Linux 系统、shell脚本,熟悉mysql数据库、sql语言,能独立设计数据库结构,掌握备份、优化、合并方案3、 熟悉网络连接相关知识,熟练掌握socket技术,熟悉netty/mina框架中的至少一种,对HTTP协议有一定的理解4、 熟悉多线程技术,熟练掌握ThreadPoolExecutor等和线程池相关的知识5、 熟悉一门脚本语言,javascript/lua/perl/python6、 对算法和数据结构以及基本概念有很好的掌握和理解,熟悉常用设计模式7、 有过完整的游戏项目开发、运营经验8、 有大用户量线上运营手游产品的服务器端开发经验者优先[b]职位名称:手游客户端开发工程师C++/lua (架构师级别)[/b]岗位职责:负责基于android/ios手机终端平台的手机网络游戏客户端的开发协助游戏设计,美术设计人员, 提供程序设计方案和美术素材制作规格.负责游戏客户端的架构设计及逻辑部分,在ios和android平台上进行跨越移植职位要求: 熟悉C/C++,良好的数学基础和数据结构算法基础。熟悉Lua脚本语言,具有良好的程序设计能力以及编程习惯。有cocos2d-X使用经验(独自或参与开发过游戏)的优先考虑。有ios或android开发经验(独自或参与开发ios或android上的游戏)的优先考虑。具备出色的程序优化、调试能力, 良好的编程风格和文档习惯。熟练掌握开发工具及版本控制工具。优秀的分析和解决技术问题的能力 高度责任感和团队合作精神,工作严谨,执行力强, 良好的口头及书面表达能力。热衷移动互联网,热爱手机网络游戏。 [b]职位名称:手游Java服务器开发工程师[/b] 职位描述: 1. 负责游戏服务器端系统设计和开发;2. 负责服务器性能优化和架构改进;3. 负责分析处理产品上线后运营数据;4. 开发服务器监控报警工具和部署工具。职位要求: 1. 计算机、数学等理工相关专业本科及以上学历;2. 热爱游戏行业,对移动平台开发富有激情;3. 三年以上Java开发经验;4. 具有数据库的开发经验,熟悉mysql;5. 熟悉Linux平台和常用的Web服务器;6. 具有大型网络游戏或网站的开发经验;7. 良好的表达能力和抗压能力。[b]工作地点北京,有意者请发送CV至以下联系方式,如果合适我们会很快与您联络。Email:QQ: [/b]
北京校园招聘信息
查看更多信息
对当前信息的评论 (条)
150?fdh:150)" >
Copyright & 2008- All rights reserved.
“孔融让梨 互助共享”

我要回帖

更多关于 手机游戏服务器架构 的文章

 

随机推荐