サンプルゲーム魔改造して自作音ゲー作ってみた

※この記事は東京電機大学 Advent Calendar 2022 24日目の記事です。

qiita.com

はじめに

電大生もそうでない方もはじめまして!東京電機大学 理工学部 情報システムデザイン学系(以下「RD」) 4年の「すわん」です。学系長すぎて書くのめんどい
普段はゲーム全般を遊ぶことや作ることが大好きで、ここ数年は音ゲー中心を触れています。PCとにらめっこしたり、ゲームセンターにある筐体やiPadを毎日のようにいじっています。
このような記事を書くのは、初めてなので何かと至らない部分はあると思われますが、ご了承ください。

「Unity」触ったことありますか?

おそらく読者の皆様の99%はご存知かと思われますが、現在、ゲームを作るのに便利なツールとして「Unity」が公開されています。
弊学においてもRDでは「ゲームプログラミングI」でUnityの基本について触れたり、千住・鳩山キャンパスにはUnityに関連する部活・サークル・研究室などが多数存在します。
なので電大生である以上「Unity」は何かと一度は触れたことがあるよ!という人は多いのではないかと思います。

自分の好きを詰め込んだオリジナルゲーム作ってみませんか?

「もっとこのゲーム気持ち良く遊べないかな...?」「こんなシステムがあればもっと楽しそう」etc...
色々な意見はありますが、ゲームを遊んでいると、もっとこうなればいいのにと考えたことは、誰もが一度はあると思います。
勿論、その想いを運営に伝えるといった方法が一般的ではありますが、もっと手っ取り早い方法があります。

もう全部自力で思い通りのゲームを作っちゃえばいいのです。
(究極のほならね理論)
え?ゲームの作り方とかプログラムとか全く分からない?授業でしか触っていなくてよく分からない?

御安心ください!
音ゲーを作りたいと考えてた筆者は、音ゲーの作り方の「お」の字も分からない状態から、サンプルゲームのプログラムを弄って、現在公開中「RUN&BEAT」(体験版)を作り上げました!

せっかく電大(あるいは入門書等)で触れたUnityで自分の好きを詰め込んだ創作、してみませんか?

作ってみたいゲームを考えよう

まずは、自分が「こんなこと出来たら楽しいな」と思えるようなゲームの案を考えてみましょう!筆者の場合、
store.steampowered.com 「Musedash」や、
www.nintendo.co.jpハーモナイト
のように敵を倒しながら進む音ゲーを作ることに憧れていたので、アクションの部分についてはこれらのゲームの要素を採用しようと決めました。
続いて、「音ゲー」としてどうしていきたいか?という部分ですが、日々狂ったようにゲームセンターに行ってる筆者なので、アーケード音ゲーの要素を採用しよう!となりました。普段やっている音ゲーのメインは、SEGA制作の「チュウニズム」なので、最初はチュウニズムの要素を音ゲー部分に入れようと考えました。
chunithm.sega.jp しかし、他にもSEGAで開発されているアーケード音ゲーとして、「オンゲキ」と「maimai」があり、「敵に対処しながら音楽にノるゲーム」の親和性としては、敵の弾幕を避けながらプレイヤーを操作する「オンゲキ」の要素が一番適しているのではないかと考え、最終的にオンゲキベースで作ろうと考えました。(もちろん後で追加はできるしね)

ongeki.sega.jp



このようにして、作りたいゲームが決まったら、早速Unityを開いて、簡単なサンプルゲームをマネしてみましょう!

サンプルゲームをマネしよう

ようやく本題です。前置きなげーよ
筆者の場合、プレイヤーを走らせながら、リズム良く敵を倒したいという考えがあったので、まずは簡単なランゲームをマネすることにしました。こちらの「ゆうきやん」氏のランゲームをベースにしました。 www.unityprogram.info

この方のサイトを参考にしてマネしたものがこちらになります、いい感じのランゲームっぽい動作ですね。

