支持: 0 | 反对: 0 | 打印 | 推荐 | 订阅 | 收藏
标题: 讨论一个关键点的问题,把多少用户信息放在服务器端才好?
  本主题由 蕾歌薇儿 于 2007-8-11 00:53 提升 
flymagic
游戏官方特派
Rank: 68Rank: 68Rank: 68Rank: 68Rank: 68



UID 22434
精华 2
积分 2720
帖子 189
威望 3
现金 4209 银币
金币 50 金币
阅读权限 100
注册 2007-4-20
状态 离线
发表于 2007-7-19 15:53  资料  个人空间  短消息  添加 flymagic 为MSN好友 通过MSN和 flymagic 交谈

讨论一个关键点的问题,把多少用户信息放在服务器端才好?


OK,我也是一个Webgame程序员,这个问题一直得不到什么好的参考。
我现在在制作一个类似于《OGAME》的战略游戏,关于这个问题我做了几次调整,在以前,我只保存用户的一些简单信息,比如城市的ID什么的。等到使用时再进行查询。可是我觉得那样很没有必要,所以我现在的做法是把玩家整个城市的信息都载入到服务器端。我在做一些判定的时候,比如说造一个兵种需要哪些设施的时候,就不用去查询数据库了。
不知道各位是怎么做的?

还有,怎么样防止一个账号在两地同时登陆呢?我现在还没有解决这个问题,所以在Session里面的数据我是不以为准的。比如说花费金钱等的时候,我每次都要到数据库验证。

PS:我使用的是ASP.NET。

顶部
[广告] 多玩独家代理欧美航海题材网页游戏《Seafight海战英豪》7月14日公测
andyllr
骑士
Rank: 24Rank: 24Rank: 24


UID 4116
精华 0
积分 1004
帖子 108
威望 0
现金 2992 银币
金币 0 金币
阅读权限 50
注册 2006-11-1
状态 离线
发表于 2007-7-19 16:04  资料  个人空间  短消息 

.net我不懂,但开发原理是一样的。

造兵需要哪些设施这很明显是逻辑层的东西,是后台控制的,跟库什么关系?数据库是不做逻辑判断的,只负责存储数据。

花费金钱的验证不需要访问库,可以先根据session的信息去判断是否可以显示“建造”按钮“,但提交数据时肯定要访问库的,并且在服务端要对提交数据做判断的。因为增,删,改等操作不能只在Session里执行。session里只能是对一些get方法使用时提高速度。

顶部
[广告] 论坛投票锁帖系统(主题帖投票)启用,会员可以控制帖子的关闭与否
flymagic
游戏官方特派
Rank: 68Rank: 68Rank: 68Rank: 68Rank: 68



UID 22434
精华 2
积分 2720
帖子 189
威望 3
现金 4209 银币
金币 50 金币
阅读权限 100
注册 2007-4-20
状态 离线
发表于 2007-7-19 16:22  资料  个人空间  短消息  添加 flymagic 为MSN好友 通过MSN和 flymagic 交谈

你没明白我的意思。造兵需要某些设施,设施的建造得怎么样,当然每个玩家都不同。如果只保存玩家ID,那么在建造的时候就要查询一次数据库,获取玩家目前的设施状态。如果把玩家建造的设施在第一次登陆时就载入到SESSION中,那么就省去一次查询了。

对了。还有个问题。你们是怎么样设置建造设施的?
我的方法是玩家建造了一个设施之后,就向数据库中插入一条数据(放在专门的表中),然后每个回合(我的游戏是按天算的)查询一次这张表,得到目前完成的建筑,再修改数据。不过,这样做的话,建筑状态无法在SESSION中显示出来。

顶部
[广告] 多玩独家代理欧美航海题材网页游戏《Seafight海战英豪》7月14日公测
andyllr
骑士
Rank: 24Rank: 24Rank: 24


UID 4116
精华 0
积分 1004
帖子 108
威望 0
现金 2992 银币
金币 0 金币
阅读权限 50
注册 2006-11-1
状态 离线
发表于 2007-7-20 09:03  资料  个人空间  短消息 

你最开始问的是“造一个兵种需要哪些设施”,我当然理解为一个写死的逻辑了 ,不过你这么做没有错,最开始就把状态写入SESSION是好习惯 。不过记得每次状态变化要和表同步啊。

我没写过游戏,而且我不清楚你的表结构如何设计。

你是建一个用户表,建筑表和一个用户建筑关系表呢。还是不用关系表,直接建一个用户建筑状态表呢?

顶部
[广告] 论坛红包功能恢复,准骑士以上可评分。结婚系统安装完毕,大家可以开始表白了
flymagic
游戏官方特派
Rank: 68Rank: 68Rank: 68Rank: 68Rank: 68



