如何确保关联的谷物在同一个筒仓中被激活?

How to make sure associated grains are activated in same silo?

我正在使用 orleans 框架实现一个游戏应用程序。每个游戏实例都是一个单独的 GameGrain,每个 GameGrain 实例都有一些关联的谷物,例如 PlayerGrain(对于游戏中的每个玩家),WeaponsGrain(武器库存) .

这些grains的主键是:

GameGrain : <GameGuid>

PlayerGrain : <GameGuid>-<PlayerGuid>

WeaponsGrain: <GameGuid>

现在,我想实施谷物放置策略,确保任何游戏实例的 GameGrainPlayerGrainWeaponsGrain 在与 [=10= 相同的筒仓上激活]

如果您能提供一些我应该如何做的信息,我将不胜感激?

如果您希望将谷物放置在与创建它的谷物相同的筒仓中,您可以使用属性 [PreferLocalPlacement] 标记谷物。

可以使用其他放置策略,您甚至可以编写自己的放置策略。阅读 documentation on grain placement 了解更多信息。

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

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