影片
這一篇要教你如何製作自己的區域。
在 My Mud Game 中,所有的物件都是從檔案讀取轉換而來,包含道具、裝備、NPC、Mob...等。
一個物件通常對應到一個特定的檔案,檔案的名稱都為數字,比如說...
index = 1 的 mob,其對應的檔案為 mob/001.txt
index = 2 的 mob,其對應的檔案為 mob/002.txt
...
依此類推。
1.一個區域對應到一個檔案。
區域部分的設計,如果使用一個房間對應一個檔案的話,那就會產生許多極為相似的檔案,
因此在設計上,就改以一個區域對應一個檔案的方式。
比如說...
index = 1 的 區域,其對應的檔案為 map/001.txt
2.座標軸左上為(0,0),右下為 (n,n)
打開 map/001.txt 檔,裡面除了該區域的一些基本設定外,你還會發現有很多房間的設定。
每個房間都以座標軸來對應,坐標軸後面的括弧裡的資料便是該房間的設定值。
在 My Mud Game 中,
x 軸是從 0 開始,最左邊為 0,往右遞增;
y 軸也是從 0 開始,最上面為 0,往下遞增。
在一個 5 x 5 的區域內:
x = 0,y = 0 的房間 (0,0),表示的是該區域"最左上角"的房間。
x = 0,y = 4 的房間 (0,4),表示的是該區域"最左下角"的房間。
x = 4,y = 0 的房間 (0,0),表示的是該區域"最右上角"的房間。
x = 4,y = 4 的房間 (4,0),表示的是該區域"最右下角"的房間。
3.區域必須為"方形"
一個很重要的觀念是,在 My Mud Game 裡的區域,都必須是"方形"的區域!!
可以是"正方形"或者"長方形"。
這樣的設計在程式撰寫上會比較容易處理,並且也會比較容易繪製小地圖。
4.地圖檔的設定
打開 map/001.txt,你會看到如下的設定,分別說明如下...
(1) 區域設定
id = "heterod town" <== 區域 id
name = "赫特洛鎮" <== 區域名稱
des = "有著地下城的一個小鎮" <== 區域描述
area = "dungeon" <== 保留屬性
owner = "world" <== 保留屬性
(2) 區域內所有房間的共通設定
std_bg = "bg/bg_winter.png" <== 該區域所有房間的背景圖
std_name = "地面區域" <== 該區域所有房間的預設名稱
std_des = "這裡是地下城的地面區域。" <== 該區域所有房間的預設描述
std_darkness = 0 <== 該區域所有房間的預設黑暗設定,darkness = 1 表示黑暗房間,0 表示明亮房間
bgm = "town.mp3" <== 區域的背景音樂
map = { <== 區域的房間配置
"■↓■↓←",
"┌┼┬┼←",
"├┼┼┼←",
"├┼┼┼←",
"└┴┴┴←",
}
其中的...
□ ■ ○:代表沒有出口的房間,在地圖上顯示的顏色會不相同。
→ ← ↓ ↑:代表有一個出口的房間,箭頭指向的地方就是出口。比如說→,表示東邊有出口。
┌ ┐ └ ┘:代表有兩個出口的房間,線條指向的地方就是出口。比如說┌,表示東邊與南邊有出口。
┬├ ┤┴:代表有三個出口的房間,線條指向的地方就是出口。比如說┬,表示東邊、西邊與南邊有出口。
┼:表示東西南北方向都有出口。
(3) 個別房間的設定
rooms_data = { <== 每個房間的設定,有需要特別做設定的房間,才需要將其設定加到 rooms_data {} 中
x04y04={ <== 房間的座標軸
},
....
}
x03y04={ <== x=3, y=4 (3,4) 房間的設定
name="道具屋", <== 房間的名稱
des="這裡是道具屋。", <== 房間的描述
stores="1:1", <== 在此房間加入 index = 1 的商店物件,數量為 1 個
item_desc= { <== 房間中的特別描述,用 search 指令可以看到
paper=" list:列出商店所賣物品。\n slist:列出身上所能販售的物品。",
},
actions="101:1|102:1|103:1", <== 在此房間加入 action index 為 101, 102, 跟 103 的物件,數量各為 1 個。
water=1, <== 設定此房間為水源區,可以使用 fill 指令將容器裝滿水
npcs="1:1|2:1|3:1", <== 在此房間加入 index = 1, 2 跟 3 的 NPC 物件,數量各是 1 個
mobs="101:3", <== 在此房間加入 index = 101 的 mob 物件,數量是 3 個
},
(4) 房間物件的設定
房間內如果想加入物件,可以使用...npcs="1:1|2:1|3:1", 的方式加入。
這邊表示的是..."在此房間內加入 index 為 1, 2 跟 3 的 npc,數量各為 1 個"。
每個物件之間,需要使用分隔符號"|"區隔開來,這個"|"不是英文的小寫"L",而是鍵盤上 backspace 下方的分隔符號,
需要按住 shift + "\" 鍵才能輸入。
可在房間內加入的物件有...
mobs、npcs、items、equips、actions 和 stores。
設定方式為 index1:數量1|index2:數量2|index3:數量3.....
(5) search 指令可查看的特殊設定 item_desc
item_desc 是專為 search 指令所設計的,當玩家使用 search 指令時,便會列出 item_desc 裡面所設定的
屬性,比如說...
item_desc= { <== 房間中的特別描述,用 search 指令可以看到
paper=" list:列出商店所賣物品。\n slist:列出身上所能販售的物品。",
},
當玩家下 search 指令時,便會看到有 paper 這個項目,點選 paper,就會秀出後面設定的文字。
以上的說明,我想應該很多人看到頭都暈了,但其實直接去實作過後,你會發現並不是那麼難。
上面說的真的看不懂也沒關係,只要懂得複製、貼上,實驗個兩三次,我想應該就會懂了。
By Ghoster 2020/05/28
|