LoginSignup
3
0
お題は不問!Qiita Engineer Festa 2023で記事投稿!

Unityで音ゲーを作ろう(企画編)

Last updated at Posted at 2023-06-26

事の経緯

高校の文化祭で作ることになった。以上!

使用する予定のソフトなど

どんな音ゲーにしたいか

速度変化があり、カメラが動く音ゲー(Arcaeaとかチュウニズムとか)にしたい。
ラインは4つで行きたい。ノーツの種類はタップ、ロングくらい。

なら譜面を作るのはどうすんの?

まず出来合いのソフトで譜面を作成し、独自の形式に変換してから速度変化の動作などを作る。

どんな形式なの?

以下簡単に書きます

{
  "maindata": {
    "music": "音源ファイル名(拡張子あり,文字列)",
    "bpm": bpm(浮動小数点),
    "offset": オフセット(浮動小数点...?)
  },
  "chartdata": {
    "L1": {
      "L1data": {
        "notes": 1ライン目に降ってくるノーツの数
      },
      # 一列目の処理
      "1": {
        # タップノーツの場合
        "speed": ノーツの速度(デフォルトは0.1,浮動小数点),
        "time": 降ってくる(?)時間(浮動小数点),
        "type": "tap"
      },
      "2": {
        # ロングノーツの場合
        "speed": ノーツの速度(デフォルトは0.1,浮動小数点),
        "time": 始点が降ってくる(?)時間(浮動小数点),
        "endtime": 終点の時間(浮動小数点),
        "type": "long"
      },
      続く...
    },
    "L2": {
      ...
    },
    "L3": {
      ...
    },
    "L4": {
      ...
    }
  }
}

例(Tera-I/Oを使用させていただきました。また、譜面のデータは曲の途中までしかありません)

Tera-IO.json
{
  "maindata": {
    "music": "Tera-IO",
    "bpm": 200,
    "offset": 0
  },
  "chartdata": {
    "L1": {
      "1": {
        "speed": 0.2,
        "time": 0.0,
        "endtime": 2.4,
        "type": "long"
      },
      "2": {
        "speed": 0.2,
        "time": 9.15,
        "type": "tap"
      },
      "3": {
        "speed": 0.2,
        "time": 9.6,
        "type": "tap"
      },
      "4": {
        "speed": 0.2,
        "time": 10.799999999999999,
        "type": "tap"
      },
      "5": {
        "speed": 0.2,
        "time": 10.95,
        "type": "tap"
      },
      "6": {
        "speed": 0.2,
        "time": 11.1,
        "type": "tap"
      },
      "7": {
        "speed": 0.2,
        "time": 11.25,
        "type": "tap"
      },
      "8": {
        "speed": 0.2,
        "time": 11.4,
        "type": "tap"
      },
      "9": {
        "speed": 0.2,
        "time": 11.549999999999999,
        "type": "tap"
      },
      "10": {
        "speed": 0.2,
        "time": 11.7,
        "type": "tap"
      },
      "11": {
        "speed": 0.2,
        "time": 11.85,
        "endtime": 12.0,
        "type": "long"
      },
      "L1data": {
        "notes": 11
      }
    },
    "L2": {
      "1": {
        "speed": 0.2,
        "time": 2.4,
        "endtime": 4.8,
        "type": "long"
      },
      "2": {
        "speed": 0.2,
        "time": 9.2625,
        "type": "tap"
      },
      "3": {
        "speed": 0.2,
        "time": 9.487499999999999,
        "type": "tap"
      },
      "L2data": {
        "notes": 3
      }
    },
    "L3": {
      "1": {
        "speed": 0.2,
        "time": 4.8,
        "endtime": 7.199999999999999,
        "type": "long"
      },
      "2": {
        "speed": 0.2,
        "time": 9.375,
        "type": "tap"
      },
      "3": {
        "speed": 0.2,
        "time": 10.5,
        "endtime": 12.0,
        "type": "long"
      },
      "L3data": {
        "notes": 3
      }
    },
    "L4": {
      "1": {
        "speed": 0.2,
        "time": 7.199999999999999,
        "endtime": 9.6,
        "type": "long"
      },
      "L4data": {
        "notes": 1
      }
    }
  }
}

変換ソフトは?

別パートで書きます。

判定は?

Perfect,Good,Bad,Missの4つ

得点は?

1000000点満点で行く。
内部的にはPerfectに5、Goodに3、BadとMissに0点をつける。

レイアウト(作るオブジェクト)

  • ステージ
  • タップノーツ(L1からL4まで)
  • ロングノーツ(L1からL4まで)
  • 判定
  • コンボ
  • スコア
  • シークバー(?)

最後に

と、まぁこのような感じで作っていきます。
何日(7月中には終わらせたい)かかるかわかりませんが頑張ります(?)。
それでは次回パートまでしばらくお待ちください~

次回

とりあえずノーツを降らせるところまで行こう。
(ごめんなさい嘘書きました)
次パート

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0