首页 新闻 会员 周边 捐助

关于网游的服务端 哪位可以介绍一下啊。

0
悬赏园豆:100 [已解决问题] 解决于 2012-02-09 10:01

我现在对网游的服务端不是太了解。有两种模式,我不知道哪个正确。。请做过相关的提示。

以简单的棋牌游戏为例子,

1.接受到客户端进入游戏的数据后,服务端随机发牌,每张用ID标识。这些传给客户端显示,同时把数据记到自己的内存字典中,如链表,list之类的数据结构中。客户端出牌,传ID到服务端。服务端用游戏规则判断可行否,或者是给出输赢结果,最后再在客户端显示。

2.接受到客户端进入游戏的数据后,服务端随机发牌,每张用ID标识。这些传给客户端显示,同时把数据记数据库中,客户端出牌,传ID到服务端。服务端根据用户ID查数据库,把之前的数据查出来,再用游戏规则判断可行否,或者是给出输赢结果,最后再在客户端显示。

不知道这两个逻辑哪个正常。。。大家来讨论。如果你有把握,可以直接给我留言,佣金不会少。

我的豆豆不是很多。呵呵希望大家多发言。

问题补充:

有没有做过的类似的啊!请指教一下。。。

xinsiyus的主页 xinsiyus | 初学一级 | 园豆:153
提问于:2011-12-29 12:57
< >
分享
最佳答案
0

若说棋牌游戏,应该没多少经费往服务器投,所以大多使用第一种,就是吃内存,第二种对于高性能服务器比较好,不然很容易出异常,另外,棋牌游戏一般不会把具体游戏数据详细的记录下来,只会记录最终结果加以计算

收获园豆:50
ERS | 小虾三级 |园豆:728 | 2011-12-29 15:07

第一种方法,对内存控制要求比较高,开发也比较复杂,除非有现在的后台可以套。你的判断输赢,在客户端?所有的出牌逻辑都要写到客户端么?只记录谁赢了?

xinsiyus | 园豆:153 (初学一级) | 2011-12-29 16:24

查看一下mssql的I/o速度......

xinsiyus | 园豆:153 (初学一级) | 2011-12-29 16:25

@辛思雨: 

如果是小型项目写客户端可行,但是比较正式点的话,写客户端容易被恶意模拟数据,我的意思是所有行为都在内存中完成,不要把每一步都记录到数据库,不然数据量很大的,服务器的话可以拆分一下,主要的端口放一台机器当做主机,再弄些小型机用于平均内存计算,小型机只做运算,不做最终数据存储

ERS | 园豆:728 (小虾三级) | 2011-12-30 09:07

@ERS: 感觉你说得很有道理,现在的主要性能瓶颈其实在硬盘,数据库对并发的处理比人工写内存安全快速有效的。关键是硬盘的吞吐量问题,所以我认为一般放到数据库中处理并共享这种方法是正确的,大不了多做硬盘阵列,你说呢,我想的是这样的,比如在做象棋的时候,其实每一步都可以写在内存中,因为他不需要做数据共享。但是我害怕的是这个量啊,内存能够用不?

xinsiyus | 园豆:153 (初学一级) | 2012-01-26 10:24
其他回答(1)
0

都可以,如果只有一台服务器,第一种就够用了。

如果有多台服务器要进行数据同步,用第二种好一些。

收获园豆:50
碧落星痕 | 园豆:708 (小虾三级) | 2011-12-29 13:48

呵呵,现在的网游,动不动就上万的并发量了,如果要存在内存中,那不是要自己写一些锁之类的东东。为了加速查找数据,也需要用特殊结构吧。我很想知道,C++用什么样的结构来满足要求。。。举一个例子呗。。。

支持(0) 反对(0) xinsiyus | 园豆:153 (初学一级) | 2011-12-29 14:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册