お手軽フォト弾幕ゲーム
🎮 プロジェクト概要
ジャンル:避けゲー(弾幕)
対応プラットフォーム:web(Unity)
開発環境:Unity + Python(FastAPI)+ C#
🔥 見どころポイント
- 圧倒的スパーク!!!!!
- 写真の撮り方次第で、いろいろな楽しみ方ができる
- 多種多様な弾幕
🚀 技術チャレンジ & 強み
① 弾幕はオブジェクトを使っていない!
大量の弾幕にはオブジェクトを使っていない!
GPU側で座標計算・描画を行う設計により、CPU負荷を最小化し、パフォーマンスを大幅に改善しました。
この弾幕と

この、激ヤバ弾幕

どちらも計算のみで描画しているので、ゲームが重くなりにくい!!
工夫ポイント
- Compute Shader / GPU Instancing を活用し、弾の位置更新をGPUで並列処理。
- DrawMeshInstanced により、同一メッシュを大量に描画してもオーバーヘッドを抑制。
- オブジェクト数を極限まで減らすことで、GCやUpdate負荷を回避。
メリット
- 軽量化:CPU負荷を削減し、WebGLでも快適に動作。
- スケーラブル:弾数を増やしてもパフォーマンスが安定。
- メモリ効率:オブジェクト生成・破棄をほぼゼロに。
② アセンブリを分割
Assembly Definition Files(asmdef) を活用してアセンブリを分割しました。
引用:Unity Assembly Definition 完全に理解した.https://qiita.com/toRisouP/items/d206af3029c7d80326ed .(アクセス日2025/11/23)
これにより、以下のメリットを実現!
- 依存関係の明確化:ゲームロジック、UI、ネットワーク、SDKなどを独立したアセンブリに分離し、モジュール間の責務を明確化
- 疎結合設計:API通信部分などをゲーム本体から切り離し、将来的な機能追加や差し替えが容易になった
③ 撮影した画像を点群のデータに変換
スマホのカメラで顔や物体を撮影し、機械学習モデルを使って画像から点群データを抽出できます。
この点群データをUnityに渡し、弾幕のパターン生成に利用することで、撮影した対象がゲーム内の攻撃パターンに変わります。

技術ポイント
- MediaPipeやOpenCVで画像から特徴点を抽出(顔のランドマークや物体の輪郭)。
- 点群データ(座標群)をJSONやWebSocketでUnityに送信。
- Unity側で座標をもとに弾幕を生成(例:顔の輪郭に沿って弾を発射)。
メリット
- インタラクティブ性:撮影したものが即ゲームに反映される。
- 機械学習の応用:画像認識をゲーム演出に活用。
- 拡張性:顔だけでなく、物体やポーズにも対応可能。
✨ その他の技術
- GithubはCopilotによる自動レビューの仕組みを作り、PRの質をあげた
workflowとして、自動でCopilotがレビューしてくれる

レビュー例:

⚠️ 困ったこと
- Unityでコンフリ地獄 → 気合い
- エラーと判定されないエラー(成功した値と似ている)の判別、修正が大変 → バックエンドの仕組みを、AIを活用しつつ理解して解決
- APIのやり取りが大変だった → C#とPythonのfloat型の互換性を確認。うまく通信できるようにした
- githubの容量制限 → 容量の大きいファイルをgitignoreしてpush(メンターさんありがとうございます!)
✅ 学びと感想
- 全員が大学一年生のチームで、完成できるか不安だったけれども、ゲームを完成させることができた!
- 事前に用件定義を詳細まで行ったため、開発期間は開発に集中することができた。
- それぞれの得意分野をもとに役割分担したことで、効率よく開発できたと思います。
🛠 使用技術
- Unity
- Python
- FastAPI
- C#
- Render
- MediaPipe