@akashic/playlog

中文文档
3.4.1发布于 2025/02/21MITTypeScriptCommonJS零依赖近 30 天下载 1.2万

The interface definition of Playlog, the serialization format of Akashic game execution

原始使用文档
文档目录9 节
  1. 仕様
  2. Event
  3. Tick
  4. TypeScript型定義
  5. インストール
  6. 利用方法
  7. 開発
  8. ビルドテスト
  9. ライセンス

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

版本与发布记录

@akashic/playlog 共发布 10 个版本,首次发布于 2019/01/28;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.4.1latest2025/02/211.7 年前
3.4.02025/01/231.8 年前
3.3.02023/10/033 年前
3.2.02023/06/133 年前
3.1.02020/07/286 年前
3.0.02020/06/156 年前

关于 @akashic/playlog 的常见问题

@akashic/playlog 是什么?

The interface definition of Playlog, the serialization format of Akashic game execution

如何安装 @akashic/playlog?

在项目目录运行 npm install @akashic/playlog,或使用 pnpm add / yarn add / bun add。

@akashic/playlog 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@akashic/playlog 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@akashic/playlog 可以商用吗?

@akashic/playlog 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@akashic/playlog 的下载量有多少?

根据 npm 官方下载统计,@akashic/playlog 在 2026/10/06 – 2026/11/04 这 30 天内被下载 11,750 次,日均约 392 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@akashic/playlog 还在维护吗?

最新版本 3.4.1 发布于 2025/02/21(1.7 年前);至今共发布 10 个版本,其中过去 12 个月发布了 0 个;首次发布于 2019/01/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。