logo

TechFinger游戏搬砖系统模式开发技术

作者:T13z4277z5582023.05.10 17:40浏览量:110

简介:广义上讲,“链上游戏”一词已被用来描述一系列游戏类型,游戏上链程度可以从每一步的状态更新到一次性可选

  一直以来,游戏都被视为加密货币潜在的核心应用场景。它围绕着原生数字资产构建,面向全球的受众,因此,游戏在很多方面都非常适合利用可验证的链上证明、所有权以及全球支付通道。然而,同任何新创新一样,第一代产品往往有很多不足之处。可想而知,最初的一批游戏笨拙难玩、充满噱头,不是一件稀奇的事情,并且由于过度金融化的体验,让很多真正的游戏玩家望而却步。

  但是,TechFinger游戏搬砖系统13z开4z77发z558,正在构建的下一批链上游戏将利用可验证的证明、所有权和资产可编程性,同时专注于建立真正用户获取和留存的游戏循环,而不是代币投机;更重要的是,这一批游戏是由经验丰富的游戏开发者制作而成。除了由共享状态的无服务器计算所支持的新型游戏之外,我们还可以看到世界上一些最大的游戏工作室开始进入区块链,他们的游戏IP正逐渐上链。

  尽管加密原生用户和游戏玩家对链上游戏仍然保持着一定程度的怀疑态度,但令人兴奋和引人入胜的链上游戏所需的条件已经具备。最后所需的要素是健全的基础设施,只有健全的基础设施才可能让用户的链上游戏体验,和今天的传统游戏体验一样丝滑流畅。

  我们首先定义可能存在的几种链上游戏类型。

  链上游戏类型

  广义上讲,“链上游戏”一词已被用来描述一系列游戏类型,游戏上链程度可以从每一步的状态更新到一次性可选资产铸造等不同程度范围。以下是对游戏类型的一个粗略概述。

  方法#1:完全上链(Fully on-chain,FOC)

  近期关于链上游戏的讨论中,全链游戏(Fully on-chain games,又称完全链上游戏)成为了大多数人关注的焦点。在这种方式下,区块链被用作集中式游戏服务器的替代品,所有玩家在链上共享状态中进行索引和写入数据。

  共享状态不仅捕捉与资产相关的数据,还捕捉与游戏状态相关的所有方面。例如,在一场国际象棋比赛中,链上共享状态将记录每位玩家移动后黑白双方棋子的位置等细节。这种方法使得游戏具有持久性(即使原创者不再继续贡献,游戏仍可继续存在)、抗审查性和社区所有的开发等特点。

  虽然这种方法可以创建新的游戏类型,但目前仅适用于某些回合制游戏的子集,因为每一步都必须作为一个交易提交到区块链上,并且必须经过共识并达到最终状态,然后才能进行下一步移动。具体而言,这种方法适用于每个会话中状态更新相对较少的游戏,无论是由于玩家较少还是每个玩家每个会话的移动次数较少。成功采用这种方法的游戏示例包括Dark Forest和0xMonaco。例如18xx系列,已经在AllianceDAO博客中详细记录,也非常适合这种方法。

  随着游戏复杂性的增加,无论是同时进行的游戏还是每个会话中更频繁的状态更新,所需的状态转换可能会扩展到不仅包括玩家的输入(如国际象棋中的移动),还包括一些琐碎的游戏机制(例如角色扮演游戏中的被动恢复生命值)。因此,这些游戏机制所需的持续“crank”(以及相应的gas费用)限制了实际的游戏设计空间。考虑到当前的区块链架构状况,这些游戏类型可能更适合采用链上/链下混合的方法。

  方法#2:资产上链(On-chain assets,OCA)

  这种模式下,用户资产存储在链上,而游戏循环在链下进行。游戏服务器在会话开始时对链上资产状态进行索引,状态转换在链下的游戏服务器上进行记录。只有在游戏会话结束或游戏循环结果对资产状态产生实质性影响时,游戏服务器才会将状态回传至链上。例如,用户可以选择“保存状态”并支付相关的gas费用。这种方法在速度和性能方面取得了优势,但在可信度方面进行了妥协。

  方法#3:可选资产铸造(Optional Cosmetic Mints,OCM)

  采用这种方法的游戏,看起来与现在的游戏没有什么区别,游戏资产的所有权和状态更新记录在链下游戏数据库中。唯一的不同之处在于,如果他们愿意的话,用户可以选择将当前版本的角色资产铸造为链上NFT,并进行交易。此外,游戏可能还有某种忠诚度/赛季通行证,作为链上NFT存在,基于所有权在游戏内实现访问控制。在为方法#1和#2构建适当的基础设施的同时,对玩家来说,这种方法可能是最容易接受的,因为它所带来的阻力可能是最小的。

  这是使用eosjs实现的一笔转账交易,我们将0.0001个EOS代币从账号【consumer1111】转给账号【consumer2222】,关键代码如下:

  const consumer_name=”consumer1111”;

  const consumer_private_key=”5KWxgG4rPEXzHnRBaiVRCCE6WAfnqkRpTu1uHzJoQRzixqBB1k3”;

  const rpc=new eosjs_jsonrpc.JsonRpc(“h://jungle3.greymass.com”);

  const provider=new eosjs_jssig.JsSignatureProvider([consumer_private_key]);

  const api=new eosjs_api.Api({rpc:rpc,signatureProvider:provider});

  const result=await api.transact({

  actions:[{

  account:’eosio.token’,

  name:’transfer’,

  authorization:[

  {

  actor:consumer_name,

  permission:”active”,

  },

  ],

  data:{

  from:consumer_name,

  to:”consumer2222”,

  quantity:’0.0001 EOS’,

  memo:’by eosjs’,

  },

  }]

  },{

  blocksBehind:3,

  expireSeconds:90,

  });

相关文章推荐

发表评论