ただし、これではオリジナリティが1mmも無いので、ここから「自分好み」に改造していきます。
まずは、ゲームの舞台を考えていきます。街中を走り抜けるゲームにしたかったので、アセットストアから良さげな街のオブジェクトを引っ張ってきます。デザインの知識が無くても手軽に見た目を良くできるようになったの本当素晴らしいですよね...

先ほどの動画では道となるオブジェクトがひと繋がりのクソ長Cubeでしたが、流石にそれでは汎用性が無い上にステージを作るのが大変なので、このようなひとかたまりの道である「プレハブ」を作っておくと良いでしょう。これにて一旦ランゲーム部分の基礎については以上です。

音ゲー部分をマネしよう

続いて、音ゲーの要素作りですが、先述の通り筆者は音ゲーのプログラムを全く理解していなかったので、シンプルな音ゲーをマネすることから始めました。こちらの「Teach」氏の音ゲーの作り方をベースにしました。 qiita.com
この方のサイトを参考にしてマネしたものがこちらになります、動作自体はアレですが、この記事のおかげで、「ノーツの生成や流し方」「判定バーによる判定」など音ゲー制作の基本となる部分を理解することができました。

これも自分のゲームに合うように改良していきましょう。まず、ゲームの奥行きですが、あまりにも深すぎて目が疲れるので、背景っぽい壁を用意しました。


今回はプレイヤーの方を動かすので、敵自体は生成した位置から固定します。そして、判定に使うバーはプレイヤーの動き(厳密にいうとZ座標)に連動して動かす仕組みとしました。

他には、音ゲーでとても重要な「判定」についてなのですが、実際の音ゲーのような派手な出し方って難しいんですよね...なので、簡単な所から分解して考えました。

1. コンソールに判定を表示させる(タイミングが良ければ、Debug.Log()で判定を出力するだけ)
2. 判定を表示させるUIを1箇所用意する。全体のノーツの判定によって、文字が切り替わる。
3. ノーツとなる敵キャラクターの位置から、判定文字のUIを表示。
4. カッコよくフェードイン・アウト(これは自分の好みで)

Q「2と3の違いって何かあるの?」
A「2個以上のノーツを同時に処理した場合や、ノーツを処理する間隔が短くても、判定が分かりやすいのがメリットだよ!」

コンソールでの判定(見づらくてすみません)


このように、一見難しそうな処理でも、今まで触ったことがある所から始めていくと結構上手くいきます。
これにて、音ゲー部分の基礎については以上です。ランゲーム部分と比べるとわかりづらくて申し訳ないのですが、要は簡単なものをマネして、自分好みに改造したということです。

色々自分好みにしていこう

基本的な部分が完成したら、後は自分の「魅せたい」要素をどんどん追加していくだけです!
例えば、効果音やエフェクトを入れたり...
快適に遊べるように画角を変えてみたり...1
ラグらないように、ノーツや道をリスト管理してみたり...2
こうしてなんやかんやありまして、完成したゲームがこちらです。


他にも、選曲画面やチュートリアルやオプション設定など、様々な機能を実装しましたが、この記事では割愛します。

おわりに

最後までこの記事を読んでくださった皆様、ありがとうございました。
ゼロからゲームを作ることは難しいですが、サンプルの真似などの工夫次第で、ゲーム作りの敷居はグッと下がります。
もし何かを創作することに興味があれば、ぜひ「ゲーム制作」にも目を向けてみてはいかがでしょうか?

ちょっとだけ宣伝

現在、ランアクション音楽ゲーム「RUN&BEAT!!!」体験版をこちらのリンクから、公開しております。

RUN&BEAT!!! - Google ドライブ

また、正式版につきましても鋭意制作中で、可能であれば年末年始中には出したいと考えております。
YouTubeで誰もが一度は聴いたことがある「魔王魂」さんの楽曲や、音ゲーに多数、楽曲を収録されている「t+pazolite」さん、「LeaF」さんの楽曲、また、有志の方からの楽曲を順次収録予定です。ぜひともダウンロードして頂けると幸いです!


  1. この記事書きながら思ったけど、SOUND VOLTEXみたいにプレイ中に画角変えるのも面白いかもしれない
  2. オブジェクトプールってやつです。話すと長くなりそうなので割愛で()