2011-03-06 108 views
2

我正在使用canvas構建遊戲。存儲地形狀態的最佳方法是什麼?

我有在遊戲初始化時隨機生成的地形。地形可以通過遊戲中的武器進行破壞。

Here is an example of the terrain I want to generate

當產生這種二維地形...

  • 是它最好只是峯值存儲每個x座標,或存儲每個像素是地形?
  • 當通過武器傷害移除一部分時,我應該將該像素切換爲關閉狀態,然後重新繪製地形,或重繪地形,同時通過存儲的武器傷害檢查每個是否爲?或者,在武器損壞時,我是否應該調整地形狀態中的每個峯值然後重新繪製?

回答

2

我想你可以安全地存儲2D地形的地形。擁有大小爲3000x1000的bools可能看起來很可怕,但放心,遍歷這樣的數組仍然非常快。您可以遍歷整個陣列10次,仍然保持流暢的動畫速度。

1

Yey,Scorched Earth!據我記憶,你甚至可以在原來的表面之下炸掉圓形地形(越級!)。地形將崩潰並填補空白。因此只存儲曲面的多邊形頂點座標是不夠的。每像素陣列方法似乎是一個更好的主意。

重繪問題仍然困難。我想以30fps重繪整個畫布是不可行的。也許你可以只重繪受武器影響/破碎的像素。

+0

以30fps重繪整個畫布對於特定的最大分辨率和最小的計算機規格來說是完全合理的。 – Phrogz 2011-03-07 15:49:25

0

假設你將地形劃分爲子區域。

前:

+---------------------------+ 
|   ______  /| 
| ___ / \ / | 
|/ \__/  \___/ | 
|-/       | 
|       | 
|       | 
|       | 
+---------------------------+ 

後:

+---------------------------+ 
| | | ___|__ | | | 
| _|_ |/ | \ | /| | 
|/| \__/ | \|__/ | | 
|-/--|----------------------| 
| | | | | | | 
| | | | | | | 
| | | | | | | 
+---------------------------+ 

你可以有三種狀態,這些小節:

  1. 全地形
  2. 所有空白
  3. 分裂

這應該給你一個體面的優化,而不會嚴重犧牲代碼的可讀性。

相關問題