コンテンツそのものを表すクラス。

本クラスのインスタンスは暗黙に生成され、ゲーム開発者が生成することはない。 ゲーム開発者は g.game によって本クラスのインスタンスを参照できる。

本クラスをゲーム開発者が利用するのは以下のようなケースである。

  1. Sceneの生成時、コンストラクタに引数として渡す
  2. Sceneに紐付かないイベント Game#join, Game#leave, Game#playerInfo, Game#seed を処理する
  3. 乱数を発生させるため、Game#randomにアクセスしRandomGeneratorを取得する
  4. ゲームのメタ情報を確認するため、Game#width, Game#height, Game#fpsにアクセスする
  5. グローバルアセットを取得するため、Game#assetsにアクセスする
  6. LoadingSceneを変更するため、Game#loadingSceneにゲーム開発者の定義したLoadingSceneを指定する
  7. スナップショットに対応するため、Game#requestSaveSnapshot()を呼び出す
  8. 現在フォーカスされているCamera情報を得るため、Game#focusingCameraにアクセスする
  9. AudioSystemを直接制御するため、Game#audioにアクセスする 10.Sceneのスタック情報を調べるため、Game#scenesにアクセスする 11.操作プラグインを直接制御するため、Game#operationPluginManagerにアクセスする

Constructors

Properties

age: number

このコンテンツの累計経過時間。 通常は this.scene().local が偽である状態で tick() の呼ばれた回数だが、シーン切り替え時等 tick() が呼ばれた時以外で加算される事もある。

アセットへのアクセッサ。 g.Scene#asset はこの値のエイリアスである。

歴史的経緯による assets との違いに注意。 assets はグローバルアセットをアセットIDをキーにしてアクセスするテーブルである。 他方この assetgetImageById(), getAllTexts() などのメソッドを持つオブジェクトである。 アセットIDだけでなくパスでのアクセスや、複数アセットの一括取得ができる点で異なる。

assetBase: string

Assetの読み込みに使うベースパス。 ゲーム開発者が参照する必要はない。 値はプラットフォーム由来のパス(絶対パス)とゲームごとの基準パス(相対パス)をつないだものになる。

assets: {
    [key: string]: Asset;
}

グローバルアセットのマップ。this._initialScene.assets のエイリアス。

本ゲームで利用可能なオーディオシステム群。musicとsoundが登録されている。

このコンテンツに関連付けられるエンティティ。(ローカルなエンティティを除く)

defaultAudioSystemId: "music" | "sound"

デフォルトで利用されるオーディオシステムのID。デフォルト値はsound。

external: any

外部インターフェース。

実行環境によって、環境依存の値が設定される。 ゲーム開発者はこの値を用いる場合、各実行環境のドキュメントを参照すべきである。

fps: number

フレーム辺りの時間経過間隔。初期値は30である。

handlerSet: GameHandlerSet

ハンドラセット。

height: number

ゲーム画面の高さ。

isLastTickLocal: boolean

直近の update の通知が、ローカルティックによるものか否か。

ただし一度も update 通知が起きていない間は真である。 ローカルシーンおよびローカルティック補間シーン以外のシーンにおいては、常に偽。 この値は参照のためにのみ公開されている。ゲーム開発者はこの値を変更すべきではない。

isLoaded: boolean

グローバルアセットが読み込み済みの場合真。でなければ偽。

isSkipping: boolean

ゲームが早送りに状態にあるかどうか。

スキップ状態であれば真、非スキップ状態であれば偽である。 ゲーム開発者は、この値に起因する処理で、ゲームのグローバルな実行状態を変化させてはならない。 この値は参照のためにのみ公開されている。ゲーム開発者はこの値を変更すべきではない。

プレイヤーがゲームに参加したことを表すイベント。

非推奨である。将来的に削除される。代わりに onJoin を利用すること。

joinedPlayerIds: string[]

ゲームにjoinしているプレイヤーIDの一覧。

歴史的経緯により undefined は含まれないことに注意。 undefined は特殊はプレイヤーIDであり通常 join しないため、ゲーム開発者がこの仕様を考慮する必要はない。

lastLocalTickMode: null | LocalTickModeString

直近の Scene#local の値。

この値は参照のためにのみ公開されている。ゲーム開発者はこの値を変更すべきではない。

