npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@akashic/playlog

v3.3.0

Published

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

Downloads

3,214

Readme

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 の元で公開されています。