游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2642|回复: 8

[讨论]一个游戏结算程序的设计

[复制链接]

1

主题

60

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2009-10-9 11:29:00 | 显示全部楼层 |阅读模式
假设要设计这样一个在线多人经营游戏:
1.游戏有一个大地图,显示所有玩家的所有店铺;
2.每个玩家可以开多个店铺,店铺在大地图的位置是玩家自己选择的;
3.玩家可以选择每个店铺出售的商品种类,1种或N种;
4.店铺的收益:在一个结算周期内,随机抽取若干个商品卖出。

问题:结算程序如何设计效率更高,占用服务器资源更低?

如果是在服务器设计一个定时程序,玩家数量多了,势必产生时间的延迟
如果在读取玩家信息和读取店铺信息时结算,又会占用很多服务器资源

各位大虾还有其它什么好办法吗?

30

主题

422

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2009-10-9 19:25:00 | 显示全部楼层

Re:[讨论]一个游戏结算程序的设计

你期望店铺的总数多大?商品种类n有多大?结算周期多长?
定出了问题的规模才好判断.

1

主题

60

帖子

61

积分

注册会员

Rank: 2

积分
61
 楼主| 发表于 2009-10-10 08:54:00 | 显示全部楼层

Re:[讨论]一个游戏结算程序的设计

1万用户,10万店铺,每个店铺最多买50种商品,1个小时结算一次

地图分区,每个区500个店铺,同时显示在屏幕30~50个

0

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2009-10-10 10:54:00 | 显示全部楼层

Re:[讨论]一个游戏结算程序的设计

个人想法:可以线性的处理,没必要在一个结算周期处理全部的店铺, 可以分成小的结算周期(每帧或每秒)处理100个用户这样子,要根据测试来确定这个粒度,维护一个队列,这样子.

1

主题

60

帖子

61

积分

注册会员

Rank: 2

积分
61
 楼主| 发表于 2009-10-14 17:25:00 | 显示全部楼层

Re:[讨论]一个游戏结算程序的设计

LS这样做,不就和定时执行一样喽。我想要的是感觉上是同时结算

30

主题

422

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2009-10-20 13:50:00 | 显示全部楼层

Re: Re:[讨论]一个游戏结算程序的设计

cyagi: Re:[讨论]一个游戏结算程序的设计

1万用户,10万店铺,每个店铺最多买50种商品,1个小时结算一次

地图分区,每个区500个店铺,同时显示在屏幕30~50个


同时在线玩家如果想对总玩家数量比较小,那么可以优先结算在线玩家当前屏幕的店铺内容。
其他的结算依次顺延。
逻辑上保持所有店铺在同一时间点结算是依靠过滤掉结算时间之后的交易。

假如多次结算没有累积效果,理论上也可以让长期无人光顾的店铺长期不做结算。
只对所有在线用户查询到的店铺做结算检查(判断在上次结算之后到最近一次结算时间点之间是否存在交易记录)

20

主题

84

帖子

84

积分

注册会员

Rank: 2

积分
84
发表于 2009-10-20 23:15:00 | 显示全部楼层

Re:[讨论]一个游戏结算程序的设计

这个计算过程可以给客户端程序来做就可以了,把计算的结果传送到服务器。

因为店是玩家开的,各个玩家交易信息和他玩游戏时的信息(如走路)一样,都是自己处理,然后把结果发给服务器。【声明,这是我猜测的,我没有开发经验】

因为我们不可能把我们行动的速度等信息传给服务,让服务器计算下一个游戏循环,我们该在地图的什么位置,这显然是不合理的。而是我们计算好下个位置,然后把位置传给服务器。

同样的,交易情况也是一样。玩家A买了玩家B的店铺的商品X,自然,玩家A处理"买了玩家B商品X",玩家B处理"卖给玩家A商品X",然后各自处理相关的信息,并各自把最终结果发给服务器。这样做可以减少服务器的负担,而且也不会太影响客户端的速度。

所以这个如果是纯算法题确实有很多要思考,如果实际情况,显然这是不合理的。

13

主题

312

帖子

312

积分

中级会员

Rank: 3Rank: 3

积分
312
发表于 2009-10-21 02:47:00 | 显示全部楼层

Re:[讨论]一个游戏结算程序的设计

可以参考IBM给银行系统作的数据库


:〉


-------------------------------------------------------------------------------------------

欢迎访问开源图形处理器体系结构论坛(OpenGPU论坛) http://www.opengpu.org/bbs/

OpenGPU Graphics Open Source community(图形开源社区),聚焦领域(focus domain)包括:
  * GPU Architecture(图形处理器体系结构)
  * Graphics Algorithm(图形算法)
  * GPGPU Programming (面向通用的图形处理器编程)
  * Open Source Rendering Engine(开源渲染器)
  * Open Source GPU Simulator/RTL Implement(开源GPU模拟器

1

主题

60

帖子

61

积分

注册会员

Rank: 2

积分
61
 楼主| 发表于 2009-10-21 09:24:00 | 显示全部楼层

Re: Re:[讨论]一个游戏结算程序的设计

OpenGPU: Re:[讨论]一个游戏结算程序的设计

可以参考IBM给银行系统作的数据库


:〉


-----------------------------------------------------...



传说中的“IBM给银行系统作的数据库”在什么地方有呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-19 21:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表