首    页 界面/窗口 网络/通讯 数据库 组件开发 图像/多媒体 NET/Web 其它技术 源码下载 资料下载 软件共享 软件外包 曲艺杂谈
栏目导航:  首    页  |  网络/通讯  |  棋牌游戏


游戏大厅升级日记 关于计分机制的Story


原作者:包建强    源出处:博客园    发布者:施昌权    发布类型:转载    发布日期:2009-03-21


  

Login后,发,从DB中得到该用户的各个游戏的已有分数列表。注意,DB中UserScore表,应该只包括Score<>0的记录,就是说,至少进行过一次游戏。

游戏结束,更新DB中UserScore表的Score字段,如果之前没有记录,则添加一笔新的。平局不会更新该表。(这是一个SP,名称Pr_UpdateScore。)

游戏结束,会同时更新Server的clientTable中该桌用户的Score记录

游戏结束,Server会发送新的分数给该游戏的各大厅用户。

 

Login结束,会response这个用户各个游戏的已有分数列表给该Client,将其存储在List<GameScore>中,有GameId和Score两个字段。

之后,

JoinHall从Client取出该大厅对应游戏的Score,加入clientTable中。这一步至关重要。

LeaveHall从clientTable中移除这个大厅的记录UserHallInfo。

游戏结束,会同时更新该Client的List<GameScore>。

 

*有时SingleOrDefault方法要比Single好用


发表评论
  回复  引用  查看    
#1楼 2009-02-06 14:03 | 韦恩卑鄙      
建议 这个部分用策略模式实现 因为不同的游戏 在不同的时期可能会作不同的事情

比如我们的疯狂坦克 在游戏结束后 促销期间 会提高10%经验
但是连连看并没有这个优惠

根据游戏使用不同的策略 可以避免这一问题
  回复  引用  查看    
#2楼 2009-02-06 14:10 | 韦恩卑鄙      
最近因为我的游戏大厅一些问题有点苦恼
因为我做的可能不是棋牌游戏
那么游戏核心的timer 究竟是统一timer外界传入 还是由每个logic 实例内部产生呢

threading.timer 到底有多大消耗 我想不出一个比较好的办法测试 就无从决定了

包包兄弟你有什么建议没有

  回复  引用    
#3楼 2009-02-06 22:26 | 未登录的包建强 [未注册用户]
有问才有答.
timer放在Client端.
Server端只要做好计数就可以了.
  回复  引用  查看    
#4楼 2009-02-07 21:55 | 韦恩卑鄙      
我的意思是比如服务器有个ai 类似暗黑2的小怪 或者说是一个俄罗斯方块的COM玩家 这样的Ai的timer 肯定不是和用户的io同频率的
是这个房间实例独享 还是同样逻辑share呢 :( 很纠结
  回复  引用  查看    
#5楼 [楼主]2009-02-07 23:57 | 包建强      
这个,你要问做网游的人了。
由此看出我俩的不同来。我是借助于项目展现技术;老兄你是偏重于实用性。



关于我们 版权声明 广告服务 联系我们 友情链接 加入收藏
站长:施昌权    Email:scq2099yt@163.com    MSN:scq2099yt@live.cn    QQ:14046300    本站QQ群:67202409
Copyright © 2008     卓为VC(www.joyvc.cn)    All Rights Reserved    建议分辨率 1024×768
本站由施昌权制作维护
京ICP备09012297号