原文作者:0xhank
原文标题:《Avast! Welcome to Dark Seas!》
今天我要向大家隆重介绍Dark Seas,一个受经典回合制战斗游戏启发,并完全构建在区块链中的游戏。在Dark Seas中,你是一个来自帆船时代的强大舰队的船长。你需要指挥你的舰队向敌舰开火,同时躲避他们的攻击。
整个Dark Seas的逻辑和状态都存储于区块链之上。每当你的船只移动或火炮开火时,都会向链上提交一笔交易。这样便可以在快节奏的PvP动作游戏中,增加DApps的可互操作性和可组合性。
Dark Seas的推出,证明我们可以在保持游戏简单、好玩的前提下,还能充分利用区块链的优势,并达到一种两全其美的效果。
自从我投身自主世界(全链上游戏)以来,我一直想在其上实现一种我最喜欢的游戏类型:动作策略游戏。例如文明和XCOM,这种游戏让优秀的玩家通过比拼策略和技巧来取得胜利。
同时我还对区块链的优势感到兴奋,因为他可以增强玩家的所有权、可定制性和探索性。我想培养一个社区,开发新的功能、游戏模式和激励结构。
为了实现这些目标,我开始开发一个简单的回合制游戏,玩家可以移动船只然后执行动作。这种设计足够复杂,每轮都有新颖的游戏玩法,但也足够灵活,他将允许:
由社交和经济层驱动,可以实现无限轮次的游戏;
游戏规则可以简单的被玩家或建设者修改;
对胜利者进行代币化激励;
可定制的船只和皮肤,并可在玩家之间进行交易;
由游戏世界底层逻辑强制执行的社会契约;
在区块链上开发一款动作游戏并不容易,难点可以概括为以下几点:
如何在有限的交易量限制下,让玩家做出快节奏、具有挑战性的决策?如何在公开的区块链账本上,实现战争迷雾?如何在没有游戏节拍(game tick)的前提下,让整个游戏世界尽可能生动?
下面是我们采取的解决方案。
第一个问题是在尽可能少的区块链交易前提下,最大化玩家可执行的操作数量。为了解决这个问题,我想出了一个简单的动作批处理方案。如果玩家策划了多个动作,然后将它们作为单个交易提交怎么样?
在Dark Seas中,每个玩家将控制多艘可以进行多个动作设置的船只。一旦玩家决定了他们所有船只的所有动作,就会向链上提交一笔执行所有动作的交易。这意味着Dark Seas可以在避免造成区块链的堵塞的前提下,实现每分钟进行多个动作的目标。
由于区块链是完全公开的,玩家可以了解游戏的整个状态。制作战争迷雾机制非常具有挑战性,这在其他游戏媒介中也会出现。目前,其他依赖于区块链的游戏使用复杂的零知识证明来解决这个问题。而另一个更简单的选择是使用提交/揭示协议(commit reveal protocol)。这是我的解决方案。
在Dark Seas中,提前了解另一个玩家的下一步动作将会使你获得显著优势,因为你可以利用他来为攻击定位。提交/揭示方案强制玩家同时选择他们的动作,这样便没有人会获得不公平的优势。
在游戏回合中,玩家在提交阶段为每艘船选择一个移动方式。为了确认他们的决定,他们将向链上提交这些数据的哈希。然后,在揭示阶段,玩家提交他们实际行动。智能合约验证移动的哈希与先前提交上链的哈希一致,这时这些移动才会被实行。
区块链上并没有统一的游戏节拍(game ticks)。游戏世界中的实体不会自动每秒进行多次更新,唯一能推进游戏世界状态前进的方法便是向链上提交交易。这使得创建一个生机勃勃而又随着时间而变化的游戏世界变得困难。
我想设计一个纯粹的PvP游戏。由于为游戏构建NPC几乎不可能完成,因此世界上唯一的敌人就是其他玩家。随着越来越多的玩家做出越来越有趣的决策,令人兴奋的传说便会自然出现,玩家可以在游戏世界中观察到之前战斗留下的痕迹。
一个简单的例子是,Dark Seas 使用了可以不断缩小的地图机制。每一回合,地图都会变得更小,这可能导致你的船被困在界外。每当一艘船移动时,游戏会根据交易中的时间戳,检查其位置是否在地图边界内。
Dark Seas 的一个早期版本已经可以进行试玩。目前他正在测试网络上运行,Small Brain Games 的社区成员之前已经参与过多次测试。快来加入吧!
目前游戏已经比较稳定,我的重点是完善上述新奇的游戏功能。首先,我将简化核心游戏循环(game loop),以便将其应用于各种游戏模式。然后,我将添加工具,方便其他人参与贡献。我的目标是构建一个开放的游戏协议,可以通过它创建有趣和独特的世界。
特别感谢 Will Robinson 在游戏设计上提供的帮助。感谢 Lethe 和 Biscaryn 对我的工作进行检查。感谢 Small Brain Games discord 的成员参与试玩并提供有见地的反馈。
欢迎关注FunBlocks Twitter账号:https://twitter.com/FunBlocksFun