基岩牢籠/建立主題
此頁面將吿訴你如何創造一個基岩牢籠主題。
準備
首先,我們需要準備一些必要的東西:
- 安裝了基岩牢籠整合包的Minecraft。
- 基岩牢籠主題包模板(Release裡的
Bedrock.Cage.Pack.Template.zip
)。 - 好用的文本編輯器。
構成
基岩牢籠的主題由三部分組成:主題(theme)、地圖(map)和下一個抽取池(next pool)。
主題,嚴格來説應該叫主題索引,用於吿訴遊戲應該啟用哪個主題,以及起始地圖應該是哪一個。
地圖用於載入遊玩區域,同時用於存放僅該遊玩區域使用的函數。
下一個抽取池用於決定如何挑選下一個地圖。它是連接各個地圖的橋樑。
使用創作者模式搭建地圖
為了便於創作地圖,基岩牢籠提供了創作者模式。
啟用創作者模式
要啟用創作者模式,在建立地圖時將遊戲模式設定為創造模式即可。其他因素不影響創作者模式的啟用。
為了提供更好的創作體驗,這裏推薦將世界類型設為「基岩牢籠(創作者模式)」。如果使用普通類型,因為那個類型主要用於遊玩,整個世界會有那麼一點暗……
各區域介紹
你應該注意到了,在正常遊戲中存在的天花板被拆掉了,牆壁上的基岩被替換成了混凝土,地面多出了兩個結構方塊。
為方便創作,我們將正常遊戲中存在的天花板移除了。如果要加入天花板,請執行/function _ct:ceiling_close
。如果要移除天花板,請執行/function _ct:ceiling_open
。它們都是創作者函數,僅限於創作者手動執行,不會也不應在任何地方調用。
地面上的兩個結構方塊框定了遊戲區域,同時用於在完工時儲存結構。周圍是橙色混凝土的結構方塊是小型結構方塊,其儲存的結構用於小型地圖;周圍是紫色混凝土的結構方塊是大型結構方塊,其儲存的結構用於大型地圖。
牆壁上的混凝土主要用於區分遊戲區域的垂直層。從下到上,遊戲區域的垂直層被分為地下層、地表層和天空層,每個層佔16格。垂直層對實際遊戲沒有影響,這僅是為了便利而誕生的。
思考一下目標
在正式搭建之前,請先考慮一下:你要怎麼完成這個地圖?
無論是什麼地圖,其唯一的通關方式是:走進末地折躍門。
而末地折躍門的限制條件有:
- 無:無限制。
- 在此基礎上,
exit_state
決定了是否預設開啟折躍門。- 如果預設關閉了折躍門,你需要想辦法執行函數
brc:game_command/open_gateway
來打開它。否則,你的地圖就成一個死局了。
- 如果預設關閉了折躍門,你需要想辦法執行函數
- 在此基礎上,
- 目標:殺死所有目標實體後,折躍門開啟。
所以,在搭建地圖時,你要想一下:
- 我應該把折躍門放在哪?
- 我應該讓玩家怎麼打開折躍門?
- 我應該讓玩家怎麼進入折躍門?
搭建地圖
……沒什麼好説的。怎麼搭建是你的自由。
不過,這裏可以提供一些資訊:
- 基岩牢籠整合包包含WorldEdit模組。它應該對一些人有用。
- 你可以使用創作者函數來讓一些事情簡單一點。
- 屏障上面的火不會熄滅。
- 雖然現在你看得一清二楚,但在正常遊戲時,天花板是封死的,而且沒有環境光照。記得加入光源。
- 在處理地圖時,生物的
NoAI
標籤會設為false
。
特殊標記
在建好地圖後,我們有必要加入一些必要的東西:我們需要起始點來標記玩家的位置;我們需要目標點來標記折躍門的位置;如果你設定了目標或Boss的存在,你還需要標記被視作目標或Boss的生物。
特殊標記工具
執行/function _ct:tools
即可獲得用於加入特殊標記的工具。請注意,這個操作會清空你的物品欄。
然後,介紹一下你在執行命令後獲得的四個物品:
- 位於快捷欄7的物品展示框:用於放置目標點。
- 位於快捷欄8的盔甲架:用於放置起始點。
- 位於快捷欄9的命名牌:用於標記目標。
特殊標記的本質是計分板標籤
如題,特殊標記的本質是計分板標籤。這意味着只要擁有指定的計分板標籤,對應的實體就會表現出相應特徵,而與其他因素無關。
因此,你可以透過使用/tag
加入計分板標籤。
這可以用於避免命名牌導致的極其惱人的命名問題;無法用工具加入的特殊標記也可以由此加入。[注 1]
特殊標記的作用
- Goal(目標點):目標點所在的位置會生成折躍門。若有多個目標點,這些目標點所在的位置會同時生成折躍門。
- Start(起始點):進入地圖時,玩家會在起始點所在的位置出生。若有多個起始點,遊戲會隨機選擇一個起始點作為遊戲的最終出生點。
- Target(目標):用於判定折躍門的開啟。
- Player(玩家):此實體被視作玩家,會在進入下一個地圖時隨玩家一同傳送至起始點,並且在進入命運大廳時不會被清除。
- Keep(保留):進入下一個地圖時,對應實體不會被清除。但在進入命運大廳時仍會被清除。
儲存結構
如前所述,地面上的兩個結構方塊用於在完工時儲存結構。
右擊對應的結構方塊,填寫結構名稱,點擊「儲存」,就行了。
但結構方塊被埋在地下了!
不用擔心。
不知道你有沒有注意到,基岩地板的下面是空的。這也是特意挖空的:在正常遊戲中這裏的確是填滿了基岩。如果在上面碰不到結構方塊,那就去下面吧。
你可以開旁觀者模式溜到下面,也可以使用命令/function _ct:tp_floor
,
編寫主題資料包
在準備完用於主題的地圖後,我們就要正式着手於主題資料包的編寫。
在接下來的説明中,我們假設你已經下載了主題包模板。
導入結構檔案
把你剛剛儲存的結構檔案[注 2]複製到主題包模板的data\<命名空间>\structure
裡。
雖然brc
命名空間裏有一個structure
資料夾,原則上你也可以用那個命名空間,但基於避免混淆的原則,我們還是推薦您選擇其他命名空間。
新建主題
首先我們需要新建主題。
在data\brc\function\theme
資料夾裡有一個名為theme.mcfunction
的模板檔案,其內容如下:
# id:当前主题的id。需要额外为地图信息指定主题id。
data modify storage brc:theme_info id set value "theme"
data modify storage brc:map_info theme set value "theme"
# title:主题标题。应当为文本组件。
data modify storage brc:theme_info title set value '"title"'
# summary:主题摘要。应当为文本组件。
data modify storage brc:theme_info summary set value '"summary"'
# desc:主题描述。应当为文本组件。
data modify storage brc:theme_info desc set value '"desc"'
# start_map:此主题的起始地图。起始地图的路径为map/<id>/<start_map>。
data modify storage brc:theme_info start_map set value "map"
# 返回值用于验证
return 1
照着備註一個個修改最後一個參數就可以了。
在修改完成後,記得重新命名theme.mcfunction
。遊戲透過檔案名稱來區分不同主題。
新建地圖
然後是新建地圖。地圖存儲於data\brc\function\map\<主题ID>
資料夾下。
通常而言,這個資料夾並不存在。你首先需要在data\brc\function\map
下新建一個名稱為主題ID的資料夾,然後在這個資料夾下新建一個函數檔案,其名稱為上文中填寫的起始地圖ID。
其內容可以參考在data\brc\function\map\theme
資料夾下的map.mcfunction
模板檔案,其內容如下:
# id:当前地图的id。建议与函数名称一致。
data modify storage brc:map_info id set value "map"
# title:地图标题。会在载入地图时用作标题。
data modify storage brc:map_info title set value "title"
# summary:地图摘要。会在载入地图时用作副标题。
data modify storage brc:map_info summary set value "summary"
# desc:地图描述。
data modify storage brc:map_info desc set value "some description"
# content:要加载的模板的命名空间ID。
data modify storage brc:map_info content set value "brc:"
# large:地图是否占4个区块。 (true——4个 false——1个)
data modify storage brc:map_info large set value false
# next_pool:地图使用的下一个抽取池。用于决定下一个地图。
data modify storage brc:map_info next_pool set value "next_pool"
# exit_state:是否默认开启出口。(true-目标点变为折跃门;false-不处理)
data modify storage brc:map_info exit_state set value false
# exit_condition:开启出口的条件(clear-杀死所有目标实体;none-无)
data modify storage brc:map_info exit_condition set value "clear"
# death_result:死亡后的处理方式(none-无;quit:死亡后退出游戏)
data modify storage brc:map_info death_result set value "none"
# gamemode:玩家使用的游戏模式(adventure-冒险模式;survival-生存模式。不推荐填写为其他游戏模式)
data modify storage brc:map_info gamemode set value "survival"
# enable_tick:是否启用地图内游戏每刻函数(true-启用;false-不启用)
data modify storage brc:map_info enable_tick set value false
在建立完初始地圖後,試着按照相同的格式建立其他地圖資訊函數。
地圖用函數
僅用於指定地圖的函數應當放置於data\brc\function\map\<地图ID>
資料夾中。
這不僅是為了方便管理,在此資料夾下的特殊函數會在遊戲中自動載入:
load.mcfunction
:在處理地圖時載入。tick.mcfunction
:在當前地圖內每刻載入。僅在啟用相關配置時生效。
新建抽取池
下一個抽取池存儲於data\brc\function\next_pool
資料夾下。
下一個抽取池函數可以自由填寫,只需保證執行過地圖資訊函數(例如brc:map/theme/map
)即可。
如果你不知道怎麼寫,這裏提供了一個最簡單的寫法:直接執行地圖資訊函數。其位於data\brc\function\next_pool\next_pool.mcfunction
,內容如下:
#在结束此函数时必须运行一个地图信息函数
function brc:map/theme/map
最後一個抽取池怎麼辦?
凡是遊戲,一定會有一個結局。而到了這個結局地圖,你依然需要填寫抽取池。這時候該怎麼辦呢?
這裏建議將最後一個抽取池連接到命運大廳。使用遊戲函數menu
即可。
此外,請記得提醒玩家這是結局地圖:如果他們在不知情的情況下回到了大廳,他們可能會以為哪裏出錯了。
導入並測試
在完成一切工作後,你需要測試主題包能否正常使用。
如同正常遊戲一樣,進入大廳,享受遊戲即可。如果一切正常,你可能會遇到意想不到的Bug,在你耗盡心思修完Bug後,你的工作就宣吿完成了。
註釋
主要頁面 | |||
---|---|---|---|
創作者指南 | |||
資料包 |
|