隐藏SVG中的关键数据

时间:2016-10-10 08:15:10

标签: javascript d3.js svg

我正在为我开发的游戏制作SVG生成的地图。我对开源游戏没有任何问题,它使用HTML和SVG等开放式网络技术。没问题。

但与此同时,我希望玩家不要看到或反向设计整个世界的地图(以保持真正的探索)。现在我使用一个秘密而不是版本控制的种子生成地图。因此即使算法已知,好奇的玩家也可以使用开源代码来生成“类似游戏的世界”,但不是那么精确。这解决了“全球”问题。

但是,由于SVG作为单个Voronoi图在页面上呈现,因此所有数据(我不介意点的坐标)都是可提取的。可以从SVG获取资源,土地类型,生物群落,气候等数据,以便在寻找定居点的良好位置方面占上风。

知道怎么预防吗?玩家的视力有限,所以我想到了:

  • 根本没有渲染整个Voronoi图(只是可见部分),但这可能有点棘手(可能还没有看过),
  • 仅将资源/地块图块数据插入SVG图形到可见位置

我可以看到这两种方法的好处,如果正确完成,它甚至可以提高性能(不会使用更少的数据渲染整个事物/渲染),并在不影响性能的情况下实现更大的世界。

有哪些其他想法/编程/架构方法可以帮助解决这个问题?

(我正在使用Vue.js,d3.js,svg-pan-zoom和Laravel后端,以防它有所帮助。)

1 个答案:

答案 0 :(得分:-2)

你提出的想法是完美的,但要实施它们,你需要努力工作,并花费很多时间。

我有个建议。是否适用于大多数用户。也许有些用户会“破解”它。但我相信它会在95%的时间内起作用。

您可以创建一个非常大的矩形,从左上角0,0到右下角。矩形将是白色的,它将覆盖所有其他形状。

这样,如果有人下载SVG,我们什么都看不到。只是一个大的白色矩形。

在你的游戏HTML中,你可以添加一个CSS选择器来隐藏这个矩形。

如果您使用此方法,大多数用户(没有照片编辑软件)将无法看到地图。

知道如何检查HTML中元素的用户可能会看到地图。但我相信大多数人会看到一个白色的盒子,不会相信背后有什么东西。

我认为这是一种简单的临时方法,你可以做其他更防御的方法。