SPACE SHOOTER

クラシックアーケードゲームの現代的リメイク

プロジェクト解説音声

約2分30秒の日本語解説(Google Cloud Text-to-Speech Neural2音声)

プロジェクト概要

Space Shooterは、クラシックなスペースインベーダーにインスパイアされたブラウザベースのアーケードゲームです。 現代的なWeb技術で再構築され、最新のゲームデザイン原則で強化されています。 サイバーパンクなネオン美学、レスポンシブデザイン、高度なゲームプレイメカニクスを特徴とし、 HTML5 CanvasとバニラJavaScriptの可能性を示すプロジェクトです。

14 モジュール
92.24% テストカバレッジ
615 テスト数
60 目標FPS

フレームワークを一切使用せずに構築されたこのゲームは、クリーンなアーキテクチャ、 包括的なテスト、パフォーマンス最適化技術を実演しています。コードベースは モジュラー設計、詳細なドキュメント、保守性の高いコード構造といった ソフトウェアエンジニアリングのベストプラクティスに従っています。

主な機能

ゲームプレイの革新

パワーアップシステム

戦略的なゲームプレイのために組み合わせ可能な3種類のパワーアップ:

  • 連射: 射撃速度が2倍に (300ms → 150ms)
  • シールド: 視覚効果付きの一時的無敵状態
  • マルチショット: 扇状に3発の弾を発射

独立したタイマーで最大3つのパワーアップを同時に重ね掛け可能。

コンボシステム

精密なプレイにスコア倍率で報酬:

  • 5連続ヒットで2倍
  • 10連続以上で3倍
  • 2秒経過またはミスでリセット

コンボシステムをマスターしてハイスコアを目指そう!

適応型パフォーマンス

デバイスの性能に応じて自動的に品質を調整:

  • ハイエンドデバイスで60 FPS
  • ミッドレンジデバイスで45 FPS
  • 旧型ハードウェアで最低30 FPS

FPSが40以下になるとパーティクルエフェクトを削減。

レスポンシブデザイン

あらゆるデバイスで最適なゲームプレイ:

  • 固定4:3アスペクト比 (800×600論理サイズ)
  • 320pxから2560pxまでCSSスケーリング
  • モバイルデバイスでのタッチ操作
  • 横向き・縦向き両対応

快適なモバイルプレイのため30%大きなタッチゾーン。

敵AI

現代的な精度を持つクラシックな動き:

  • 5×11グリッド編成 (55体の敵)
  • 同期した移動パターン
  • ウェーブごとに速度10%増加
  • 敵1体につきフレームあたり1%の発射確率

長時間のエンゲージメントのための段階的な難易度スケーリング。

ビジュアルエフェクト

パーティクルシステムを備えたサイバーパンクネオン美学:

  • 敵破壊時の爆発パーティクル
  • パワーアップのグローエフェクト
  • ネオンカラーパレット (シアン/マゼンタ/イエロー)
  • 60 FPSでのスムーズなアニメーション

ハイエンドデバイスで最大100パーティクル。

技術アーキテクチャ

14モジュールシステム

このゲームは、明確な責務分離を持つクリーンでモジュラーなアーキテクチャ上に構築されています:

コアモジュール (4)

エンティティモジュール (4)

システムモジュール (4)

UIモジュール (3)

ユーティリティモジュール (2)

パフォーマンス最適化

// AABB衝突検出 (O(n*m) 最適化済み)
CollisionSystem.checkCollision(rect1, rect2) {
  return !(
    rect1.right < rect2.left ||
    rect1.left > rect2.right ||
    rect1.bottom < rect2.top ||
    rect1.top > rect2.bottom
  );
}

// 適応品質システム
if (avgFPS < 40) {
  particleSystem.maxParticles = 50;  // 品質を下げる
} else {
  particleSystem.maxParticles = 100; // 高品質
}

Canvasスケーリングアルゴリズム

// ビューポートに収まるよう4:3アスペクト比を維持
const LOGICAL_WIDTH = 800;
const LOGICAL_HEIGHT = 600;

function resizeCanvas() {
  const scale = Math.min(
    window.innerWidth / LOGICAL_WIDTH,
    window.innerHeight / LOGICAL_HEIGHT
  );
  canvas.style.width = `${LOGICAL_WIDTH * scale}px`;
  canvas.style.height = `${LOGICAL_HEIGHT * scale}px`;
}

ブラウザ互換性

HTML5 Canvasをサポートするすべての最新ブラウザで動作:

開発プロセス

AI支援ワークフロー

このプロジェクトは、開発の異なる側面を処理する複数の専門サブエージェントを使用した 高度なAI支援ワークフローで開発されました:

  1. 要件分析: 機能要件と非機能要件を含む包括的な要件ドキュメント
  2. 作業分解構造: 9つの並列実行グループに整理された30タスク
  3. テスト設計: 実装前に設計された615テスト (TDDアプローチ)
  4. 並列実装: コア、エンティティ、システム、UIモジュールを同時構築
  5. 品質保証: パフォーマンスとコード品質のための3回の改善ループ
  6. ドキュメント: 包括的なドキュメント (README, API, GAMEPLAY)

テスト駆動開発

コードベース全体がTDD原則を使用して構築され、優れたテストカバレッジを達成:

90 コアテスト
120 エンティティテスト
190 システムテスト
165 UIテスト
40 ユーティリティテスト
80 統合 & E2E

品質メトリクス

プロジェクトタイムライン

最適化された並列実行により2.5日で開発完了:

技術スタック

はじめに

インストール

# リポジトリをクローン
git clone <repository-url>
cd space-shooter-game

# 依存関係をインストール
npm install

# 開発サーバーを起動
npm start

# テストを実行
npm test

# カバレッジ付きでテストを実行
npm test -- --coverage

オンラインでプレイ

ゲームを起動

ドキュメント

今後の機能拡張

計画中の機能 (優先度3)

コントリビューション

コントリビューションを歓迎します! 以下のガイドラインに従ってください:

  1. リポジトリをフォーク
  2. 機能ブランチを作成
  3. 変更に対するテストを作成 (80%以上のカバレッジを維持)
  4. すべてのテストがパスすることを確認
  5. プルリクエストを送信