lastOmittedLocalTickCount: number

直近の update の通知時(の直前)に(タイムスタンプ待ちを省略する動作などの影響でエンジンが)省いたローカルティックの数。

一度も update 通知が起きていない間は 0 である。 ローカルティック補間シーンでない場合、常に 0 であることに注意。

この値は参照のためにのみ公開されている。ゲーム開発者はこの値を変更すべきではない。

lastTickGenerationMode: null | TickGenerationModeString

直近の Scene#tickGenerationMode の値。

この値は参照のためにのみ公開されている。ゲーム開発者はこの値を変更すべきではない。

プレイヤーがゲームから離脱したことを表すイベント。

非推奨である。将来的に削除される。代わりに onLeave を利用すること。

loadingScene: LoadingScene

アセットのロード中に表示するシーン。 ゲーム開発者はこの値を書き換えることでローディングシーンを変更してよい。

localRandom: RandomGenerator

このGameで利用可能なローカル処理用の乱数生成器。

プレイヤーがゲームに参加したことを表すイベント。

プレイヤーがゲームから離脱したことを表すイベント。

onPlayerInfo: Trigger<PlayerInfoEvent>

新しいプレイヤー情報が発生したことを示すイベント。

onResized: Trigger<CommonSize>

画面サイズの変更時にfireされるTrigger。

onSceneChange: Trigger<undefined | Scene>

