Options
All
  • Public
  • Public/Protected
  • All
Menu

Class Game

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

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

多くの機能を持つが、本クラスをゲーム開発者が利用するのは以下のようなケースである。

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

Hierarchy

  • Game

Implements

Index

Constructors

constructor

  • Game のインスタンスを生成する。

    Parameters

    • gameConfiguration: GameConfiguration

      この Game の設定。典型的には game.json の内容をパースしたものを期待する

    • resourceFactory: ResourceFactory

      この Game が用いる、リソースのファクトリ

    • Optional assetBase: string

      アセットのパスの基準となるディレクトリ。省略された場合、空文字列

    • Optional selfId: string

      このゲームを実行するユーザのID。省略された場合、undefined

    • Optional operationPluginViewInfo: OperationPluginViewInfo

      このゲームの操作プラグインに与えるviewの情報

    Returns Game

Properties

Private _assetManager

_assetManager: AssetManager

アセットの管理者。

Private _audioSystemManager

_audioSystemManager: AudioSystemManager

Game#audioの管理者。

Private _cameraIdx

_cameraIdx: number

次に生成されるカメラのID。 初期値は 0 であり、以後カメラ生成のたびにインクリメントして利用される。

Private _configuration

_configuration: GameConfiguration

このゲームの設定(game.json の内容)。

Private _defaultLoadingScene

_defaultLoadingScene: LoadingScene

デフォルトローディングシーン。

this.loadingScene が指定されていない時にローディングシーンとして利用される。 また this.loadingScene がアセットを利用する場合、その読み込み待ちの間にも利用される。

ここに代入される LoadingScene はアセットを用いてはならない。 初期値は new g.DefaultLoadingScene(this) である。

Private _doPopScene

_doPopScene: any

Private _doPushScene

_doPushScene: any

Private _eventTriggerMap

_eventTriggerMap: object

イベントとTriggerのマップ。

Type declaration

Private _focusingCamera

_focusingCamera: Camera

使用中のカメラの実体。

focusingcameraがこの値を暗黙的に生成するので、通常ゲーム開発者はこの値を直接指定する必要はない。

Private _idx

_idx: number

this.db のlastInsertId。 this.db が空の場合、0が代入されており、以後インクリメントして利用される。

Private _initialScene

_initialScene: Scene

グローバルアセットを読み込むための初期シーン。必ずシーンスタックの一番下に存在する。これをpopScene()することはできない。

Private _isTerminated

_isTerminated: boolean

this.terminateGame() が呼び出された後か否か。 これが真の場合、 this.tick() は何も行わない。

Private _loaded

_loaded: Trigger<Game>

グローバルアセットの読み込み待ちハンドラ。

Private _localDb

_localDb: object

