如何确保相关颗粒在同一筒仓中激活?



我正在使用orleans框架实现一个游戏应用程序。每个游戏实例都是一个单独的GameGrain,并且每个GameGrain实例都有一些相关的颗粒,例如PlayerGrain(游戏中每个玩家),WeaponsGrain(武器库存)。

这些颗粒的主键是:

GameGrain:<GameGuid>

PlayerGrain:<GameGuid>-<PlayerGuid>

WeaponsGrain:<GameGuid>

现在,我想实现颗粒放置策略,以确保GameGrain,PlayerGrainWeaponsGrain在任何游戏实例中都与GameGrain在同一个筒仓上被激活

如果你能提供一些建议,我应该怎么做,我会很感激的?

你可以用[PreferLocalPlacement]属性标记一个谷物,如果你想把它和创建它的谷物放在同一个筒仓上。

其他的放置策略是可用的,你甚至可以写你自己的。关于这方面的更多信息,请阅读关于颗粒放置的文档。

由于存在与颗粒通信相关的成本,并且您非常关注此以考虑颗粒放置,那么您可能需要重新考虑哪些对象应该是颗粒。如果一个对象不需要被多个粒度访问,而是真正由一个粒度拥有,那么你可能只想让它成为同一个粒度的一部分。

例如,武器可以是玩家纹理中的武器集合中的一个对象。如果它需要改变所有权,对象可以发送给另一个玩家。

最新更新