|
发表于 2007-6-29 20:19:00
|
显示全部楼层
Re:盛大网络寻找国内优秀团队进行合作
一,关于2DMMORPG服务器架构:
1,MMORPG是什么?就是多人在线角色扮演,说得土一点,就是一群玩家扮演一群怪物,一群特殊的怪物.特殊之处在于这群怪物有输入输出功能.
2,本地RPG和MMORPG有什呢区别?区别只要是;一人和多人,本地输入输出和远程本地输入输出.
3,能把MMORPG当作本地RPG来编写吗?既然一群玩家就是一群怪物,那么多一个怪物和少一个又有何区别.只要解决输入输出问题就行了.
4,那么如何解决输入输出问题?你叫他们暂停一下就可以了:
1)检索所有玩家的指令
2)暂停检索
3)运算
4)暂停运算
5)输出
6)暂停输出
7)回到第一步,周而复始
4,既然可以把MMORPG当作本地RPG来写,那么还需要多线程吗?
1) 我们来看多线程和单线程的实则:多线程就是同一时间内,A作A的,B作B的,单线程就是A作定时间后轮到B作,B作定时间后又轮到A作,周而复始
2)多线程真的是同一时间内,A作A的,B作B的吗?CPU只有一个,线程有千个万个,怎么可能是同时呢,只好用分时了:线程A作一定时间后轮到线程B,周而复始
3)由此看单线程和多线程都不存在同时,都是分时的
5,既然单线程和多线程都不存在同时,都是分时的,那么现在的MMORPG都采用多线程,他们都是傻瓜吗?
因为是MMO存在网洛等待,就是说A用了一下CPU后,A必须等一下再用,这时CPU空闲了,既然CPU空闲了,何不让B用一下.
这下你明了吧,MMORPG都采用多线程,不是傻瓜了吧?
6,但是本地RPG呢,本地RPG不存在网洛等待,再用多线程那他就是傻瓜了.
7,MMORPG真的不用多线程吗?别忘了,MMORPG有远程输入输出,还有网洛等待,只不过是只有输入输出才需用多线程.逻辑运算就不用多线程了.
8,这下该到了输入输出吧?
1)先看输入,既然把MMORPG当作本地RPG来写,那么所有的输入就鼠标键盘的信息了,这个问题在上面反外挂中已作论述,这里不重复了
2)再看输出,都有什么输出呢,主要有:图象,声音,文字和数据,啊啊,那么多,成千上万个玩家,光图象就让你受不了,你这个傻瓜,干快把程序推倒重建吧.
3)啊啊,我说,老板别急,好戏还在后头呢,先看看,都有什么图象,怎么看来看去就大玉儿和小玉儿这个人,(怎么看来看去就那几幅图象),既然就那么几幅图象,那就用不着把整幅图象输出,一幅图象给它一个代号不就行了吗,你得到代号后,把代号对应的图象贴到你的屏幕上不就行了吗?声音和图象捆绑,无需服务器运算,更不用输出了.
9,也许你说,这种方法只能解人物,怪物,物品问题,解决不了场景问题,既然服务器场景问题,那就留给客户端吧
10,回过头来,再看服务器都有什么运算,都有什么运算啊,
1)场景啊,场景运算都在客户端
2)血啊,经验啊,打击力啊.....不就是数据吗.
3),怪物,物品啊....用代号代替了啊
都是数啊,号啊,你这个服务器不成了纯数学运算服务器了吗?
11,对啊,说了半天,要说的就是这句话:一个多线程的MMORPG服务器变成了单线程的纯数学运算服务器,一个世界上最复杂的MMORPG游戏软件变成了最原始最简单的数学运算软件!
12,一个单线程的纯数学运算软件,该用什么语言开发?用汇编,开发一个单线程的纯数学运算软件,无论从开发速度和运行速度上考虑,win32汇编都是首选.汇编可以将纯数学运算速度推到极限
二,关于服务器引擎
既然可以把MMORPG当作本地RPG来写,还用的着服务器引擎吗,当前市面上又有那个服务器引擎主持这样的架构?
三,关于数据库.
你见过本地游戏用数据库的吗?
四,关于客户端的编写
既然客户端只负责输入(只要是键盘鼠标),输出(播放声音和显示图象)和场景工作,那么客户端就是设置一个界面和场景,这样的工是不是一个程序员就够了(对2D来说)
五,关于汇编,
也许你说汇编不利于团队开发,不错,这是个传统的权威说法.历史证明的确如此.
但是一个面向流水线的编程思想(注意是编程思想,不是编程语言,目前还没有面向流水线的编程语言),足以将这个传统的权威击得粉碎,
面向流水线的编程思想:
1,一个游戏功能或一个游戏功能系统就是一条流水线,增加和减少一个游戏功能就是增加和减少一条流水线
2,增加和减少一条流水线对原有功能无任何影响
3,增加和减少一条流水线对原有代码无需作任何改动,或只作少许改动
六,关于一个服务器百万玩家同是在线
1,经初步测试,用汇编写的服务器,运算1万怪物的行走,战斗,cpu使用率不到10%(赛扬2.4G),若用双核CPU肯定不到5%,就是说运算10万怪物cpu使用率不到50%,这还没有进行代码优化和算法优化,由此可算,以现有的硬件同一服务器支持10万以上玩家的逻辑不成问题,之后用多台分机进行数据分发,随着代码的优化和硬件的提升,百万玩家同时在线不是梦
2,既然所有逻辑运算都在服务器,那么完全可以放心用发出就不管的udp协议了,传错了最多造成玩家的屏幕闪一下.啊啊,速度又提了多少?
七,关于封杀外挂和数据加密:
既然所有逻辑运算都在服务器,还用封外挂和加密吗?
八,关于2DMMORPG服务器架构的核心技术
在上面已经说了,可以把MMORPG当作本地ORPG来写,但把MMORPG当作本地ORPG来写不是整个架构的核心技术,整个架构的核心技术是算法,其中的一个算法:
能让怪物在行走,战斗时的资源消耗比静静地呆在那里的资源消耗更低.
这个才是整个架构的核心技术之一,是整个架构的基石之一,少了一个这样的基石,整个架构马上土崩瓦解.支撑起整个架构的不是汇编,是算法,算法是大头,汇编是小头.懂得算法不用汇编也行,不懂算法用汇编也不行
若那位朋友某天打算用上面的架构,请先找到这些基石或事先与我取的联系.
以免少走弯路,以免把程序推倒重建,白白浪费人力.物力和宝贵的时间.
时间就是金钱!!!!!!!
若你盛大对上面的话感兴趣,就请在这里留个字,我看到后就把样品给你们,你们可对样品进行性能测试,测试若再感兴趣的话我们再谈. |
|