Skip to content

akashic-games/playlog

Repository files navigation

playlog

Akashicのゲームの実行ログの仕様及び、TypeScriptの型定義を提供します。 本リポジトリは型の定義のみを提供しています。 Akashic Engineの詳細な利用方法については、 公式ページ を参照してください。

仕様

EventTick の仕様を定義します。

これらは、通信路を流れる際のオーバヘッドを少なくするため、配列型のデータとなっています。

オプショナル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 の元で公開されています。