3.3.0 • Published 7 months ago

@akashic/playlog v3.3.0

Weekly downloads
188
License
MIT
Repository
github
Last release
7 months ago

playlog

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

仕様

EventTick の仕様を定義します。

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

オプショナルYES となっているものは、 null 又は配列末尾のデータであれば省略することができます。

numberは数値型、stringは文字列型を表します。

Event

Event はゲームに発生した出来事を表すデータです。

EventCodeイベント
0x0プレイヤー参加
0x1プレイヤー離脱
0x2時間の記録
0x3プレイヤー情報
0x20汎用的なデータ
0x21ポイントダウン
0x22ポイントムーブ
0x23ポイントアップ
0x40操作プラグイン

Event 共通のデータ・フォーマットは以下のようになります。

Indexオプショナル説明
0numberNOEventCode
1numberNOイベントフラグ
2stringNOプレイヤーID

インデックス2番以降は各イベントのデータがセットされます。

イベントフラグ

EventFlags は以下のビットフラグをからなる数値を表します。

下位ビット説明
0プライオリティ
1プライオリティ
2予約フィールド
3非永続化フラグ
4省略可能フラグ

下位0ビット目と1ビット目はプライオリティを表します。

下位3ビット目は非永続化フラグを表します。このビットが1の場合、対象のイベントは永続化されないことを許容します。

下位4ビット目は省略可能フラグを表します。このビットが1の場合、対象のイベントは任意のタイミングで欠落しうること許容します。

JoinEvent (0x0)

プレイヤーの参加イベントを表します。

Indexオプショナル説明
3stringNOプレイヤー名
4StorageData[]YESストレージデータ

StorageData[] は 参加したプレイヤーに紐づくデータを表します。 StorageData のデータ・フォーマットは TypeScriptの型定義 を参照してください。

LeaveEvent (0x1)

プレイヤーの離脱イベントを表します。

TimestampEvent (0x2)

時間の記録を表すイベントです。

Indexオプショナル説明
3numberNO時間を示す値

時間を示す値同士を比較したときに、大きい値が未来の時間を表します。

PlayerInfoEvent (0x3)

プレイヤーの情報を表すイベントです。

Indexオプショナル説明
3stringNOプレイヤー名
4anyYESユーザ定義データ

MessageEvent (0x20)

汎用的なデータを表すイベントを表します。

Indexオプショナル説明
3anyNO汎用的なデータ

PointDownEvent (0x21)

ポイントダウンイベントを表します。

Indexオプショナル説明
3numberNOポインターID
4numberNOX座標
5numberNOY座標
6numberYESエンティティID
7buttonYESボタンの種類

PointMoveEvent (0x22)

ポイントムーブイベントを表します。

Indexオプショナル説明
3numberNOポインターID
4numberNOX座標
5numberNOY座標
6numberNOポイントダウンイベントからのX座標の差
7numberNOポイントダウンイベントからのY座標の差
8numberNO直前のポイントムーブイベントからのX座標の差
9numberNO直前のポイントムーブイベントからのY座標の差
10numberYESエンティティID
11buttonYESボタンの種類

PointUpEvent (0x23)

ポイントアップイベントを表します。

Indexオプショナル説明
3numberNOポインターID
4numberNOX座標
5numberNOY座標
6numberNOポイントダウンイベントからのX座標の差
7numberNOポイントダウンイベントからのY座標の差
8numberNO直前のポイントムーブイベントからのX座標の差
9numberNO直前のポイントムーブイベントからのY座標の差
10numberYESエンティティID
11buttonYESボタンの種類

OperationEvent (0x40)

操作プラグインイベントを表します。

Indexオプショナル説明
3numberNO操作プラグインコード
4(number|string)[]NO操作プラグインデータ

Tick

Tick はゲームの1フレームを実行するために必要なデータです。

Indexオプショナル説明
0numberNOフレーム番号
1Event[]YESイベント
2StorageData[]YESストレージデータ

StorageData のデータ・フォーマットは TypeScriptの型定義 を参照してください。

Tick は通信路を流れる際に、以下のような最適化を実施することが望まれます。

number

Tick にフレーム番号しか含まない場合は、配列ではなくフレーム番号(number)のみを送信します。

TickList

TickList はフレーム番号の続く複数の Tick を表します。

Indexオプショナル説明
0numberNO開始フレーム番号
1numberNO終了フレーム番号
2Tick[]YESTick[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 の元で公開されています。