# Dark Seas游戏介绍：欢迎来到黑暗之海！

By [FunBlocks](https://paragraph.com/@funblocks) · 2023-03-10

---

_原文作者：0xhank_

_原文标题：《Avast! Welcome to Dark Seas!》_

![](https://storage.googleapis.com/papyrus_images/4df81193416daf212d3c0861335f6a1a55db7332e80b0f439f0ec3b3dba195f3.png)

今天我要向大家隆重介绍Dark Seas，一个受经典回合制战斗游戏启发，并完全构建在区块链中的游戏。在Dark Seas中，你是一个来自帆船时代的强大舰队的船长。你需要指挥你的舰队向敌舰开火，同时躲避他们的攻击。

整个Dark Seas的逻辑和状态都存储于区块链之上。每当你的船只移动或火炮开火时，都会向链上提交一笔交易。这样便可以在快节奏的PvP动作游戏中，增加DApps的可互操作性和可组合性。

Dark Seas的推出，证明我们可以在保持游戏简单、好玩的前提下，还能充分利用区块链的优势，并达到一种两全其美的效果。

01.创造这个项目的动机
------------

自从我投身自主世界（全链上游戏）以来，我一直想在其上实现一种我最喜欢的游戏类型：动作策略游戏。例如文明和XCOM，这种游戏让优秀的玩家通过比拼策略和技巧来取得胜利。

同时我还对区块链的优势感到兴奋，因为他可以增强玩家的所有权、可定制性和探索性。我想培养一个社区，开发新的功能、游戏模式和激励结构。

为了实现这些目标，我开始开发一个简单的回合制游戏，玩家可以移动船只然后执行动作。这种设计足够复杂，每轮都有新颖的游戏玩法，但也足够灵活，他将允许：

1.  由社交和经济层驱动，可以实现无限轮次的游戏；
    
2.  游戏规则可以简单的被玩家或建设者修改；
    
3.  对胜利者进行代币化激励；
    
4.  可定制的船只和皮肤，并可在玩家之间进行交易；
    
5.  由游戏世界底层逻辑强制执行的社会契约；
    

02.设计一款有趣的全链游戏
--------------

在区块链上开发一款动作游戏并不容易，难点可以概括为以下几点：

如何在有限的交易量限制下，让玩家做出快节奏、具有挑战性的决策？如何在公开的区块链账本上，实现战争迷雾？如何在没有游戏节拍（game tick）的前提下，让整个游戏世界尽可能生动？

下面是我们采取的解决方案。

03.将多个操作打包进同一笔交易
----------------

第一个问题是在尽可能少的区块链交易前提下，最大化玩家可执行的操作数量。为了解决这个问题，我想出了一个简单的动作批处理方案。如果玩家策划了多个动作，然后将它们作为单个交易提交怎么样？

![在Dark Seas中，你可以在提交之前设定船只的所有动作](https://storage.googleapis.com/papyrus_images/2a6c2244323afe0cb868dd48d4dc6c885ba2a2fcd07b1e579e6806f97c4142c5.png)

在Dark Seas中，你可以在提交之前设定船只的所有动作

在Dark Seas中，每个玩家将控制多艘可以进行多个动作设置的船只。一旦玩家决定了他们所有船只的所有动作，就会向链上提交一笔执行所有动作的交易。这意味着Dark Seas可以在避免造成区块链的堵塞的前提下，实现每分钟进行多个动作的目标。

04.战争迷雾
-------

由于区块链是完全公开的，玩家可以了解游戏的整个状态。制作战争迷雾机制非常具有挑战性，这在其他游戏媒介中也会出现。目前，其他依赖于区块链的游戏使用复杂的零知识证明来解决这个问题。而另一个更简单的选择是使用提交/揭示协议（commit reveal protocol）。这是我的解决方案。

在Dark Seas中，提前了解另一个玩家的下一步动作将会使你获得显著优势，因为你可以利用他来为攻击定位。提交/揭示方案强制玩家同时选择他们的动作，这样便没有人会获得不公平的优势。

在游戏回合中，玩家在提交阶段为每艘船选择一个移动方式。为了确认他们的决定，他们将向链上提交这些数据的哈希。然后，在揭示阶段，玩家提交他们实际行动。智能合约验证移动的哈希与先前提交上链的哈希一致，这时这些移动才会被实行。

![这段Solidity代码确保玩家先前的承诺与其移动哈希一致（Move System的参数）](https://storage.googleapis.com/papyrus_images/49a07d5fa8d721803a9579b609e4e9157c28c12f450f9eabd7047aa08855af62.png)

这段Solidity代码确保玩家先前的承诺与其移动哈希一致（Move System的参数）

05.让游戏变得更加生动
------------

区块链上并没有统一的游戏节拍（game ticks）。游戏世界中的实体不会自动每秒进行多次更新，唯一能推进游戏世界状态前进的方法便是向链上提交交易。这使得创建一个生机勃勃而又随着时间而变化的游戏世界变得困难。

我想设计一个纯粹的PvP游戏。由于为游戏构建NPC几乎不可能完成，因此世界上唯一的敌人就是其他玩家。随着越来越多的玩家做出越来越有趣的决策，令人兴奋的传说便会自然出现，玩家可以在游戏世界中观察到之前战斗留下的痕迹。

一个简单的例子是，Dark Seas 使用了可以不断缩小的地图机制。每一回合，地图都会变得更小，这可能导致你的船被困在界外。每当一艘船移动时，游戏会根据交易中的时间戳，检查其位置是否在地图边界内。

06.项目状态
-------

Dark Seas 的一个早期版本已经可以进行试玩。目前他正在测试网络上运行，Small Brain Games 的社区成员之前已经参与过多次测试。快来[加入](https://discord.com/invite/xW7U2hQg)吧！

目前游戏已经比较稳定，我的重点是完善上述新奇的游戏功能。首先，我将简化核心游戏循环（game loop），以便将其应用于各种游戏模式。然后，我将添加工具，方便其他人参与贡献。我的目标是构建一个开放的游戏协议，可以通过它创建有趣和独特的世界。

特别感谢 Will Robinson 在游戏设计上提供的帮助。感谢 Lethe 和 Biscaryn 对我的工作进行检查。感谢 Small Brain Games discord 的成员参与试玩并提供有见地的反馈。

_欢迎关注FunBlocks Twitter账号：_[_https://twitter.com/FunBlocksFun_](https://twitter.com/FunBlocksFun)

---

*Originally published on [FunBlocks](https://paragraph.com/@funblocks/dark-seas)*