this.scenes の変化時にfireされるTrigger。 このTriggerはアセットロード(Scene#onLoadのfire)を待たず、変化した時点で即fireされることに注意。

新しい乱数シードが発生したことを示すイベント。

onSkipChange: Trigger<boolean>

スキップ状態の変化時にfireされるTrigger。

スキップ状態に遷移する時に真、非スキップ状態に遷移する時に偽が与えられる。 この通知は、ゲーム開発者が「スキップ中の演出省略」などの最適化を行うために提供されている。

この通知のfire頻度は、ゲームの実行状態などに依存して異なりうることに注意。 例えば多人数プレイされている時、それぞれの環境でfireされ方が異なりうる。 ゲーム開発者は、この通知に起因する処理で、ゲームのグローバルな実行状態を変化させてはならない。

onSnapshotRequest: Trigger<void>

スナップショット要求通知。

実行環境がコンテンツにスナップショット保存を促す場合に通知される。 その頻度やタイミングは実行環境依存である。

ただし現実には、任意のタイミングでスナップショットを作成することは難しい。 コンテンツはこの通知に関わらず、作成しやすいタイミングでスナップショットを保存するのが望ましい。

onUpdate: Trigger<void>

ティック消化後にfireされるTrigger。

operationPluginManager: OperationPluginManager

操作プラグインの管理者。

operationPlugins: {
    [key: number]: OperationPlugin;
}

ロードしている操作プラグインを保持するオブジェクト。

playId: undefined | string

このゲームの各プレイを識別する値。

このゲームに複数のプレイヤーがいる場合、すなわち Game#join が複数回fireされている場合、各プレイヤー間でこの値は同一である。 この値は、特に game.external で提供される外部APIに与えるなど、Akashic Engine外部とのやりとりで使われることを想定する値である。

実行中、この値が変化しないことは保証されない。ゲーム開発者はこの値を保持すべきではない。 また、この値に応じてゲームの処理や内部状態を変化させるべきではない。 この値は参照のためにのみ公開されている。ゲーム開発者はこの値を変更すべきではない。

新しいプレイヤー情報が発生したことを示すイベント。

非推奨である。将来的に削除される。代わりに onPlayerInfo を利用すること。

このGameで利用可能な乱数生成器。

renderers: Renderer[]

このコンテンツを描画するためのオブジェクト群。

画面サイズの変更時にfireされるTrigger。

非推奨である。将来的に削除される。代わりに onResized を利用すること。

resourceFactory: ResourceFactory

各種リソースのファクトリ。

scenes: Scene[]

シーンのスタック。

新しい乱数シードが発生したことを示すイベント。

非推奨である。将来的に削除される。代わりに onSeed を利用すること。

selfId: undefined | string

このゲームを実行している「自分」のID。

この値は、 Game#join で渡される Player のフィールド id と等価性を比較できる値である。 すなわちゲーム開発者は、join してきたPlayerid とこの値を比較することで、 このゲームのインスタンスを実行している「自分」が参加者であるか否かを決定することができる。

この値は必ずしも常に存在するとは限らないことに注意。存在しない場合、 undefined である。 この値は参照のためにのみ公開されている。ゲーム開発者はこの値を変更すべきではない。

skippingChanged: Trigger<boolean>

スキップ状態の変化時にfireされるTrigger。

スキップ状態に遷移する時に真、非スキップ状態に遷移する時に偽が与えられる。 この通知は、ゲーム開発者が「スキップ中の演出省略」などの最適化を行うために提供されている。

この通知のfire頻度は、ゲームの実行状態などに依存して異なりうることに注意。 例えば多人数プレイされている時、それぞれの環境でfireされ方が異なりうる。 ゲーム開発者は、この通知に起因する処理で、ゲームのグローバルな実行状態を変化させてはならない。

非推奨である。将来的に削除される。代わりに onSkipChange を利用すること。

snapshotRequest: Trigger<void>

スナップショット要求通知。

非推奨である。将来的に削除される。代わりに onSnapshotRequest を利用すること。

surfaceAtlasSet: SurfaceAtlasSet

ゲーム全体で共有するサーフェスアトラス。

vars: any

ゲーム開発者向けのコンテナ。

この値はゲームエンジンのロジックからは使用されず、ゲーム開発者は任意の目的に使用してよい。

width: number

ゲーム画面の幅。

Accessors

  • get focusingCamera(): undefined | Camera
  • 使用中のカメラ。

    Game#draw(), Game#findPointSource() のデフォルト値として使用される。 この値を変更した場合、変更を描画に反映するためには Game#modified() を呼び出す必要がある。

    Returns undefined | Camera

  • set focusingCamera(c): void
  • Parameters

    Returns void

  • get skippingScene(): undefined | Scene
  • スキッピングシーン。 ゲームが早送りとなった際に描画される特殊なシーンであり、以下の制限を持つ。

    • サポートするシーンの種別は "full-local" のみ
    • 非グローバルアセットを利用してはならない
    • シーン内で発生した一切のイベントは処理されない
    • 早送りが複数回発生した場合でも、対象のシーンの onLoad は2度目以降発火せずにインスタンスが使い回される

    初期値は undefined である。

    Returns undefined | Scene

  • set skippingScene(scene): void
  • Parameters

    Returns void

Methods

  • イベントフィルタを追加する。

    一つ以上のイベントフィルタが存在する場合、このゲームで発生したイベントは、通常の処理の代わりにイベントフィルタに渡される。 エンジンは、イベントフィルタが戻り値として返したイベントを、まるでそのイベントが発生したかのように処理する。

    イベントフィルタはローカルイベントに対しても適用される。 イベントフィルタはローカルティック補間シーンやローカルシーンの間であっても適用される。 複数のイベントフィルタが存在する場合、そのすべてが適用される。適用順は登録の順である。

    Parameters

    • filter: EventFilter

      追加するイベントフィルタ

    • OptionalhandleEmpty: boolean

      イベントが存在しない場合でも定期的にフィルタを呼び出すか否か。省略された場合、偽。

    Returns void

  • その座標に反応する PointSource を返す。

    戻り値は、対象が見つかった場合、 target に見つかった E を持つ PointSource である。 対象が見つからなかった場合、 undefined である。

    戻り値が undefined でない場合、その target プロパティは次を満たす:

    • E#touchable が真である
    • カメラ camera から可視である中で最も手前にある

    Parameters

    • point: CommonOffset

      対象の座標

    • Optionalcamera: Camera

      対象のカメラ。指定しなければ Game.focusingCamera が使われる

    Returns undefined | PointSource

  • 現在時刻を取得する。

    値は1970-01-01T00:00:00Zからのミリ秒での経過時刻である。 Date.now() と異なり、この値は消化されたティックの数から算出される擬似的な時刻である。

    Returns number

  • このインスタンスがアクティブインスタンスであるかどうか返す。

    ゲーム開発者は、この値の真偽に起因する処理で、ゲームのローカルな実行状態を変更してはならず、 raiseEvent() などによって、グローバルな状態を更新する必要がある。

    Returns boolean

  • 画面更新が必要のフラグを設定する。

    Returns void

  • シーンスタックから現在のシーンを取り除くことを要求する

    このメソッドは要求を行うだけである。呼び出し直後にはシーン遷移は行われていないことに注意。 実際のシーン遷移は次のフレームまでに(次のupdateのfireまでに)行われる。 引数 preserve が偽の場合、このメソッドの呼び出しにより取り除かれたシーンは全て破棄される。 またその時 stateChanged が引数 "destroyed" でfireされる。 その後一つ前のシーンの stateChanged が引数 "active" でfireされる。 また、step数がスタックされているシーンの数以上の場合、例外が投げられる。

    Parameters

    • Optionalpreserve: boolean

      真の場合、シーンを破棄しない(ゲーム開発者が明示的に破棄せねばならない)。省略された場合、偽

    • step: number = 1

      取り除くシーンの数。省略された場合、1

    Returns void

  • シーンスタックへのシーンの追加と、そのシーンへの遷移を要求する。

    このメソッドは要求を行うだけである。呼び出し直後にはシーン遷移は行われていないことに注意。 実際のシーン遷移は現在のフレームの終わり(Scene#update の fire 後) まで遅延される。 このメソッドの呼び出しにより、現在のシーンの stateChanged が引数 "deactive" でfireされる。 その後 scene.stateChanged が引数 "active" でfireされる。

    Parameters

    Returns void

  • イベントを発生させる。

    ゲーム開発者は、このメソッドを呼び出すことで、エンジンに指定のイベントを発生させることができる。

    Parameters

    • e: Event

      発生させるイベント

    Returns void

  • ティックを発生させる。

    ゲーム開発者は、このメソッドを呼び出すことで、エンジンに時間経過を要求することができる。 現在のシーンのティック生成モード Scene#tickGenerationMode"manual" でない場合、エラー。

    Parameters

    • Optionalevents: Event[]

      そのティックで追加で発生させるイベント

    Returns void

  • このGameにエンティティを登録する。

    このメソッドは各エンティティに対して暗黙に呼び出される。ゲーム開発者がこのメソッドを明示的に利用する必要はない。 e.idundefined である場合、このメソッドの呼び出し後、 e.id には this に一意の値が設定される。 e.local が偽である場合、このメソッドの呼び出し後、 this.db[e.id] === e が成立する。 e.local が真である場合、 e.id の値は不定である。

    Parameters

    • e: E

      登録するエンティティ

    Returns void

  • イベントフィルタを削除する。

    Parameters

    • filter: EventFilter

      削除するイベントフィルタ

    Returns void

  • このGameを描画する。

    このゲームに紐づけられた Renderer (this.renderers に含まれるすべての Renderer で、この Game の描画を行う。 描画内容に変更がない場合、描画処理がスキップされる点に注意。強制的に描画をする場合は this.modified() を呼ぶこと。 このメソッドは暗黙に呼び出される。ゲーム開発者がこのメソッドを利用する必要はない。

    Returns void

  • 現在のシーンの置き換えを要求する。

    現在のシーンをシーンスタックから取り除き、指定のシーンを追加することを要求する。 このメソッドは要求を行うだけである。呼び出し直後にはシーン遷移は行われていないことに注意。 実際のシーン遷移は現在のフレームの終わり(Scene#update の fire 後) まで遅延される。 引数 preserveCurrent が偽の場合、このメソッドの呼び出しにより現在のシーンは破棄される。 またその時 stateChanged が引数 "destroyed" でfireされる。 その後 scene.stateChanged が引数 "active" でfireされる。

    Parameters

    • scene: Scene

      遷移後のシーン

    • OptionalpreserveCurrent: boolean

      真の場合、現在のシーンを破棄しない(ゲーム開発者が明示的に破棄せねばならない)。省略された場合、偽

    Returns void

  • 現在のシーンの置き換えを要求する。

    Parameters

    Returns void

  • スナップショットを保存する。

    (saveSnapshot() と同じ機能だが、インターフェースが異なる。こちらを利用すること。)

    引数として与えた関数 func() がフレームの終了時に呼び出される。 エンジンは、func() の返した値に基づいて、実行環境にスナップショットの保存を要求する。

    保存されたスナップショットは、必要に応じてゲームの起動時に与えられる。 詳細は g.GameMainParameterObject を参照のこと。

    このメソッドを 1 フレーム中に複数回呼び出した場合、引数に与えた関数 func() の呼び出し順は保証されない。 (スナップショットはフレームごとに定まるので、1フレーム中に複数回呼び出す必要はない。)

    Parameters

    • func: (() => null | SnapshotSaveRequest)

      フレーム終了時に呼び出す関数。 SnapshotSaveRequest を返した場合、スナップショット保存が要求される。

    • Optionalowner: any

      func の呼び出し時に this として使われる値。指定しなかった場合、 undefined

    Returns void

  • 対象のポイントイベントのターゲットエンティティ(PointTarget#target)を解決し、それを補完した playlog.Event を返す。 Down -> Move -> Up とは異なる順番で呼び出された場合 null を返す。 このメソッドは暗黙に呼び出される。ゲーム開発者がこのメソッドを利用する必要はない。

    Parameters

    Returns null | Event

  • スナップショットを保存する。

    このメソッドは Game#shouldSaveSnapshot() が真を返す Game に対してのみ呼び出されるべきである。 そうでない場合、このメソッドの動作は不定である。

    このメソッドで保存されたスナップショットは、 main スクリプト (ゲーム開始時に最初に実行されるスクリプト) の関数に、 引数 (の snapshot プロパティ) として与えられる場合がある。 (e.g. マルチプレイのゲームプレイ画面を途中から開いた場合) スナップショットが与えられた場合、ゲームはそのスナップショットから保存時の実行状態を復元しなければならない。

    Parameters

    • snapshot: any

      保存するスナップショット。JSONとして妥当な値でなければならない。

    • Optionaltimestamp: number

      保存時の時刻。 g.TimestampEvent を利用するゲームの場合、それらと同じ基準の時間情報を与えなければならない。

    Returns void

    非推奨である。互換性のために残されているが、この関数では適切なタイミングのスナップショット保存ができない場合がある。代わりに requestSaveSnapshot() を利用すること。

  • 現在のシーンを返す。 ない場合、 undefined を返す。

    Returns undefined | Scene

  • このインスタンスにおいてスナップショットの保存を行うべきかを返す。

    スナップショット保存に対応するゲームであっても、 必ずしもすべてのインスタンスにおいてスナップショット保存を行うべきとは限らない。 たとえば多人数プレイ時には、複数のクライアントで同一のゲームが実行される。 スナップショットを保存するのはそのうちの一つのインスタンスのみでよい。 本メソッドはそのような場合に、自身がスナップショットを保存すべきかどうかを判定するために用いることができる。

    スナップショット保存に対応するゲームは、このメソッドが真を返す時にのみ Game#saveSnapshot() を呼び出すべきである。 戻り値は、スナップショットの保存を行うべきであれば真、でなければ偽である。

    Returns boolean

    非推奨である。saveSnapshot() (非推奨) の利用時にしか必要ないため。アクティブインスタンスの判定には isActiveInstance() を用いること。

  • このゲームを終了する。

    エンジンに対して続行の断念を通知する。 このメソッドの呼び出し後、このクライアントの操作要求は送信されない。 またこのクライアントのゲーム実行は行われない(updateを含むイベントのfireはおきない)。

    Returns void

  • この Game の時間経過とそれに伴う処理を行う。

    現在の Scene に対して Scene#update をfireし、 events に設定されたイベントを処理する。 このメソッドは暗黙に呼び出される。ゲーム開発者がこのメソッドを利用する必要はない。

    戻り値は呼び出し前後でシーンが変わった(別のシーンに遷移した)場合、真。でなければ偽。

    Parameters

    • advanceAge: boolean

      偽を与えた場合、this.age を進めない。

    • OptionalomittedTickCount: number

      タイムスタンプ待ちを省略する動作などにより、(前回の呼び出し以降に)省かれたローカルティックの数。省略された場合、 0

    • Optionalevents: Event[]

      ティックに含ませるイベント。省略された場合、 undefined

    Returns boolean

  • このGameからエンティティの登録を削除する。

    このメソッドは各エンティティに対して暗黙に呼び出される。ゲーム開発者がこのメソッドを明示的に利用する必要はない。 このメソッドの呼び出し後、 this.db[e.id] は未定義である。

    Parameters

    • e: E

      登録を削除するエンティティ

    Returns void