Open5

ビートセイバーのクローンを作る

0y00y0

全体のアーキテクチャ設計

  • Prresentation
    • UI / View(ゲーム画面・エフェクト)
  • Infrastructure
    • 外部リソース(データの保存・読み込み)
  • UseCase
    • ゲームロジック(処理の流れ)
  • Domain
    • データモデル・ルール(スコア、ノーツ管理など)
0y00y0

🎨 Presentation層

📌 役割

  • UI・3Dオブジェクト・パーティクルエフェクトを描画
  • ゲームプレイの入力を処理
  • UseCaseから受け取ったデータを画面に反映

📦Infrastructure層

📌 役割

  • データの読み書き
  • オーディオ解析、シーンロード、ログ管理
  • 外部APIとのやり取り

🎮UseCase層

📌 役割

  • ゲームの進行に関するロジックを処理
  • Domainのデータを取得し、Presentationに渡す

💾Domain層

📌 役割

  • スコアやノーツのデータを定義
  • 各エンティティの状態管理(スコア、コンボ、音量など)
  • UseCaseに必要な計算やデータ処理を提供
0y00y0

💡 設計の特徴

Onion Architecture

  • 各レイヤーを明確に分けた
  • UseCaseはDomainのみ依存

DI(依存性注入)

  • Zenject を使いコンストラクタに依存関係を注入

非同期処理 & リアクティブプログラミング

  • UniTaskを活用し非同期処理を管理
  • UniRxでスコアやコンボのリアルタイム更新を実装

VR

  • MRTK3(XR Intaraction ToolkitXR Interaction Toolkit)によるVR表現
0y00y0

機能

🎮️コアゲームプレイ

  • ノーツのスポーン
    • 譜面に従ってノーツを生成
  • ノーツの移動
    • ノーツがプレイヤーに向かって移動
  • スライス処理
    • 剣の軌跡を検出し、ノーツをスライス
  • スライスエフェクト
    • ノーツを斬った際にパーティクルエフェクトを表示
  • 剣の軌跡描画
    • 動的にメッシュを生成して剣の軌跡を表示
  • コンボ判定
    • 連続でノーツをスライスするとコンボが加算
  • スコア計算
    • 正確にノーツをスライスするとスコア加算

🎶オーディオ関連

  • 音楽の再生
    • ゲームプレイ中に音楽を再生
  • スペクトラム解析
    • 音楽の周波数解析
  • オーディオビジュアライザー
    • オブジェクトの動的なサイズ変更や回転
    • マテリアルやライトの動的な色変更
  • スライス時のサウンドエフェクト
    • ノーツをスライスすると効果音を再生
  • 音量設定
    • BGM / SE の音量を変更

💾データ管理

  • ノーツデータの読み込み
    • JSON ファイルからノーツデータをロード
  • スコアの保存 & 読み込み
    • JSON ファイルにプレイヤーのスコアデータを保存
  • 音量設定の保存 & 読み込み
    • JSON ファイルにBGM / SE の音量を保存
  • ゲームのパラメータ
    • ScriptableObjectから設定をロード

📺UI/UX

  • スコア表示
    • スコアをリアルタイムで表示
  • コンボ表示
    • コンボ数をリアルタイムで表示
  • プログレスバー
    • 曲の進行度を表示

🕶VR

  • 視点移動
    • 視点の移動に合わせてカメラを動かす
  • コントローラーのトラッキング
    • コントローラーの移動に合わせてセイバーを動かす
  • ハプティックフィードバック
    • ノーツを斬った際にコントローラーを振動させる