跳到正文

編寫頁面

頁面是開放倉庫bullet-hero/docs中的markdown檔案。修改以pull request的形式提交:fork、分支、在每種語言中修改、對照風格指南檢查

倉庫

專案的所有倉庫都在bullet-hero組織下。開放的倉庫有:

倉庫內容
bullet-hero/releasesreleases中是遊戲的每個公開構建版本,issues中是玩家反饋的關於遊戲的錯誤和建議
bullet-hero/sdkSDK程式碼,issues中是關於SDK的錯誤和建議
bullet-hero/docs這些頁面及其翻譯
bullet-hero/backend伺服器,目前是空的

遊戲(bullet-hero/game)和網站(bullet-hero/frontend)的程式碼是閉源的

本頁講的是bullet-hero/docs

如何提交修改

  1. Fork bullet-hero/docs並建立一個分支
  2. 按下面描述的格式編輯或新增頁面
  3. 在每種語言中修改該頁面,或者在pull request中說明哪些語言仍需要這項修改。更多:翻譯
  4. 對照風格指南檢查文本
  5. 發起pull request,簡要說明改了什麼以及為什麼改

事實來自遊戲、SDK或它們的文件。數字、欄位名、檔名、快捷鍵和地址從不靠猜。不確定某件事是否正確?在pull request裡說明,而不是寫在頁面上

被接受的修改會在幾分鐘內出現在bullethero.space上:每次推送到master都會重新構建網站

提示

網站程式碼是閉源的,所以你無法自己構建網站。最接近的預覽方式是Obsidian:Obsidian找不到的連結,在網站上同樣找不到

倉庫如何運作

  • 只有markdown。沒有自己的構建流程,也沒有指令碼
  • 它是一個Obsidian庫。把倉庫的根資料夾作為庫開啟,連結、嵌入和預覽的效果與網站上相同。其他任何markdown編輯器也可以使用
  • 它是網站的子模組。網站把這個倉庫作為自己的content/資料夾引入,在構建時編譯頁面,並預渲染每一個頁面。網站從本倉庫最新的master構建

內容放在哪裡

路徑內容網站上的地址
<lang>/docs/1_game/面向玩家:安裝、遊玩、設定、機制/docs/game
<lang>/docs/2_editor/面向關卡作者:編輯器指南和參考/docs/editor
<lang>/docs/3_sdk/面向開發者:開源SDK和關卡格式/docs/sdk
<lang>/docs/4_server/面向伺服器運營者:官方伺服器和社群伺服器/docs/server
<lang>/docs/5_changelog/更新日誌,每個遊戲版本一頁/docs/changelog
<lang>/notes/文章、社群、編輯規則、公開檔案和政策,按日期排序/notes/<name>
<lang>/tags/標籤頁面/tags/<tag>
<lang>/download.md下載頁面/download
assets/所有語言共用的圖片嵌入到頁面中

<lang>是語言資料夾:en、ru、zh、zh-Hant、ja、ko、es、pt或fr。docs/、notes/、tags/和download.md之外的檔案不會成為頁面

文件描述的是事物現在如何運作。變更的歷史、個人觀點或隨筆是notes/中的筆記

檔名和順序

  • 側邊欄中的順序由N_字首決定,docs/內的每個檔案和資料夾都有這個字首:1_、2_,依此類推,直到10_及以上
  • 字首不會出現在地址中。1_game/3_controls.md的地址是/docs/game/controls
  • index.md沒有字首。它是所在資料夾的首頁,佔據資料夾的位置,併為側邊欄中的分組命名
  • 要調整順序,就重新命名檔案。在Obsidian中啟用“Automatically update internal links”,它會自己修正所有連結
  • 去掉字首後的名稱在同一語言內是唯一的。如果兩個檔案對應到同一個地址,網站構建時會報告
  • 帶字首的名稱在所有語言中都相同。en/docs/2_editor/4_craft/3_difficulty-curve.md和ru/docs/2_editor/4_craft/3_difficulty-curve.md是同一個頁面
  • notes/沒有字首,也沒有子資料夾。永遠不要重新命名notes/cookie-policy:網站上的Cookie橫幅連結到它

Frontmatter、標題和描述

每個頁面都以這樣的內容開頭:

---
title: Difficulty and the curve
date: 2026-09-24
tags: [level_author]
---

# Difficulty and the curve

