首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏开发的设计模式

游戏开发的设计模式
EN

Ethereum用户
提问于 2018-11-30 18:08:48
回答 1查看 225关注 0票数 0

我正在开发一个游戏,它目前使用一个GameFactory合同来创建一个游戏契约的实例。工厂模式允许任意数量的玩家玩他们自己的单人游戏和存储在单独游戏实例中的游戏数据。

但是,理想情况下,我需要游戏合同与GameFactory合同进行互动,以更新当前所有游戏的全球高分和统计数据。

实现这一目标的好方法是什么?有没有这样分散游戏模式的现有例子?

EN

回答 1

Ethereum用户

发布于 2018-11-30 19:38:38

集线器和轮辐布置具有优势,单片合同也是如此。

轮毂和轮辐

  • 更简单的内部结构,可能更易读
  • 可以容纳一个“滚动升级”路径,如果这是必要的。

单片

  • 初始化几个变量要比为每个游戏部署一个新合同要便宜得多。

在集线器和辐条基础上工作自然会导致一些一般性的关注。正如您所提到的,Spokes可能需要更新集线器中的全局,集线器需要限制对某些功能的访问,因此只有轮辐才能这样做,等等。

我的探索使我创造了广义的契约,大致上是:

代码语言:javascript
复制
contract Hub is Deployer { ...

contract Spoke is Deployed { ...

考虑到Deployer跟踪已部署的Spokes并执行以下操作:

代码语言:javascript
复制
modifier onlyDeployed { // only trust contracts made by this Hub

..。部署人员会记住产生它的集线器之类的事情。

如果您希望能够升级游戏逻辑,那么您可以考虑进一步分离集线器数据和工厂逻辑。也就是说,您希望能够将全局数据保存在预期不会更改的契约中,同时定期替换部署新游戏的契约。

最低的天然气成本和最简单的方法是一个单一的合同,游戏数据卷成结构,没有升级的可能性。

希望能帮上忙。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/63349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档