UID 22434
精华 2
积分 2720
帖子 189
威望 3
现金 4209 银币
金币 50 金币
阅读权限 100
注册 2007-4-20
状态 离线
发表于 2007-7-20 10:47  资料  个人空间  短消息  添加 flymagic 为MSN好友 通过MSN和 flymagic 交谈

用户表只是一个账号表。
不过城市表包含了城市的几乎所有信息。包括建筑、物资等。
因为这个游戏生产系统比较复杂,资源和工厂用另外的表。每个一条记录。

顶部
[广告] 多玩独家代理欧美航海题材网页游戏《Seafight海战英豪》7月14日公测
flymagic
游戏官方特派
Rank: 68Rank: 68Rank: 68Rank: 68Rank: 68



UID 22434
精华 2
积分 2720
帖子 189
威望 3
现金 4209 银币
金币 50 金币
阅读权限 100
注册 2007-4-20
状态 离线
发表于 2007-7-20 10:48  资料  个人空间  短消息  添加 flymagic 为MSN好友 通过MSN和 flymagic 交谈

因为我没有开发过其它类型的WEB应用,一开始就做游戏了。所以也不清楚其它人是怎么做的。
SESSION存放大量的信息不会出问题吗?会不会引起服务端不稳定之类的?

顶部
[广告] web棋牌市 6.16内测开启
fieldwind
版主
Rank: 68Rank: 68Rank: 68Rank: 68Rank: 68


UID 34106
精华 3
积分 9720
帖子 1014
威望 10
现金 6996 银币
金币 0 金币
阅读权限 120
注册 2007-6-28
状态 离线
发表于 2007-7-20 10:49  资料  个人空间  短消息 

如果把玩家建造的设施在第一次登陆时就载入到SESSION中
你想过没session占用服务器内存的问题?减少一两次查询, 换来一堆内存占用,你认为值得??

顶部
[广告] 《英雄之门》,了解怪胎美女、非人待遇的经历
wymsbqwq
骑士
Rank: 24Rank: 24Rank: 24



UID 21275
精华 0
积分 1284
帖子 642
威望 -1
现金 2824 银币
金币 0 金币
阅读权限 50
注册 2007-4-12
状态 离线
发表于 2007-7-20 11:00  资料  个人空间  短消息 

不懂,等专家解答

顶部
[广告] 论坛投票锁帖系统(主题帖投票)启用,会员可以控制帖子的关闭与否
flymagic
游戏官方特派
Rank: 68Rank: 68Rank: 68Rank: 68Rank: 68



UID 22434
精华 2
积分 2720
帖子 189
威望 3
现金 4209 银币
金币 50 金币
阅读权限 100
注册 2007-4-20
状态 离线
发表于 2007-7-20 11:48  资料  个人空间  短消息  添加 flymagic 为MSN好友 通过MSN和 flymagic 交谈

这就是难题了。时间换空间,空间换时间是程序中永恒不变的话题。
我城市信息大约为10K,如果1000用户的话,需要100M内存?这样想一下似乎也很小。

顶部
[广告] 论坛红包功能恢复,准骑士以上可评分。结婚系统安装完毕,大家可以开始表白了
fieldwind
版主
Rank: 68Rank: 68Rank: 68Rank: 68Rank: 68


UID 34106
精华 3
积分 9720
帖子 1014
威望 10
现金 6996 银币
金币 0 金币
阅读权限 120
注册 2007-6-28
状态 离线
发表于 2007-7-20 11:55  资料  个人空间  短消息 

…………
你以为你放个网站上去,就SEESION占内存的?
你不如去写个可逆的简单点的加密算法,COOKIES保存在客户端,读取的时候,再破译回

顶部
[广告] 多玩独家代理欧美航海题材网页游戏《Seafight海战英豪》7月14日公测
andyllr
骑士
Rank: 24Rank: 24Rank: 24


UID 4116
精华 0
积分 1004
帖子 108
威望 0
现金 2992 银币
金币 0 金币
阅读权限 50
注册 2006-11-1
状态 离线
发表于 2007-7-23 09:13  资料  个人空间  短消息 



QUOTE:
原帖由 fieldwind 于 2007-7-20 11:55 发表
…………
你以为你放个网站上去,就SEESION占内存的?
你不如去写个可逆的简单点的加密算法,COOKIES保存在客户端,读取的时候,再破译回

这个看开发人员习惯了,不过呢,我很同意你之前的说法,一般数据量和连表少的话,算法写的好一些,就算多几次库查询也不会差很多。

BTW,我一个同志的名言:IDE用多人,SESSION这个单词肯定会拼错