One line that says what the page is, up to 200 characters, no markup
  • title、H1和描述用頁面所屬的語言書寫。上面的例子來自英文版
  • Frontmatter包括title、date和tags。其他內容一概不讀取。date的格式是YYYY-MM-DD,是最後一次更新的日期,而不是建立日期。修改檔案時,把date設為修改當天
  • # H1是必需的,且與title相同。網站只顯示頁面正文,所以H1就是可見的標題
  • H1之後的第一段是描述,顯示在列表、搜尋和連結預覽中。它會在200個字元處截斷。把它寫成一行,不帶連結和格式。它簡短地回答頁面的問題,而不是描述頁面上有什麼,見風格指南 › 頁面開頭
  • 章節用##,小節用###。它們會生成錨點和目錄。不需要更深的層級

受眾標籤

每個文件頁面都有1到3個來自此列表的標籤。標籤用snake_case書寫,不帶#。網站會在頁面上顯示它們

標籤網站上顯示為物件
player玩家普通玩家
advanced_player進階玩家對機制感興趣的玩家
level_author關卡作者在編輯器中製作關卡
developer開發者基於SDK構建東西或擴充套件遊戲
server_host伺服器運營者為自己和朋友執行伺服器
server_advanced進階伺服器運營者大型伺服器運營者,準備擴充套件或編寫伺服器
contributor文件貢獻者在本倉庫中編輯文本和翻譯

notes/中的筆記改用主題標籤,目前是legal(法律檔案)

讀者看不到標籤程式碼。顯示的名稱來自標籤頁面<lang>/tags/<code>.md:

  • 它的title就是名稱
  • 它的第一段描述受眾
  • 帶有該標籤的頁面列表由網站自動新增

新標籤需要在每種語言中都有這樣一個頁面

要在正文中提到某個標籤,就連結到它的頁面:[[level_author]]。連結會以讀者的語言顯示名稱

連結

目標寫法
另一個頁面[[3_difficulty-curve]],使用帶字首的完整檔名
頁面中的某個章節[[3_difficulty-curve#Anchor]]
資料夾首頁[[2_editor/4_craft/index]],要帶路徑,因為每個這樣的頁面都叫index
外部網站[text](https://…),使用帶協議的完整地址

連結指向不帶語言的地址,所以同一份源文本在所有語言中都能用。[[cookie-policy]]會把英文讀者帶到英文頁面,把俄文讀者帶到俄文頁面,把中文讀者帶到中文頁面,把日文讀者帶到日文頁面,把韓文讀者帶到韓文頁面,把西班牙文讀者帶到西班牙文頁面,把葡萄牙文讀者帶到葡萄牙文頁面,把法文讀者帶到法文頁面

只連結到已經存在的頁面。網站構建會報告每一個無法解析的連結

圖片

圖片放在倉庫根目錄的assets/中,用![[file.png]]嵌入

所有語言共用一個資料夾。圖片上繪製的文字不會隨頁面一起翻譯

標註框

語法顏色用途
> [!note]、> [!info]、> [!tip]藍色背景資訊、捷徑、建議
> [!warning]、> [!caution]黃色耗費時間或降低質量、毀掉成果
> [!danger]、> [!bug]紅色可以顯示,但風格指南不使用它們

選用哪種標註框、它的標題,以及每頁最多兩個的限制:風格指南

數字、版本和介面文字

由遊戲決定的數字(化身的速度、設定的預設值、大小上限)以及當前版本不直接寫進頁面。它們存放在倉庫根目錄的values.yaml中,頁面只寫一個佔位符,由網站在構建時填入:

  • {{v:avatar.move-speed}}是values.yaml中的值。網站按頁面語言的寫法輸出數字:英文是0.15,俄文是0,15
  • {{ui:menu_main_sandbox-btn}}是game/<lang>.yaml中的介面文字,使用頁面本身的語言
  • {{表示兩個普通的花括號

不存在的鍵會讓網站構建失敗,所以新數字要先加進values.yaml。作為歷史節點提到的版本("從gv 1.0.0起")保持為文本。Obsidian會按原樣顯示佔位符

程式碼和其他標記

  • 程式碼高亮只支援ts、tsx、js、json、csharp、bash、yaml、css和md。其他語言顯示為純文本
  • **GFM表格、任務列表、腳註和==highlights==**都可以使用
  • 不支援MDX和JSX。{和<會原樣顯示

引用本頁的頁面