Battlefield 6 Portal Book
Battlefield 6 Portal エクスペリエンス制作大全
BF6 Portalの作り方を、エクスペリエンスビルダー、Portalカスタム、Godot SDK、TypeScript SDK、公式サンプル、公開運営まで順に学ぶ日本語リファレンスです。マップ編集、ObjIdによる仕掛けの接続、ゲームモード制作の手順を解説します。
日本語を原文として制作しています。英語・中国語(簡体字/繁体字)は機械翻訳のため、意図と異なる表現になっている可能性があります。

目次
- 第0章 本書について本書は、「BattleField6のPortalで、自分で何か面白いことをしてみたい」という方に向けて、基礎的なエディタの使い方から、Portal独自の仕組みなどを学ぶことを目的としています。 長くPortalサーバーを運用するためのプログラミングの改良を含めて、Portalのスクリプト機能・マップエディタを使い...
- 第1章 Battlefield Portalとは何かBattlefieldシリーズと聞くと、多くの人が思い浮かべるのは「壮大な戦場」「分隊での協力」「破壊可能な環境」など、シリーズを通して一貫した“戦争体験のリアリズム”でしょう。 しかし、その中で2021年に登場した Battlefield Portal(以下、Portal) は、このシリーズの歴史の中でも最も実...
- 第2章 Portal Builderの使い方と設計思考本書では、「Portal Builder」と呼称していますが、正式名称は 「Battlefield Portal エクスペリエンスビルダー」 です。
- 第3章 「Portalカスタム」のための環境構築本章では、ここから先の章に入るために必要なツールを用意します。 これらを行わないと、絶対に「Portalカスタム」の開発を行うことはできませんので、注意してください。
- 第4章 マップエディタ実務ガイド(配置と紐づけ)この章では、「置けるものはどこから来ているのか」「どのマップで何が置けるのか」「動作に関わる重要オブジェクトは何か」をGodotの実体(.tscn)とPortal側の名称を一致させて整理します。最終的に、 後続のルール設計とTypeScript実装から参照・制御できる形(=IDが付与され、台帳化された状態) まで...
- 第5章 ルール設計入門(配置を“動かす”前に考える)第4章でマップ上に置いたオブジェクトには、 設置位置 と 呼び出すための住所(ID) を付けました。けれど、 誰が合図を出し、どの住所にどんな用事を伝えるかは、まだ決まっていません。 本章では、TypeScriptへ移す前に、 合図 → 宛先(ID) → 反応を一本の道として設計する 考え方を整理します。これさえ...
- 第6章 スクリプトで創る「自分だけのモード」この章のコードは、Portal SDKのTypeScript APIを理解するための最小例です。実際に公開する前に、ローカルホストと実機プレイで必ず動作確認してください。
- 第7章 “きれいに分ける”小さな設計第6章で、あなたは 「押す → 目印 → 到着 → 光と音」 の最小ループをTypeScriptで動かせました。 ここから機能を足していくと、同じような処理(メッセージ表示、アイコンの切り替え、効果音の再生)があちこちに散らばり、少し直すだけのつもりが全体が壊れることが出てきます。
- 第8章 ビジュアルと演出:UI・SFX・FXを使いこなす第7章では、処理を小さな箱に分け、メッセージ表示や目印更新を呼び出しやすい形に整理しました。けれど、コードが動くだけでは、プレイヤーに「次に何をすればよいか」「成功したのか」「今どこへ向かうのか」はまだ十分に伝わりません。 本章では、その反応を プレイヤーに伝わる演出 として整えます。短いメッセージ、WorldI...
- 第8.5章 Checkpoint Rushを公開直前まで作る第8章までで、配置、ID、ルール設計、TypeScript、UI、SFX、FXの考え方をひと通り見てきました。 ただし、章ごとに分けて学んだ内容は、そのままだと「実際に作るとき、どの順番で手を動かすのか」が見えにくくなります。
- 第9章 公開・ホスティング・運営第8章では、プレイヤーに次の行動や成功の手応えを伝えるために、メッセージ、WorldIcon、SFX、FXの使い方を整理しました。けれど、体験がゲーム内で伝わるだけでは、まだ公開後に遊ばれる形にはなっていません。 本章では、作ったPortalエクスペリエンスを 人に遊んでもらえる状態で公開し、壊さず運営する ため...
- 第9.5章 AIに状況とログを渡してPortalコードを作る第9章では、完成したエクスペリエンスを公開し、説明し、壊さず更新するための運営手順を整理しました。けれど、公開後に不具合を直したり、新しい要素を足したりするとき、毎回すべてのAPIや型を人間だけで追うのは重くなります。 本章では、Portalコードを書く作業を AIに任せるための渡し方 を整理します。やりたいこと...
- 第10章 未来のPortal:BFシリーズの創造性のゆくえ第9章では公開と運営の手順を整理し、第9.5章ではAIに状況とログを渡して修正や実装を進める方法を扱いました。けれど、Portalそのもの、SDK、AI、公開まわりのルールは、この先も変わっていきます。 本章では、これまで作ってきた考え方を 変化に耐える形で残す ために、変わりやすいものと変わりにくいものを分けて...
- 付録A-2: アクション・値取得一覧(基本操作)ここでは mod. から呼び出す関数を、用途別に並べます。Portalのブロック名に近いものもありますが、TypeScriptでは型が厳しいため、Player、Team、Vector、Message、UIWidget などの型を合わせて渡す必要があります。
- 付録A-3: アクション・値取得一覧(UI・参照・値)この付録では、UI・通知・スコアボード以降の関数、よく使う型、実装時の注意、最小テンプレートを扱います。基本操作系の関数は「付録A-2:アクション・値取得一覧(基本操作)」を参照してください。
- 付録A-1: イベント一覧この付録は、公式SDK code/types/mod/index.d.ts の mod namespaceをもとに、BF6 Portal TypeScriptで使えるイベントとアクションを一覧化したものです。基準SDKは index.d.ts に合わせて 1.3.2.0 です。SDK更新で増減する可能性があるので...
- 付録B:はじめに 公式サンプルの読み方SDKには公式サンプルが入っています。いきなり大きなサンプルを読むと、UI、AI、車両、状態管理が一気に出てきて混乱します。
- 付録B: サンプルプログラム解説「AcePursuit(レース/タイムサバイバル)」AcePursuit は、航空機を使ったレース/タイムサバイバル系のサンプルです。
- 付録B: サンプルプログラム解説「_StartHere_BasicTemplate(最初に読む基本形)」StartHereBasicTemplate は、Portal TypeScriptの入口をまとめた最小テンプレートです。
- 付録B: サンプルプログラム解説「BumperCars(車両ミニゲーム)」BumperCars は、車両を使った小規模ミニゲームのサンプルです。
- 付録B: サンプルプログラム解説「CustomCQ(カスタムコンクエスト)」CustomCQ は、Conquest相当の大規模テンプレートをPortalで作るためのサンプルです。 単体の小さなAPI確認ではなく、複数マップ、CapturePoint、AreaTrigger、AI、車両、UI、スコアボード、音楽・VOまで含む「完成モード寄り」の教材として読みます。
- 付録B: サンプルプログラム解説「FixedCameraExample(固定カメラとUIボタン)」FixedCameraExample は、Godotに配置したFixedCameraを、UIボタンから切り替えるサンプルです。
- 付録B: サンプルプログラム解説「GibraltarGrandprix(地上レース)」GibraltarGrandprix は、チェックポイント制の地上レースサンプルです。 Gibraltarを舞台にしたグランプリ形式として、チェックポイント、車両、順位UI、カウントダウンを確認できます。
- 付録B: サンプルプログラム解説「GolmudTrainExample(列車制御)」GolmudTrainExample は、Railway to Golmud MPGolmudRailway の列車をPortalスクリプトから扱うサンプルです。 通常のオブジェクト移動ではなく、SDKが用意した列車専用イベントと専用関数を読む教材です。
- 付録B: サンプルプログラム解説「HybridExample(ブロックとTypeScriptの混在)」HybridExample は、Portalのブロック側からTypeScript関数を呼び出す流れを確認するためのサンプルです。 通常のTypeScriptサンプルだけを読んでいると、すべてをコードで書く前提に寄りがちです。しかし実際のPortal制作では、既存のブロック資産を残しながら、一部だけTypeScri...
- 付録B: サンプルプログラム解説「NightModeExample(夜間演出とNVG)」NightModeExample は、マップ上のエリアに入ったプレイヤーへ夜間演出を切り替えるサンプルです。 ScreenEffects.Night、NVG装備、SFX、VFXをまとめて扱うので、「見た目と装備をイベントで切り替える」流れを読む教材として使います。
- 付録B: サンプルプログラム解説「PortalGadgetExample(専用ガジェット入力)」PortalGadgetExample は、Portal Gadgetをプレイヤーに持たせ、照準・射撃・レーザー切替などの入力をスクリプトで受け取るサンプルです。
- 付録B: サンプルプログラム解説「VL7Example(ガス雲と画面効果)」VL7Example は、VL7Cloud、ScreenEffect、SoldierEffect、WorldIconを組み合わせて、ガス雲の効果を切り替えるサンプルです。
- 付録C: modlib解説 SDKを少し使いやすくする補助ライブラリmodlib は、BF6 Portal SDKに同梱されているTypeScript用の補助ライブラリです。 場所は code/modlib/index.ts です。