顶部
[广告] 多玩独家代理欧美航海题材网页游戏《Seafight海战英豪》7月14日公测
risingnox
老兵
Rank: 9Rank: 9



UID 36542
精华 0
积分 124
帖子 34
威望 0
现金 2548 银币
金币 0 金币
阅读权限 30
注册 2007-7-14
状态 离线
发表于 2007-8-10 10:31  资料  个人空间  短消息 

session要考虑的就是服务器文件系统的压力!

当很多session的话,还是把session保存在数据库里比较实在一些。

1000个1k的session文件会拖慢服务器速度了。而且查询起来也费时间。

顶部
[广告] 多玩独家代理欧美航海题材网页游戏《Seafight海战英豪》7月14日公测
有只河马
新进市民
Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5


UID 21010
精华 0
积分 46
帖子 4
威望 0
现金 2477 银币
金币 0 金币
阅读权限 10
注册 2007-4-10
状态 离线
发表于 2007-8-10 16:02  资料  个人空间  短消息 



QUOTE:
原帖由 flymagic 于 2007-7-20 10:48 发表
因为我没有开发过其它类型的WEB应用,一开始就做游戏了。所以也不清楚其它人是怎么做的。
SESSION存放大量的信息不会出问题吗?会不会引起服务端不稳定之类的?

会!

顶部
[广告] 多玩独家代理欧美航海题材网页游戏《Seafight海战英豪》7月14日公测
dogvane
勋爵
Rank: 40Rank: 40Rank: 40Rank: 40Rank: 40



UID 22711
精华 6
积分 7234
帖子 139
威望 13
现金 7737 银币
金币 2 金币
阅读权限 60
注册 2007-4-22
状态 离线
发表于 2007-8-10 20:56  资料  个人空间  短消息 

对于楼主的问题我想问题不大。
1.Session里能放多少数据,我认为全部放上去是可以的。不要怕,现在内存是白菜价。
不过需要注意的时,Session里的东西仅用于读取,不可用于写入,即任何操作后,如果数据发生改变都应将数据写入数据库,防止当应用程序崩溃后,数据丢失。

2.关于同一用户在两个地方同时登录的处理方案:
a)在登录时判断Application里是否有同一个用户,如果有,强制退出前一个用户的Session,这个有点像Travian

b)用户数据不保存到Session,而是保存在Application,Session只保留一个用户ID,要用到用户数据的时候,根据Session的用户ID去Application里找。Session过期后,再从Application里删除。当然如果两个Session都访问,则小心Session过期后删除顺序的问题,第一个退出的并不从Application里删除,只有最后一个Session退出时才删除Application里的数据。

顶部
[广告] 论坛红包功能恢复,准骑士以上可评分。结婚系统安装完毕,大家可以开始表白了
darkdawn
新进市民
Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5



UID 54079
精华 0
积分 22
帖子 3
威望 0
现金 2486 银币
金币 0 金币
阅读权限 10
注册 2007-8-19
状态 离线
发表于 2007-9-2 15:59  资料  个人空间  短消息  添加 darkdawn 为MSN好友 通过MSN和 darkdawn 交谈

处女帖。我这里也还有一个问题,放到这里一起问吧

关于如何精确计算战斗结果,比如部队是混合的情况,是首先计算出谁先损失第一个兵再扣取双方伤害,然后移除掉死亡的兵的战斗力,再开始重新计算,直到全部计算完成,这样理论上是很精确的,但是我担心有性能上的问题。

我认为这是个基础问题,如果实现的话,这样可以让部队更加合理,可以根据武器防御自定义部队,增加可玩性。

顶部
[广告] 多玩独家代理欧美航海题材网页游戏《Seafight海战英豪》7月14日公测
sizlan
骑士
Rank: 24Rank: 24Rank: 24


UID 103043
精华 0
积分 1560
帖子 498
威望 0
现金 1932 银币
金币 0 金币
阅读权限 50
注册 2007-9-30
状态 离线
发表于 2007-10-1 09:41  资料  个人空间  短消息 


目前没开发过要求那么多人在线的东西过,我都是全部使用数据库,session也就是id用吧。所有的判断都在php里。
问题二  是否可以使用ip数据库?我们认为不同的ip是允许的,但是同时间ip的物理地址不同就是有错误了,不是代理就是多人用一个帐号。

顶部
[广告] web棋牌市 6.16内测开启
 


海盗王

当前时区 GMT+8, 现在时间是 2008-7-24 19:54
沪ICP备06036464号

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 Licensed  © 2001-2007 Comsenz Inc.
Processed in 0.101626 second(s), 11 queries , Gzip enabled

清除 Cookies - 联系我们 - Chinese Webgame BBS 中国网页游戏论坛 - Archiver - WAP