2016-10-10 57 views
2

我爲我正在開發的遊戲創建了一個SVG生成的地圖。我對開源遊戲並沒有任何問題,它使用了開放的網絡技術,如HTML和SVG。那裏沒有問題。隱藏來自SVG的重要數據

但是同時我希望玩家不能看到或逆向工程全世界的地圖(保留真正的探索)。現在我使用一個祕密而不受版本控制的種子生成地圖。因此,即使算法已知,好奇的玩家可以使用開源代碼來生成「遊戲般的世界」,但不是那麼確切。這解決了「全球」問題。

但是,由於SVG在頁面上呈現爲單個Voronoi圖,所有數據(我不介意點的座標)都是可提取的。可以從SVG獲取資源,土地類型,生物羣落,氣候等數據,以便爲定居點找到好的位置。

任何想法如何防止?玩家視力有限,所以我想到了:

  • 根本沒有渲染整個Voronoi圖(只是可見的部分),但這可能會很棘手(可能還沒有看過它) ,
  • 資源/土地瓦片數據到SVG圖形插入僅可見位置

我可以看到這兩種方法的好處,如果做得正確,甚至有可能提升性能(不渲染整個事情/渲染用更少的數據)並導致更大的世界而不影響性能。

任何其他想法/編程/體系結構方法來解決這個問題?

(我用Vue.js,d3.js,SVG-平移變焦和Laravel後端以防萬一它有助於。)

+0

聽起來好像你只是在遊戲世界中基於用戶當前座標進行部分渲染。在3D遊戲編程中,我們經常使用稱爲四叉樹的技術進行部分渲染,也許您可​​以在這裏做類似的事情?您可以存儲世界的最小參數,例如其最大x/y值,以便您可以將玩家當前位置映射到樹中,然後根據樹中當前位置渲染到畫布。 – Alex

+2

除了我的第一條評論之外,如果您不希望所有資產一次性下載到客戶端,則可以進行某種漸進式渲染......隨着用戶遍歷世界(並且變得更深或更高在樹中),那麼你可以開始逐步提供這些資產來更新你的畫布。這也會減少你的初始加載時間,但要注意,如果玩家的連接速度很慢,它也會有缺點 - 這一定是瓶頸,但它肯定有可能 – Alex

+0

@Alex我設法實現它,通過數學找到兩個當前voronoi cell用戶的高級深度鄰居只能在屏幕上渲染並且只能渲染屏幕上的那些(這也改善了性能)。我將它們從用戶身上隱藏起來,並在玩家周圍放置了一個圓形渲染區域以創建一個「視域」。漸進式渲染也是一種很好的方式,因爲遊戲節奏非常緩慢,旅行在現實生活中需要花費幾個小時甚至幾天的時間。沒有人有Internet緩慢。 :)這是一個偉大的妥協。對不起,很長的回覆,但如果你可以重新格式化你的評論作爲答案,我會接受它。 –

回答

-2

,你給是完美的想法,但實現它們,你需要努力工作,並花費很多時間。

我有一個建議。是否適用於大多數用戶。也許有些用戶會「破解」它。但我相信它會在95%的時間裏工作。

您可以創建一個非常大的矩形,從左上方的點0,0直到右下方的點。矩形將是白色的,並且將會覆蓋所有其他形狀。

這樣,如果有人下載SVG,我們什麼也看不到。只是一個巨大的白色矩形。

在你的遊戲HTML中,你可以添加一個CSS選擇器來隱藏這個矩形。

如果你遵循這種方法,大多數用戶(沒有照片編輯軟件)將無法看到地圖。

知道如何檢查HTML元素的用戶可能會看到地圖。但我相信他們中的大多數人會看到一個白色的盒子,他們不會相信背後有什麼東西。

我認爲這是一個簡單的臨時方法,你可以在做其他更防禦性的方法之前做。