← ソースコード説明書

packages/battle, ui, tools, vscode-ks-ksc

packages/battle - コマンドバトルシステム

概要

ターン制バトルシステム。ダメージ計算、ステータスエフェクト、AI、勝敗判定を提供する。

ディレクトリ構成

packages/battle/
├── src/
│   ├── core/
│   │   ├── types.ts          # バトルデータ構造 (300+行)
│   │   ├── damage.ts         # ダメージ計算式
│   │   ├── rng.ts            # シード付き乱数生成
│   │   ├── applyAction.ts    # アクション適用
│   │   ├── victory.ts        # 勝敗判定
│   │   └── simulate.ts       # バトルシミュレーション
│   ├── ai/
│   │   └── simpleAi.ts       # 基本 AI 戦略
│   ├── data/
│   │   ├── skills.ts         # スキル定義
│   │   └── troops.ts         # 敵グループ構成
│   └── index.ts              # 公開 API (24行)
├── __tests__/
│   ├── damage.test.ts
│   ├── rng.test.ts
│   └── simulate.test.ts
├── package.json
└── vitest.config.ts

主要型

interface BattleState {
  actors: ActorState[];        // 味方パーティ
  enemies: EnemyState[];       // 敵パーティ
  turn: number;
  phase: 'player' | 'enemy' | 'result';
}

interface ActorState {
  id: string;
  name: string;
  hp: number; maxHp: number;
  mp: number; maxMp: number;
  atk: number; def: number;
  skills: string[];
  statuses: StatusEffect[];
}

interface SkillDef {
  id: string;
  name: string;
  type: 'attack' | 'heal' | 'buff' | 'debuff';
  power: number;
  mpCost: number;
  target: 'single' | 'all';
}

主要関数

関数説明
simulate(state, actions)バトル全体をシミュレート
applyAction(state, action)1アクション適用
calcDamage(attacker, defender, skill)ダメージ計算
checkVictory(state)勝敗判定 (win/lose/escape/ongoing)
simpleAi(enemies, actors)AI のアクション選択

依存関係

  • 内部: なし
  • 被依存: packages/web (バトルシーン描画)

packages/ui - 共有デザインシステム

概要

React + Tailwind CSS の共有 UI コンポーネントライブラリ。

ディレクトリ構成

packages/ui/
├── src/
│   ├── components/
│   │   ├── Button.tsx          # ボタン (primary/secondary)
│   │   ├── Card.tsx            # カードコンテナ
│   │   ├── Input.tsx           # テキスト入力
│   │   ├── Modal.tsx           # モーダルダイアログ
│   │   └── index.ts
│   ├── theme/
│   │   └── index.ts            # テーマ定義
│   └── index.ts
├── tailwind.config.js
├── package.json
└── vite.config.ts

コンポーネント

コンポーネント説明
Buttonprimary, secondary バリアント
Cardコンテナコンポーネント
Inputテキスト入力フィールド
Modalダイアログ/モーダルオーバーレイ

依存関係

  • React 18+, clsx, Tailwind CSS (peer)

packages/tools - アセット処理 CLI ツール

概要

動画→PNG 変換、背景除去、WebP 変換などのアセット処理 CLI ツール群。

ディレクトリ構成

packages/tools/
├── src/
│   ├── cli.ts          # メイン CLI エントリ
│   ├── mp4topng.ts     # 動画→PNG フレーム抽出
│   ├── rmbg.ts         # 背景除去
│   └── webp.ts         # WebP 変換
├── package.json
└── tsconfig.json

ツール

ツール説明依存
mp4topngMP4 → PNG シーケンスffmpeg-static, fluent-ffmpeg
rmbg背景除去 (外部 API)
webp画像 → WebP 変換sharp, node-webpmux

依存関係

  • ffmpeg-static / fluent-ffmpeg (動画処理)
  • sharp (画像処理)
  • archiver (ZIP 作成)

packages/vscode-ks-ksc - VSCode 拡張

概要

.ks (TyranoScript 風) と .ksc (TypeScript 風) スクリプトファイルの VSCode 言語サポート。

ディレクトリ構成

packages/vscode-ks-ksc/
├── syntaxes/
│   ├── ks.tmLanguage.json      # .ks 構文ハイライト
│   └── ksc.tmLanguage.json     # .ksc 構文ハイライト
├── language-configuration/
│   ├── ks.language-configuration.json
│   └── ksc.language-configuration.json
├── snippets/
│   ├── ks.snippets.json        # .ks コードスニペット
│   └── ksc.snippets.json       # .ksc コードスニペット
└── package.json                # VSCode 拡張マニフェスト

機能

  • 構文ハイライト: .ks と .ksc の TextMate 文法定義
  • 言語設定: ブラケット、コメント、インデントルール
  • コードスニペット: 頻出パターンの入力補助
  • VSCode 1.85+ 対応

依存関係

  • なし(VSCode 拡張マニフェストのみ)
Ad: stickyBottom (728x90)
kaedevn - ノベルゲームを作れるプラットフォーム