This document is about: FUSION 1
SWITCH TO

ゲームコア

Level 4

ゲームプレイモード

ゲームプレイを制御し、勝利条件を評価するメインスクリプトです。GameplayModeの一部として、プレイヤーのkill/deathの処理とプレイヤーの統計への書き込みがあります。

デスマッチ

標準的なデスマッチ機能を持つ、最も基本的なゲームプレイモードです。

消去法

プレイヤーは限られた数のライフを持っています。最後に立っていたプレイヤーが勝利します。このゲームモードは、時間経過とともに使用可能なマップスペースが減少するShrinking Areaを備えています。

shrinking area
ゲームプレイモード「Elimination」での「Shrinking Area」

バトルロワイヤル

プレイヤーは、縮小エリアを周回する飛行機でスタートします。降下開始後、飛行機はアクティブマップエリアに入り、プレイヤーはジェットパックで降下・着陸することができます。プレイヤーのライフは1つだけで、最後に立っていた人が勝ちとなります。

飛行機に乗っている間、プレイヤーの入力は AirplaneAgent によって処理さ れます。

battle royale airplane
Note: サーバーは、ドロップを開始するタイミングを、すぐに開始するか、自動開始のカウントダウンを長くするかのいずれかで制御することができます。

縮小エリア

縮小エリアは、時間経過で縮小する円形の領域で、この領域の外側にいるプレイヤーにダメージを与えます。縮小は複数のステップで行われます。各ステップの前に、警告と残り時間がUIに表示されます。縮小ステップ間の時間は、アクティブなプレイヤー数に基づいています - 生きているプレイヤーが少ないほど、エリアは早く縮小します。

announcements

バトルロイヤル、エリミネーションモードでは、縮小エリアが有効になります。

Announcer

Announcerは、マルチキル、残り時間、残りプレイヤー数などのゲーム内イベントをプレイヤーに通知するシンプルなシステムです。すべてのゲームプレイモードで、評価されプレイヤーに提示されるアナウンスのセットを定義できます。

announcements
ゲームモード「バトルロイヤル」でのアナウンス

アナウンスメント(Announcement)はスクリプト可能なオブジェクトで、ゲーム内のイベントを定義します。すべてのアナウンスメントオブジェクトはカスタム評価ロジックを持ち、トリガーされたときにプレイヤーに表示されるべきメッセージやオーディオクリップを含んでいます。アナウンスメントには異なる優先順位があり、特定のチャンネルで再生することができます。同じチャンネルにある2つのアナウンスが同時にトリガーされた場合、プライオリティの高い方だけが表示されます。これにより、例えばダブルキルとトリプルキルの両方のアナウンスが起動されていても、トリプルキルのアナウンスだけが表示されるようになります。

レベル生成

200人のプレイヤーに対して意味のあるレベルを作成するのは時間がかかるため、コードによる半手順のレベル生成を採用しました。

genarea 7
GenArea 7 scene contains seven colored areas

すべてのレベルは、サーバーがシーンを読み込むときに、実行時に指定されたパラメータを基に生成されます。生成プロセスにはランダム性が含まれるため、実行ごとに異なります。

シーン GenArea2 - GenArea 7 は、Gameplay/NetworkGame ゲームオブジェクトにあるパラメータセットアップが異なるだけです。

genarea7 generation
GenArea 7の生成に使用される値

レベル生成の詳細はこのドキュメントの範囲外ですが、簡単に言うと、レベルはエリア(色のついたセクション)に分かれています。各エリアはブロック(あらかじめ用意されたプレハブ)で構成され、ブロックはコネクター(あらかじめ用意されたプレハブ - ランプ、箱の山)で接続されます。各エリアの中心は、特別なタワーブロックによって定義されます。生成を制御する値は LevelGenerator スクリプトで見つけることができます。

level generator
レベル生成インスペクター

すべてのブロックは、プレイヤーのスポーン可能な位置とアイテムボックスの位置を定義することができます。アイテムボックスは、生成プロセスの一部としてレベルにスポーンされます。

NetworkGame

NetworkGame は、接続されたプレイヤーの参加と離脱を処理し、各クライアントに Player プレハブを生成します。切断されたプレイヤーは保存され、再接続の際にデータを復元することができます。NetworkGameは初期化時にGameplayModeを生成します。

Scene & SceneContext

Scene は、UI、カメラ、音楽、ミニマップなど、シーン固有の機能やサービス (SceneService) を扱います。シーンサービスは Scene から手動で更新されるため、いつでも初期化、アクティブ化、非アクティブ化、更新を行うことができます。

SceneContext は、コードベース全体で必要とされる共通のサービスやその他の情報に対して、静的な情報を使用せずに安全にアクセスできるようにします。シーンコンテキストは自動的にシーンサービスに渡され、GameplayNetworkObjectPool にあるネットワークオブジェクトに割り当てられます。SceneContext にアクセスするには、NetworkBehaviourSimulationBehaviour ではなく、ContextBehaviourContextSimulationBehaviour を継承することが必要です。

ゲームコア

次の画像は、アプリケーションのループを表しています。

application loop
アプリケーションループ

次の図は、コアゲームスクリプトの寿命を示しています。

game core
コアゲームスクリプトの寿命
Back to top