|
发表于 2007-6-22 10:08:00
|
显示全部楼层
Re:一个网游,成就一份梦想---大型多人MMORPG游戏寻求投资
最近一直在gameres里作梦,幸得neelkey一言点醒,本想一走了,但想想这样未免太自私了,起码要给有志进入游戏领域的善良的人一个忠告吧.
一,关于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汇编都是首选.汇编可以将纯数学运算速度推到极限
|
|