Jump to content
开往-友链接力

基岩牢籠/建立主題

此頁面將告訴你如何創造一個基岩牢籠主題。

準備

首先,我們需要準備一些必要的東西:

  • 安裝了基岩牢籠整合包的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後,你的工作就宣告完成了。

注釋

  1. 但,我們不提供加入這個標記的工具是有理由的。
  2. 結構檔案在哪?這個問題你可以透過打開Minecraft→選中你用來建地圖的世界→按「編輯」,然後按「打開世界資料夾」→打開一個叫generated的資料夾來解決。
    如果您在哪一步出了問題,請再檢查一下是不是哪裡出了問題,包括但不限於您選中的世界、您選擇的MC實例、您的腦子等地方。
Cookies help us deliver our services. By using our services, you agree to our use of cookies.