# 全链游戏鼻祖 Dark Forest 深度拆解分析

By [Gametaverse 中文頻道](https://paragraph.com/@gametaverse) · 2023-08-08

---

介绍

Dark Forest是一个基于以太坊区块链的去中心化策略游戏，玩家可以在游戏中采集资源、建造基地、发展科技、收集武器，与其他玩家进行战斗并争夺资源。

在Dark Forest中，每个玩家都掌握着自己的星球，并需要在星球上采集资源，建造基地和发展科技来提高自己的战斗能力。玩家可以使用资源生产建筑、科技研究和武器制造设施，以便在战斗中获得优势。

当玩家在星际空间中飞行时，他们需要通过不断的侦察和探索来发现其他星球和资源。当两个玩家同时发现同一颗星球时，他们可以选择对该星球发起进攻或者选择逃离。在进攻时，玩家需要使用自己的武器来攻击对方的基地，并夺取对方的资源。

Dark Forest的特点在于游戏完全基于区块链技术，每个玩家的星球和资源都存储在区块链上，无法被篡改或者删除。此外，Dark Forest也是一个去中心化游戏（DeGame），没有中央服务器控制游戏进程，而是由所有玩家共同维护和决策。

Dark Forest 也是首次在全链去中心化游戏中引入战争迷雾系统的游戏，得到了V神的肯定。我们将在本文深度拆解，来探讨这样一个即时策略游戏如何在全链环境中实现。不定时@DfArchon 会举办”Community Round“，感兴趣的同学也可以参加测试一下。我们从游戏类型说起，先对MMORPG和MMORTS游戏做对比：

*   MMO -RPG游戏：多人在线角色扮演，开放世界，游戏有始无终，游戏的乐趣在于身临其境体验故事性和元宇宙游戏世界。比如，魔兽世界。
    
*   MMO-RTS游戏：多人在线策略对抗，相对小的封闭世界，游戏一轮有始有终，游戏的乐趣在于在故事背景下的多人对抗，需要用到策略来获得资源发展然后消灭敌人。典型代表，星际争霸，魔兽争霸，一局在20-40分钟。
    
*   DF是MMORTS游戏，因为可以同时参与的人多（可达上千人），区块链TPS有限制，所以一轮（round）持续时间在10天左右，胜负以天梯得分排名为准，得分主要来自于游戏中获取的资源（PVE的自由获取和PVP的掠夺）。**游戏暂停期间，用户不可与游戏合约交互**。
    

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

实盘操作
----

最早只有官方举行 Official Round 的时候，需要邀请码（key）登录来参与，现在有了lobby功能，任何人都可以创建自己的round，所以就有了所谓的 community  round（类似于社区举办的一场比赛）。进入主页 [https://zkga.me/](https://zkga.me/) ，点击 ”Create Lobby“，会进入 Lobby 设置页面，如下图

![](https://storage.googleapis.com/papyrus_images/36399ef816eaf5be244d7b07c0175000964290506c0ac1b3cc7042b7c5811a74.png)

Game settings：通过更改能量/银币的恢复速度以及航行速度可以修改游戏速度。

World Size：通过修改宇宙半径来改变地图的大小。

Space Type & Biome: 选择游戏地图。

Planets：设定行星的基础参数。

Player spawn：生成玩家的参数设置。

Space junk：该游戏道具的参数设置 。

Capture zones：占领区参数设置。

Artifacts：该游戏道具的参数设置 。

Admin permissions：设置是否打开白名单玩家。

Advanced Snarks：战争迷雾参数设置。

关于 Lobby 更多的使用技巧，请参考这篇官方的解答：

[https://blog.zkga.me/introducing-dark-forest-lobbies](https://blog.zkga.me/introducing-dark-forest-lobbies)

Dark Forest 表面上看起来很复杂，但其实它的基本游戏规则很简单：行星有能量值，此能量值会随着距离的延展而衰减，行星间的跳跃就是互相攻击，攻击的胜负是以衰减后的能量值大小来判定。当然了，也已经有很多文章和视频来讲述如何玩游戏，这里不做更细致的分享。

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

开发者文档分析
-------

[https://dev-guides.zkga.me/](https://dev-guides.zkga.me/)

开发者文档对游戏的开发架构做了一些框架性的解释，分别针对插件开发者，网页客户端开发者，游戏合约开发者和ZK电路开发者。

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

Connect to the Blockchain

游戏运行在xDai的layer2上面，也就是现在的Gnosis Chain，因为游戏在运行中需要和合约有大量交互，所以内置RPC节点。Gnosis 团队甚至为这个游戏开通了一个游戏专用节点。

Plugins

黑暗森林允许玩家通过插件系统自定义默认的网页客户端。 插件是玩家可以编写的代码片段，用于生成游戏数据的替代视图、自动化常见的游戏流程，甚至重新设计游戏皮肤。 从本质上讲，Dark Forest 允许玩家以他们喜欢的任何方式与网络客户端进行编程交互。

Mining

黑暗森林的关键机制是它的密码战争迷雾。 当第一次加入游戏时，您不知道其他玩家所在的位置。玩家必须计算哈希值才能发现宇宙中的兴趣点，例如行星和其他玩家的位置。 这些哈希值保存在浏览器的本地存储中，并被视为秘密数据。默认情况下，Dark Forest 默认 Web 客户端使用单线程 Javascript 矿工来探索宇宙，但您可以采取多种措施来提高哈希率，比如改变挖掘按钮旁边的CPU核心。 如果您尝试将内核数设置为大于您计算机的实际内核数，您的矿机性能将趋于平稳。

![](https://storage.googleapis.com/papyrus_images/0c57c089c469f1cb167317614604d0db49da08fdceef606847d396338262c132.webp)

![](https://storage.googleapis.com/papyrus_images/52a7ba6c34a9192b040c425e40bcff232c6839d349c9f01c698899e25f05d951.webp)

当玩家的矿工发现宇宙区域地图时，网页客户端会将与这些未发现区域相关的信息保存到浏览器的本地存储中。黑暗森林将数据保存到 IndexedDB。 玩家也可以通过运行一台远程服务器来充当探索位置地图的矿工。

Snarking

黑暗森林由 ZK-Snark 技术提供支持，ZK-Snark 技术是一种密码技术，可用于在不泄露函数的输入或逻辑的情况下证明函数的正确性。黑暗森林使用这种技术来验证游戏中的移动是否有效，而不会向在链上窥探的人们透露行星的位置。 这种技术（Zk-snark Proof Generation）在计算上非常昂贵！ 所以该ZK-Proof将计算移到浏览器之外，需要本地运行一个Node.JS。当然了，游戏也允许使用一台远程服务器来运行这个服务。

总结
--

作为一个有着极强创新性的全链游戏，Dark Forest 的发展确显得缓慢。一个可能的原因是，这是一个社区推动的项目，虽然可以保证去中心化，但也因此影响了开发效率。上次 official round是在2022年2月。Webclient更新是在2020年10月，第三方（社区）插件更新还稍微活跃一些，包括2022年7月的nightmarket（匿名交易行星坐标），2022年3月的lobby。

---

*Originally published on [Gametaverse 中文頻道](https://paragraph.com/@gametaverse/dark-forest)*
