@akashic/playlog v3.4.1
playlog
Akashicのゲームの実行ログの仕様及び、TypeScriptの型定義を提供します。 本リポジトリは型の定義のみを提供しています。 Akashic Engineの詳細な利用方法については、 公式ページ を参照してください。
仕様
Event、 Tick の仕様を定義します。
これらは、通信路を流れる際のオーバヘッドを少なくするため、配列型のデータとなっています。
オプショナル が YES となっているものは、 null 又は配列末尾のデータであれば省略することができます。
numberは数値型、stringは文字列型を表します。
Event
Event はゲームに発生した出来事を表すデータです。
| EventCode | イベント |
|---|---|
| 0x0 | プレイヤー参加 |
| 0x1 | プレイヤー離脱 |
| 0x2 | 時間の記録 |
| 0x3 | プレイヤー情報 |
| 0x20 | 汎用的なデータ |
| 0x21 | ポイントダウン |
| 0x22 | ポイントムーブ |
| 0x23 | ポイントアップ |
| 0x40 | 操作プラグイン |
Event 共通のデータ・フォーマットは以下のようになります。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 0 | number | NO | EventCode |
| 1 | number | NO | イベントフラグ |
| 2 | string | NO | プレイヤーID |
インデックス2番以降は各イベントのデータがセットされます。
イベントフラグ
EventFlags は以下のビットフラグをからなる数値を表します。
| 下位ビット | 説明 |
|---|---|
| 0 | プライオリティ |
| 1 | プライオリティ |
| 2 | 予約フィールド |
| 3 | 非永続化フラグ |
| 4 | 省略可能フラグ |
下位0ビット目と1ビット目はプライオリティを表します。
下位3ビット目は非永続化フラグを表します。このビットが1の場合、対象のイベントは永続化されないことを許容します。
下位4ビット目は省略可能フラグを表します。このビットが1の場合、対象のイベントは任意のタイミングで欠落しうること許容します。
JoinEvent (0x0)
プレイヤーの参加イベントを表します。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 3 | string | NO | プレイヤー名 |
| 4 | StorageData[] | YES | ストレージデータ |
StorageData[] は 参加したプレイヤーに紐づくデータを表します。
StorageData のデータ・フォーマットは TypeScriptの型定義 を参照してください。
LeaveEvent (0x1)
プレイヤーの離脱イベントを表します。
TimestampEvent (0x2)
時間の記録を表すイベントです。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 3 | number | NO | 時間を示す値 |
時間を示す値同士を比較したときに、大きい値が未来の時間を表します。
PlayerInfoEvent (0x3)
プレイヤーの情報を表すイベントです。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 3 | string | NO | プレイヤー名 |
| 4 | any | YES | ユーザ定義データ |
MessageEvent (0x20)
汎用的なデータを表すイベントを表します。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 3 | any | NO | 汎用的なデータ |
PointDownEvent (0x21)
ポイントダウンイベントを表します。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 3 | number | NO | ポインターID |
| 4 | number | NO | X座標 |
| 5 | number | NO | Y座標 |
| 6 | number | YES | エンティティID |
| 7 | button | YES | ボタンの種類 |
PointMoveEvent (0x22)
ポイントムーブイベントを表します。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 3 | number | NO | ポインターID |
| 4 | number | NO | X座標 |
| 5 | number | NO | Y座標 |
| 6 | number | NO | ポイントダウンイベントからのX座標の差 |
| 7 | number | NO | ポイントダウンイベントからのY座標の差 |
| 8 | number | NO | 直前のポイントムーブイベントからのX座標の差 |
| 9 | number | NO | 直前のポイントムーブイベントからのY座標の差 |
| 10 | number | YES | エンティティID |
| 11 | button | YES | ボタンの種類 |
PointUpEvent (0x23)
ポイントアップイベントを表します。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 3 | number | NO | ポインターID |
| 4 | number | NO | X座標 |
| 5 | number | NO | Y座標 |
| 6 | number | NO | ポイントダウンイベントからのX座標の差 |
| 7 | number | NO | ポイントダウンイベントからのY座標の差 |
| 8 | number | NO | 直前のポイントムーブイベントからのX座標の差 |
| 9 | number | NO | 直前のポイントムーブイベントからのY座標の差 |
| 10 | number | YES | エンティティID |
| 11 | button | YES | ボタンの種類 |
OperationEvent (0x40)
操作プラグインイベントを表します。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 3 | number | NO | 操作プラグインコード |
| 4 | (number|string)[] | NO | 操作プラグインデータ |
Tick
Tick はゲームの1フレームを実行するために必要なデータです。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 0 | number | NO | フレーム番号 |
| 1 | Event[] | YES | イベント |
| 2 | StorageData[] | YES | ストレージデータ |
StorageData のデータ・フォーマットは TypeScriptの型定義 を参照してください。
Tick は通信路を流れる際に、以下のような最適化を実施することが望まれます。
number
Tick にフレーム番号しか含まない場合は、配列ではなくフレーム番号(number)のみを送信します。
TickList
TickList はフレーム番号の続く複数の Tick を表します。
| Index | 型 | オプショナル | 説明 |
|---|---|---|---|
| 0 | number | NO | 開始フレーム番号 |
| 1 | number | NO | 終了フレーム番号 |
| 2 | Tick[] | YES | Tick[1]又はTick[2]が存在するTick |
TypeScript型定義
インストール
npm install @akashic/playlog利用方法
import * as playlog from "@akashic/playlog";開発
ビルドテスト
cd test
tscライセンス
本リポジトリは MIT License の元で公開されています。 詳しくは LICENSE をご覧ください。
ただし、画像ファイルおよび音声ファイルは CC BY 2.1 JP の元で公開されています。