如何设计属于本身的游戏服务器(一)

最近一直在作开源服务器的优化以及新功能的添加,不止一次有人在群里问我,你的这个PSS作游戏服务器怎么样?
确实,我也考虑过这个问题。不管本身的水平如何,好歹也在网络游戏服务器开发上走过8个年头了,从当年台湾第一的游戏橘子,到后来的自主创新的硅谷,到后来的搜狐,后来从搜狐出来又进入创业公司。
一步步的走来,很想写的什么。
最痛彻心扉的失败的游戏经历过,最激情的成功的游戏,海量玩家涌入的通宵也疯狂过。
看到不少作技术的朋友,对游戏仍是趋之如骛,尤为是初学者,我想说,在大家开始大家的游戏服务器设计之旅以前,好好的让本身平静一下。
若是你不是为了争分夺秒或者急于成就本身的游戏,但愿你能够静下心来读一下如下的文字。
在我这里,我会慢慢结合个人PSS来解释如何作一个,让你本身骄傲的游戏服务器。
前提是,你须要先静下心来。把如下的文字,转化为本身的故事。
这里,我并不会列举太多的代码。
由于我认为最不重要的,就是代码。
我会讲一系列的故事,但愿这些故事,让你不断的从中吸取到属于你的东西。
诚然,当年的我,误打误撞的进入了网络游戏行业,说来也很奇怪,2002年的我毅然决然(或者说傻里傻气)从个人第一家任职的公司辞职,当时已经作到了公司的技术一把手。
可是不知道为何,内心一直以为这不是个人归宿,也没想这么多,就出来了,经历了三个月的煎熬,才知道本身的自大和无知。觉得本身知识基类已经能够了,结果发如今别的项目上什么都无用。
因而明白了一个道理,任什么时候候,只要你勇于从零开始,永远会有所得到。
第一次参加游戏服务器的时候,并不是我想的那么简单,虽然我已经作好了艰苦奋斗的准备,可是实际的考验仍是大大的超出了我想象。
我和当时不少初学者同样,在网上大量搜索,大量买相关书籍,也常常问一些如今看来无所谓的问题。
后来慢慢的开发中发现,其实游戏服务器设计有几大误区。
你最不该该关心什么?
(1)如今网上不少的文章,尤为是关于游戏服务器的,都把网络IO讲的神乎其神,彷佛socket效率就是服务器的一切,若是你读到这些文章,大能够建议你不用读下去了。
由于,网络IO是最成熟的,也就是说,代码换来换去就那么几行。若是做者用超过50%的笔墨再讲这些,只能说明做者自己对游戏服务器设计开发能力有限或者根本不想告诉你游戏服务器的设计核心在哪里。
实在是不必浓妆艳抹,不管IOCP,epoll,仍是kqueue。这不是你关心的事情,只要知道到时候用到的时候到哪里找例子就好了。
(2)数据库,这部分也不须要太多的介绍,由于数据库自己只是一个存储介质,用文件,用NoSQL,用DBMS,甚至用内存,这些都只是数据存于长久介质的一种方法。
数据库技术同样成熟,样例代码满天飞,没必要要为此多花费精力。
(3)脚本语言,好比如今不少文章吹嘘Lua以及phthon等一些脚本在游戏服务开发中的优点,不能否认,这在某些状况下是很是优雅的。可是并非没有这些,就作不了游戏了。
C++或者Java直接写的代码同样有优秀的游戏。
(4)网上相传的各类开源的游戏服务器,以及那些所谓“偷窃”出来的知名游戏服务器源代码。
这些代码实际彻底无心义,除了多占据你的机器硬盘,没什么别的做用。由于对于初学者,在没有文档的状况下,去读动辄及万行的代码,实在是一件不靠谱的事情。
你应该关心什么?
(1)你的游戏服务器要达到什么功能?
每一个策划给你的需求都不一样,你要知道,你的游戏特色是什么?理解在这个特色上,咱们的卖点是什么?那么,为了这个卖点,咱们怎么保护核心玩家在必定程度的核心体验。
(2)服务器的初步布局如何?
你能够采用什么样的游戏服务器布局,单机,一组?仍是集群?
在这个布局下,划分每一个功能在每台服务器的应该完成的任务。这里先不须要去想代码。
你可以用你的铅笔和纸张画出主要数据流动方向以及服务器主要功能分布便可。
(3)你手里有什么资源能够支持你的架构
成本很是重要,要知道商业活动,都是要最小化成本的,不可能为你的一个游戏搞个几十台服务器才支持2000人。
因此了解本身有什么很是重要。
(4)你的同伴有什么擅长的技能和技术方向?
这一点相当重要,你的下属或者同伴,若是你让他们作本身不擅长的事情,确定会增长成本而得不偿失。
(5)你的时间预估如何计算?
若是你预计某一项功能大概须要5天/人,那么保守的估计你最好乘以一个1.5的系数,还有懂得,什么时间作什么事很是重要。给本身设置阶段里程碑。
这里只考虑功能主模块的时间。
若是你对某一项技术不熟而须要技术预研的话,这段时间不计算再开发周期内。
设计一个好的游戏服务器,须要的不止是技术,最重要的是一个好的规划。有好的规划,就是成功的通常。
代码只是实现体,实际重要程度并不是主要。
若是在你的开始设计上出现了问题,那么,后期游戏服务器就会花费巨大的成本修改前期的错误。
好,下一讲,我会讲如何利用PSS去设计你的游戏服务器。
有一个概念必须先入,不要陷入代码的海洋,你应该能抽出身来,若是你不能用简单的语句描述清楚你的须要,就不要动手去实现你的代码。html

相关文章
相关标签/搜索