flash mmorpg地圖設計

網上看一篇關於目前幾個流行flash mmorpg地圖實現的分析,這裏也想說說自己的一些看法。

常見的三種方式:
1、整圖
2、Tile元素拼裝
3、柵格化切片

整圖

11

整圖加載很好理解直接加載一張背景圖。這種方式比較適合小場景(面積不要超過兩屏),例如可以用來做悅來客棧、家裏的菜園子或者王員外的內院。

整圖的表現最大的優點就是可以讓美工隨意發揮,畫面可以做得很細緻。當然缺點也比較明顯無法做得太大,否則加載將是個漫長的過程,即使玩家有耐心去 等待加載,但是會浪費客戶端的很多內存容量。一個10屏*10屏的地圖,客戶端顯示每次只能顯示一屏,有99屏的東西是暫時用不到的。

Tile元素拼裝

121I16044-1

Tile就是斜視角地圖中的一個標準菱形,這在許多的Tile Game裏面最常見(紅警、帝國時代)。這種方式會實現準備好各種地形,比如草地、沙漠、水面、雪地。理論上這種方式可以滿足任何地圖需求。

Tile元素拼裝的優點是素材包小,因爲他是提取了大量的可重複利用的素材在重複使用。素材包小可以節省素材加載時間。

不過Tile元素拼裝的方式也不是誰都可以玩得好的,主要問題其實在於這些可重複利用的素材必須是2方連續的。要想讓地圖表現力好,Tile的製作 比較關鍵。這並不像整圖那樣,美工可以大筆一揮畫出幾種色彩層次。如果Tile素材製作的不好,地圖看起來會非常死板。同時Tile元素的製作也必須處理 好各種地形的接壤問題。

比如你有4種地形:草地、水面、沙地、雪地,那麼你就必須創建草地和水面交界的效果,水面和沙地,沙地和雪地。。。。然後草地和水面的交界你還需要 考慮草地的上面有水、下面有水、左邊有水、右邊有水、左上角。。。。。總之就是,你希望你的地圖看起來舒服就必須窮舉各種情況,然後還要一遍一遍調整。但 是一旦我們做好了這一切,那麼將會非常受益。如果你的開發人員有空還可以幫你設計非常好的隨機生成算法。(像帝國時代的編輯器)

柵格化切片

121I1H94-2

柵格化切片他的背景繪製其實還是以整圖的方式完成的,只是按照一定的大小把它切成了一些固定大小的小圖,比如250*250或者300*300,然 後給每張圖定好編號,通常是map_行_列。地圖加載的時候,我們根據場景的座標加載需要顯示的切片。當然加載的數量通常會比你看到的要多一點,事先預加 載一些。

柵格化切片的方式事實上我們在電子地圖上見得很多,當然電子地圖是可以進行縮放的,所以他所做的切片通常還會配合縮放倍數做不同倍數下面的分割。

使用柵格化切片表現力上跟整圖一樣,在製作的時候可以讓美工任意發揮。同時也能解決一部分內存浪費的問題。這看起來是個非常完美的方案,甚至可以讓我們做無縫地圖。可是事實並非如此的,儘管我們有着無窮的想象力,但是我們還是會在製作大地圖上遇到問題。

第一個問題——地圖的設計
我曾經一廂情願的規劃了一張9000px*7500px的地圖讓美工去做設計,結果問題來了。這樣一張大地圖在ps裏面打開都是一個漫長的過程,每次做一次存盤都可以去喝杯茶了。儘管效果可以很好,但是等待的過程幾乎讓人吐血。

第二個問題——地圖編輯
我們的地圖是在自己開發的air編輯器,儘管這時候的地圖已經是ps合層好的了,但是在編輯器中操作仍然是個惡夢。

關於障礙數組
其實對於障礙數組也是地圖設計中一個需要考慮的問題的因爲這會關係到你的路徑算法和物體遮擋,最常見的作法就是建立一個2維數組對應到 地圖中,然後使用A*來實現。當然你也可以不這樣記錄,直接記錄地圖上物體底面積形成的多邊形。尋徑的時候採用兩點連線然後繞過障礙定點,遮擋關係也利用 這些多邊形頂點做計算。甚至你也可以不用2維數組改用object的方式只記錄那些被佔用了的底面積。。。

但是無論採用什麼方式,你的地圖大必然參與到引擎中的物體就會多,存儲的內容就多。假設你也像我們一樣通過2維數組記錄障礙,那麼數組同樣也是限制你實現大地圖的一個問題(儘管不是那麼明顯)。因爲你同樣會需要浪費到很多內存存大量的暫時用不到的信息。

上面提到了對背景做切割,2維數組如果你願意也可以做切割來實現隨需加載,對於地圖上的建築同樣如此。不過我是感覺這樣做沒有多大意義。從玩家的角度看,真正在乎你的大地圖製作的有多少,難道因爲你做了個大地圖玩家就一定會買賬麼?

個人建議

實際的開發其實我認爲並不一定那種方式更好,取決於公司的開發資源和場景的實際情況,你對客戶方的考慮。上面的三種方式我們可以相互結合。

我們可以用Tile拼裝的方式結合簡單的表隨機算法做個平鋪工具給美工來快速建立一些地圖的局部,讓他們直接另存出圖片,導入photoshop製作整圖。當然如果沒時間的話隨便找個編輯器也行,反正比photoshop的複製會快很多。

另外,我們可以在設計引擎的時候將整圖和柵格化切圖的方式一起考慮,對於小場景使用整圖加載,對於大場景使用切片加載。

發佈了63 篇原創文章 · 獲贊 26 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章