2009-04-08 43 views
9

我正在編寫一個小型俯視角度RPG遊戲,這個遊戲很多都是經典的Ultima系列遊戲。我需要一個快速而骯髒(比骯髒)更快的設計大型地圖的方式 - 比如說1000塊瓷磚×1000塊瓷磚,我需要一些幫助,思考如何去做這件事。構建遊戲地圖的最佳方法

我會說有一個很好的50-60不同類型的瓷磚 - 樹林,河流,平原等

到目前爲止,最好的我能想出是

  • 定義一個數組(或一些類似的結構)來保存兩個關鍵信息 - 一個位置/座標標識符,以及一個1-60的整數,定義它是哪種類型的瓷磚。

  • 在光柵編輯應用程序中,繪製一張1000px x 1000px的圖像。使用50種不同顏色的調色板,我繪製了我的地圖--1個像素對應1個瓷磚。對於給定的水磚,我會畫一組藍色的某個像素。保存爲.gif或.png。

  • 編寫一些處理器,然後分析上述gif/jpg並逐個像素地分析它。根據像素的RGB值,它決定了圖塊類型。處理器然後代碼生成一些例程,填充地圖數組。

到目前爲止,我在想一定有一個更簡單的方法。

回答

2

聽起來是一個不錯的方式給我。但是,您可能會發現創建自定義地圖構建器非常簡單。

另一種選擇可能是編寫一個程序,該程序允許您定義主要功能的位置,而生成器程序將填寫其餘的部分。 (例如:河流從x1,y1運行到x2,y2。「large」forrest以x,y等爲中心)。這可以讓你從一個更小的地理特徵文件中定義一個大的地圖。把它看作有點像做矢量繪圖,而不是指定柵格中的每個最後一個像素。 :-)

11

是否需要基於磁貼?看看丹尼爾·庫克的網站,Lost Garden,他不僅給你一些美味的免費藝術作品,但他討論了圖像的任意位置的出現在遊戲中,而地磚:

「曾幾何時,你需要使用 小廣場磚的一切。 如今,有沒有真正的需要 使瓷磚基於2D引擎。隨着 全阿爾法任意圖像和 大量的填充率,可以把 一起這樣的比賽一個貼紙書 下降你的圖形在任意 位置和層像一個瘋子 像遊戲一樣水族館看起來很棒, 瓷磚無處可見。「

存在也對使基於IndieLib一個遊戲編輯器step-by-step instructions在那裏的鏈接。

+1

+1開箱思維! 我會在這裏通宵達旦! – 2009-04-08 23:45:53

1

另一種選擇是生成(像素)映射或直接在遊戲地圖。當然,這取決於你的世界的大小,如果你有很多特定的資源(一個城市在這一點上,在這一點上的礦...)

有關於這個問題在這個問題上很多文章關於遊戲「流氓」,這可能是相當有用的(例如,嘗試RogueBassin

他們還談到了數據結構以允許更多的變化(例如擁有基本圖像,並在您定義地圖數組中的表示時隨機添加一些(小)「邊緣」圖像。例如爲草添加一些小石頭)。其他效果如最終版V中所示,其中一些屋頂元件在通過它們時變得透明,也基於這些結構。

我們發現擁有圖像(在我們的例子中,一組圖像)很容易,因爲您可以在有空時升級外觀(不再是矩形森林!),並專注於特定的任務位置。

問候

紀堯姆

2

我建議你有你的位置信息爲您的存儲數據結構,你在它查找索引信息,而不是東西。 I.E.

int get_terrain_type(int x, int y) { 
    return terrain[x][y]; 
} 

(不完全肯定這不是你的意思,但我想我把它放在那裏。)