本文へスキップ

ページの書き方

ページは公開リポジトリbullet-hero/docsにあるMarkdownファイルです。変更はプルリクエストで届けます:フォーク、ブランチ、すべての言語での変更、スタイルガイドに沿った確認

リポジトリ

プロジェクトのリポジトリはすべて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. bullet-hero/docsをフォークし、ブランチを作ります
  2. 下で説明する形式でページを編集または追加します
  3. すべての言語でページを変更するか、まだ変更が必要な言語をプルリクエストに書きます。詳細:翻訳
  4. スタイルガイドに沿って文章を確認します
  5. 何をなぜ変えたかを短く説明して、プルリクエストを開きます

事実はゲーム、SDK、またはそれらのドキュメントから取ります。数字、フィールド名、ファイル名、ショートカット、アドレスを推測で書くことは決してありません。正しいか自信がないときは、ページではなくプルリクエストにそう書いてください

受け入れられた変更は、数分以内にbullethero.spaceに反映されます:masterへのpushのたびにサイトが再ビルドされます

ヒント

サイトのコードは非公開なので、自分でサイトをビルドすることはできません。最も近いプレビューは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/変更履歴、ゲームのバージョンごとに1ページ/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」を有効にすると、すべてのリンクを自動で直してくれます
  • 接頭辞を除いた名前は、言語内で一意です。2つのファイルが同じアドレスになると、サイトのビルドがそれを報告します
  • 接頭辞付きの名前は、すべての言語で同じです。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バナーがそこにリンクしています

フロントマター、タイトル、説明文

どのページも次のように始まります:

---
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、説明文はページの言語で書きます。上の例は英語版のものです
  • フロントマターはtitle、date、tagsです。それ以外は読まれません。YYYY-MM-DD形式のdateは、作成日ではなく最終更新日です。ファイルを編集したら、dateを編集した日にします
  • # H1は必須で、titleと同じです。サイトはページの本文だけを表示するので、H1が目に見えるタイトルになります
  • H1の後の最初の段落が説明文です。一覧、検索、リンクのプレビューに使われ、200文字で切られます。リンクも書式も使わず、1行で書きます。ページに何があるかを説明するのではなく、ページの問いに短く答えます:スタイルガイド › ページの書き出し
  • セクションは##、サブセクションは###です。ここからアンカーと目次が作られます。それより深いレベルは必要ありません

対象読者のタグ

ドキュメントのページにはどれも、この一覧から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://…)、スキームを含む完全なアドレスで

リンクは言語を含まないアドレスを指すので、1つのソースがすべての言語で機能します。[[cookie-policy]]は、英語の読者を英語のページへ、ロシア語の読者をロシア語のページへ、中国語の読者を中国語のページへ、日本語の読者を日本語のページへ、韓国語の読者を韓国語のページへ、スペイン語の読者をスペイン語のページへ、ポルトガル語の読者をポルトガル語のページへ、フランス語の読者をフランス語のページへ送ります

存在するページにだけリンクしてください。サイトのビルドは、解決できなかったリンクをすべて報告します

画像

画像はリポジトリのルートのassets/に置き、![[file.png]]で埋め込みます

1つのフォルダーをすべての言語で使います。画像に描かれた文字は、ページと一緒には翻訳されません

コールアウト

構文色用途
> [!note]、> [!info]、> [!tip]青背景、近道、推奨
> [!warning]、> [!caution]黄時間か品質が犠牲になる、作業が失われる
> [!danger]、> [!bug]赤表示はされるが、スタイルガイドでは使わない

どのコールアウトを選ぶか、そのタイトル、1ページに2つまでという上限:スタイルガイド

数字、バージョン、UIのラベル

ゲームが決める数字(アバターの速度、設定のデフォルト値、サイズの上限)と現在のバージョンは、ページに直接書きません。これらはリポジトリのルートのvalues.yamlにあり、ページにはプレースホルダーを書きます。サイトがビルド時にそれを埋めます:

  • {{v:avatar.move-speed}}はvalues.yamlの値です。サイトはページの言語での数字の書き方に合わせて書きます:英語では0.15、ロシア語では0,15
  • {{ui:menu_main_sandbox-btn}}はgame/<lang>.yamlにあるUIのラベルで、ページ自体の言語で表示されます
  • {{は文字どおりの波括弧2つです

存在しないキーがあるとサイトのビルドが止まるので、新しい数字はまずvalues.yamlに追加します。歴史上の時点として名前を挙げたバージョン(「gv 1.0.0以降」)は文字のまま残します。Obsidianはプレースホルダーを書かれたとおりに表示します

コードとその他のマークアップ

  • コードのハイライトはts、tsx、js、json、csharp、bash、yaml、css、mdにだけあります。他の言語はプレーンテキストとして表示されます
  • 使えるもの:GFMの表、タスクリスト、脚注、==highlights==
  • MDXもJSXも使えません。{と<はそのまま表示されます

このページへのリンク元