Skip to content

关于属性的定义 (如金币)?

ilvxna edited this page Aug 3, 2018 · 4 revisions

: 我现在对某个属性的使用方式有点绕。 假设有个属性, 譬如金币数, 现在定义在base, 因为玩家不进入cell的时候, 要读写这个属性。 可是在cell里面, 需求也要求读写金币数。 目前的策略是, 在cel定义一个金币属性的secondary同步数据, cell读的是这个同步数据, 如果要写, 请求先到base, 更改后再同步到cell。 请问, 这么做是否合理?

: 这个要看游戏类型了。

像mmorpg, 很多金币消耗都是即时直接在cell上,base需求极少, 这种情况直接定义在cell上即可。

一些棋牌类的可以直接定义在base上, cell都不需要。

你这是什么游戏? 说说你扣金币的需求。

: 我们就是棋牌类型的。 开房间需要扣除金币, 轮次用完后, 常规要销毁房间。 现在增加了个新的需求, 轮次用完后, 房主可以直接扣除金币来重置轮次信息。 重置的请求直接发到了cell上, 因为有不少的逻辑状态判断, 所以请求发到base, 不方便。

: 你可以直接在base上扣, 重置轮次可以先由客户端请求base, base扣完钱之后直接请求cell重置, 这样就不会从cell到base再到cell, 是否可行?

: 放在base, 主要是钱扣了, cell这边如果不满足重置条件, 比较麻烦; 感觉属性在两边有写需求, 如果真要严格做"同步"操作, 逻辑写起来不方便。 现在放在cell, 如果满足重置条件, 通知base扣下, 不管能不能扣了(理论上金币在base和cell有不相等的时候)。

: 这种跨进程的就看你要多严格了, 严格来说应该要先冻结base上的钱, 然后再去判断, 成功扣除失败返还。

: mmorpg base扣钱的操作少吗,向装备强化之类的操作不是应该放在base吗?

: 装备直接就在cell上, 直接在cell扣cell强化, 即时完成。

Clone this wiki locally