# @hackforplay/common HackForPlay でステージを構築するための共通パッケージ [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) [![npm latest version](https://img.shields.io/npm/v/@hackforplay/common/latest.svg)](https://www.npmjs.com/package/@hackforplay/common) ## 概要 @hackforplay/common は、教育用プログラミングゲーム「HackForPlay」でステージを構築するためのパッケージです。 ゲームオブジェクト、ルール、イベント処理などの機能を提供し、インタラクティブなゲーム作成を可能にします。 ## プロジェクト構造 ``` packages/game/ ├── src/ │ ├── hackforplay/ # コアモジュール │ │ ├── object/ # オブジェクト関連クラス │ │ ├── rule.ts # ルールシステム │ │ ├── rpg-map.ts # マップシステム │ │ ├── skin.ts # スキンシステム │ │ └── ... │ ├── register.js # エントリーポイント │ └── index.ts # メインエクスポート ├── test/ # テストファイル ├── dist/ # ビルド成果物 └── package.json # 依存関係 ``` ## 主要コンポーネント - **RPGObject**: すべてのゲームエンティティの基底クラス - **Rule**: イベント駆動型のゲームロジック管理システム - **RPGMap**: タイルベースのマップ管理と衝突検出 - **Player**: ユーザー入力とキャラクター制御 - **スキンシステム**: アセット管理とスプライト制御 ## 開発環境のセットアップ ```bash # 依存関係のインストール npm install # 開発サーバーの起動 npm start # ライブラリの使用 # http://localhost:8080/register.js から利用可能 ``` ## ビルドプロセス ```bash # パッケージのビルド npm run build # 以下のサブタスクが実行されます # 1. webpack: ブラウザ用コードのバンドル # 2. babel: Node.js用コードの変換 # 3. definition: 型定義ファイルの生成 ``` ## テスト ```bash # テストの実行 npm test # 特定のファイルのテスト npx ava test/specific-test-file.js ``` ## デプロイプロセス デプロイは以下の 2 つの場所に対して行われます: 1. **npm registry**: Node.js アプリケーションで使用するためのパッケージ 2. **Google Cloud Storage**: ブラウザで直接使用するための CDN ホスティング semantic-release を使用して、コミットメッセージに基づいて自動的にバージョンが決定されます。