このゲームに紐づくローカルなエンティティ (E#local が真のもの)

Type declaration

  • [id: number]: E

Private _localIdx

_localIdx: number

ローカルエンティティ用の this._idx

Private _main

_main: string

エントリポイント(mainスクリプト)のパス。

Private _mainParameter

_mainParameter: GameMainParameterObject

_loadAndStart() に渡された、エントリポイント(mainスクリプト)に渡す引数。

Private _operationPluginManager

_operationPluginManager: OperationPluginManager

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

Private _operationPluginOperated

_operationPluginOperated: Trigger<InternalOperationPluginOperation>

操作プラグインによる操作を通知するTrigger。

Private _sceneChangeRequests

_sceneChangeRequests: any

実行待ちのシーン遷移要求。

Private _sceneChanged

_sceneChanged: Trigger<Scene>

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

Private _scriptCaches

_scriptCaches: object

ScriptAssetの実行結果キャッシュ。 g.require経由の場合ここに格納される。

Type declaration

Private _start

_start: any

Private _started

_started: Trigger<void>

_start() 呼び出しから戻る直前を通知するTrigger。 エントリポイント実行後のシーン遷移直後にfireされる。 このTriggerのfireは一度とは限らないことに注意。_loadAndStart()呼び出しの度に一度fireされる。

age

age: number

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

assetBase

assetBase: string

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

assets

assets: object

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

Type declaration

audio

audio: object

本ゲームで利用可能なオーディオシステム群。デフォルトはmusicとsoundが登録されている。 SE・声・音楽等で分けたい場合、本プロパティにvoice等のAudioSystemを登録することで実現する。

Type declaration

db

db: object

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

Type declaration

  • [idx: number]: E

defaultAudioSystemId

defaultAudioSystemId: string

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

events

events: Event[]

処理待ちのイベント。

external

external: any

外部インターフェース。

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

focusingCamera

focusingCamera: Camera

使用中のカメラ。

Game#draw(), Game#findPointSource() のデフォルト値として使用される。 この値を変更した場合、変更を描画に反映するためには Game#modified に真を代入しなければならない。 (ただしこの値が非 undefined の時、Game#focusingCamera.modified() を呼び出す場合は Game#modified の操作は省略できる。)

fps

fps: number

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

height

height: number

ゲーム画面の高さ。

isLastTickLocal

isLastTickLocal: boolean

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

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

isLoaded

isLoaded: boolean

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

isSkipping

isSkipping: boolean

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

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

join

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

joinedPlayerIds

joinedPlayerIds: string[]

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

lastOmittedLocalTickCount

lastOmittedLocalTickCount: number

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

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

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

leave

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

loadingScene

loadingScene: LoadingScene

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

logger

logger: Logger

ログ出力を行う部品。プラットフォームに依存しないエラーやデバッグ情報の出力を行う。

modified

modified: boolean

画面更新が必要かのフラグ。

operationPlugins

operationPlugins: object

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

Type declaration

playId

playId: string

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

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

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

random

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

renderers

renderers: Renderer[]

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

resized

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

resourceFactory

resourceFactory: ResourceFactory

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

scenes

scenes: Scene[]

シーンのスタック。

seed

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

selfId

selfId: string

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

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

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

skippingChanged

skippingChanged: Trigger<boolean>

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

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

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

snapshotRequest

snapshotRequest: Trigger<void>

スナップショット要求通知。 ゲーム開発者はこれをhandleして可能ならスナップショットを作成しGame#saveSnapshotを呼び出すべきである。

storage

storage: Storage

ストレージ。

surfaceAtlasSet

surfaceAtlasSet: SurfaceAtlasSet

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

vars

vars: any

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

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

width

width: number

ゲーム画面の幅。

Methods

Private _abortGame

  • _abortGame(): void
  • Returns void

Private _callSceneAssetHolderHandler

  • Parameters

    Returns void

Private _decodeOperationPluginOperation

  • _decodeOperationPluginOperation(code: number, op: (string | number)[]): any
  • g.OperationEventのデータをデコードする。

    Parameters

    • code: number
    • op: (string | number)[]

    Returns any

Private _destroy

  • _destroy(): void
  • ゲームを破棄する。 エンジンユーザとコンテンツに開放された一部プロパティ(external, vars)は維持する点に注意。

    Returns void

Private _fireSceneLoaded

  • _fireSceneLoaded(scene: Scene): void
  • Parameters

    Returns void

Private _fireSceneReady

  • _fireSceneReady(scene: Scene): void
  • Parameters

    Returns void

Private _flushSceneChangeRequests

  • _flushSceneChangeRequests(): void
  • 要求されたシーン遷移を実行する。

    pushScene()replaceScene()popScene() によって要求されたシーン遷移を実行する。 通常このメソッドは、毎フレーム一度、フレームの最後に呼び出されることを期待する (Game#tick() がこの呼び出しを行う)。 ただしゲーム開始時 (グローバルアセット読み込み・スナップショットローダ起動後またはmainScene実行開始時) に関しては、 シーン追加がゲーム開発者の記述によらない (tick() の外側である) ため、それぞれの箇所で明示的にこのメソッドを呼び出す。

    Returns void

_handleJoinEvent

  • Parameters

    Returns void

_handleLeaveEvent

  • Parameters

    Returns void

_handleSkippingChanged

  • _handleSkippingChanged(isSkipping: boolean): void
  • Parameters

    • isSkipping: boolean

    Returns void

Private Abstract _leaveGame

  • _leaveGame(): void
  • Returns void

Private _loadAndStart

  • ゲームを開始する。

    存在するシーンをすべて(_initialScene以外; あるなら)破棄し、グローバルアセットを読み込み、完了後ゲーム開発者の実装コードの実行を開始する。 このメソッドの二度目以降の呼び出しの前には、 this._reset() を呼び出す必要がある。

    Parameters

    Returns void

Private _normalizeConfiguration

Private _onInitialSceneLoaded

  • _onInitialSceneLoaded(): void
  • Returns void

Private _reset

  • ゲーム状態のリセット。

    Parameters

    Returns void

Private _setAudioPlaybackRate

  • _setAudioPlaybackRate(playbackRate: number): void
  • Parameters

    • playbackRate: number

    Returns void

Private _setMuted

  • _setMuted(muted: boolean): void
  • Parameters

    • muted: boolean

    Returns void

Private _startLoadingGlobalAssets

  • _startLoadingGlobalAssets(): void
  • グローバルアセットの読み込みを開始する。 単体テスト用 (mainSceneなど特定アセットの存在を前提にする_loadAndStart()はテストに使いにくい) なので、通常ゲーム開発者が利用することはない

    Returns void

Private _updateEventTriggers

  • _updateEventTriggers(scene: Scene): void
  • Parameters

    Returns void

Abstract addEventFilter

  • addEventFilter(filter: EventFilter, handleEmpty?: boolean): void
  • イベントフィルタを追加する。

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

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

    Parameters

    • filter: EventFilter

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

    • Optional handleEmpty: boolean

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

    Returns void

findPointSource

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

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

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

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

    Parameters

    • point: CommonOffset

      対象の座標

    • Optional camera: Camera

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

    Returns PointSource

Abstract getCurrentTime

  • getCurrentTime(): number
  • 現在時刻を取得する。

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

    Returns number

Abstract isActiveInstance

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

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

    Returns boolean

leaveGame

  • leaveGame(): void
  • deprecated

    現在このメソッドは呼び出しても何も行わない。

    このゲームを離脱する。

    多人数プレイの場合、他のクライアントでは Game#leave イベントがfireされる。 このメソッドの呼び出し後、このクライアントの操作要求は送信されない。

    Returns void

popScene

  • popScene(preserveCurrent?: boolean): void
  • 一つ前のシーンに戻ることを要求する。

    このメソッドは要求を行うだけである。呼び出し直後にはシーン遷移は行われていないことに注意。 実際のシーン遷移は次のフレームまでに(次のupdateのfireまでに)行われる。 引数 preserveCurrent が偽の場合、このメソッドの呼び出しにより現在のシーンは破棄される。 またその時 stateChanged が引数 SceneState.Destroyed でfireされる。 その後一つ前のシーンの stateChanged が引数 SceneState.Active でfireされる。

    Parameters

    • Optional preserveCurrent: boolean

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

    Returns void

pushScene

  • pushScene(scene: Scene): void
  • シーンスタックへのシーンの追加と、そのシーンへの遷移を要求する。

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

    Parameters

    • scene: Scene

      遷移後のシーン

    Returns void

Abstract raiseEvent

  • raiseEvent(e: Event): void
  • イベントを発生させる。

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

    Parameters

    • e: Event

      発生させるイベント

    Returns void

Abstract raiseTick

  • raiseTick(events?: Event[]): void
  • ティックを発生させる。

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

    Parameters

    • Optional events: Event[]

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

    Returns void

register

  • register(e: E): void
  • このGameにエンティティを登録する。

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

    Parameters

    • e: E

      登録するエンティティ

    Returns void

Abstract removeEventFilter

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

    Parameters

    • filter: EventFilter

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

    Returns void

render

  • render(camera?: Camera): void
  • このGameを描画する。

    このゲームに紐づけられた Renderer (this.renderers に含まれるすべての Renderer で、この Game の描画を行う。 このメソッドは暗黙に呼び出される。ゲーム開発者がこのメソッドを利用する必要はない。

    Parameters

    • Optional camera: Camera

      対象のカメラ。省略された場合 Game.focusingCamera

    Returns void

replaceScene

  • replaceScene(scene: Scene, preserveCurrent?: boolean): void
  • 現在のシーンの置き換えを要求する。

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

    Parameters

    • scene: Scene

      遷移後のシーン

    • Optional preserveCurrent: boolean

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

    Returns void

Abstract saveSnapshot

  • saveSnapshot(snapshot: any, timestamp?: number): void
  • スナップショットを保存する。

    引数 snapshot の値は、スナップショット読み込み関数 (snapshot loader) に引数として渡されるものになる。 このメソッドを呼び出すゲームは必ずsnapshot loaderを実装しなければならない。 (snapshot loaderとは、idが "snapshotLoader" であるglobalなScriptAssetに定義された関数である。 詳細はスナップショットについてのドキュメントを参照)

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

    このメソッドを呼び出す推奨タイミングは、Trigger Game#snapshotRequest をhandleすることで得られる。 ゲームは、 snapshotRequest がfireされたとき (それが可能なタイミングであれば) スナップショットを 生成してこのメソッドに渡すべきである。ゲーム開発者は推奨タイミング以外でもこのメソッドを呼び出すことができる。 ただしその頻度は推奨タイミングの発火頻度と同程度に抑えられるべきである。

    Parameters

    • snapshot: any

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

    • Optional timestamp: number

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

    Returns void

scene

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

    Returns Scene

Abstract shouldSaveSnapshot

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

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

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

    Returns boolean

terminateGame

  • terminateGame(): void
  • このゲームを終了する。

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

    Returns void

tick

  • tick(advanceAge: boolean, omittedTickCount?: number): boolean
  • この Game の時間経過とそれに伴う処理を行う。

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

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

    Parameters

    • advanceAge: boolean

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

    • Optional omittedTickCount: number

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

    Returns boolean

unregister

  • unregister(e: E): void
  • このGameからエンティティの登録を削除する。

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

    Parameters

    • e: E

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

    Returns void

Generated using TypeDoc