それまでRPGしかプレイしたことのない子供だったので、リアルタイムなゲームについていけるか不安だったのですが、このUIにかなり助けられた覚えがあります。今作OverridingのUIは3DゼルダのようなUIを目指して作られているからです。前回の記事(リンク)で初めてメジャーなリズムゲームを遊んだ話を書きました。ゲームを遊んだとき、現在ゲームセンターで稼働しているゲームはわりと玄人向けの設定も多く、難易度を変える設定すら(画面をよく読まない私が悪い部分も多くあるのですが......)確認しにくいといった印象を受けました。必要な機能のみを目立たせて伝えることを重視して製作しました。結果、このような画面になりました。この画面を作った時に私はわかりやすい画面を作ることができたと思っていました。テストプレイをしてくれるという人に遊んでもらうと、そもそもサイドボタンの存在がわからないと言われました。そのため、「音楽ゲーム初心者が見てもわかりやすく、サイドボタンの存在も十分確認できるUI」に方針を変更して、以下の変更を加えました。サイドボタンの色が灰色になっています。灰色のボタンがガイドにあるという違和感をもとに、サイドボタンを探してもらうガイドにしました。ボタンを押すと、そのボタンに対応するガイドが点滅するようにしました。することで上側の1番右のボタンをガイドでいう端のボタンだと勘違いさせないように修正しました。試しに遊んでもらわなければ実はわかりにくいデザインだったことに気づかないという結果になってしまいます。人に触ってもらいつつ意見を取り入れることがとても大切になってくる分野であることが再確認できました。してUIデザインもひと段落つき、だいたい遊べるようになってきました。これでゲームも完成間近です!......ソフトウェア面では。UIデザインが終了したのがだいたい10月の上旬でした。ここからなかなか進んでいなかったハードウェア製作を一気に進めることとなります。リズムゲーム制作本を作成します。2020年1月2日こんにちは、Boltzです。今回は、長大祭に出展する音楽ゲーム「Overriding」メイキング第3回ということで、レベルデザイン(譜面制作)の話をしていきます。現在、ゲーム制作の方は少しのバグ取りを残す感じです。システムの紹介などもこのブログやTwitterで行っていくので、どうぞお楽しみに!それでは本編です。ゲームセンターではよく見るゲームでありながら、いつ見ても威圧感を感じる筐体......。7つのボタンを押す動作と1つの皿を回す動作(スクラッチ)を音楽に合わせて行うDJシミュレーションゲーム。それは、BeatmaniaIIDXです。私は初めてこのゲームで遊びました。遊び始めたのはdjの達人になるためではなく、Overridingの制作において大きな行き詰まりがあったからです。譜面をどう書いていいのかわからない」というものでした。市場でメジャーなゲームを知らなかったために、どのような難易度調整をしていいか分からなかったのです。以前から私はある先入観を持っていました。圧倒的ボタン数を誇る(キーボードマニア?知らない子ですね......)BeatmaniaIIDXはいつか遊ばなければならない、というものです。いうことで、あの筐体に突撃しました。初挑戦の結果はお察しです......。7つの鍵盤と1つの皿が捌けるはずもなく、終始アワアワしてました。上達のため、夏休みは週2のペースでゲームセンターに通うようになりました。プレイを続けて気づいたことは、ビートマニアにはセオリーがあるということです。親指はこの鍵盤で......スクラッチは小指でやればいい、というように運指の方法がおおかた確立されています。若干上達がみられました。プレイを始めたのが9月半ばで、2ヶ月くらい経ったでしょうか。最初はレベル1の譜面ですらクリアが難しかったのが、レベル5を遊べるくらいにはなりました。して市場で人気のゲームを継続して遊んできたことで学ぶことがありました。ひとつは、譜面の作り方です。譜面をつくる上で、よく使われている音符の並べ方があります。音楽に合わせてキーを左から右に順番に押させる「階段押し」というものや、2つのキーを交互に押させる「トリル」といったものです。残りのキーでメロディをなぞらせるといった譜面もありました。UI(プレイヤーに見せる画面のこと)やUX(プレイヤーにどのような体験をさせるか)に関しても多くの発見がありました。演奏画面に近づくにつれてBGMの楽器パートが追加されていくことなどです。譜面制作を進めることになりました。進捗はかなり進みました。譜面制作を一部担当してもらったりもしました)さて、今回で譜面制作の大半が終わり、演奏画面については完成しつつあります。......演奏画面については、です。一般的なリズムゲームにはあと何画面存在するでしょうか。リザルト......とたくさんありますね。次回はこれらの画面をどうやって実装していったか、ということについて書いていこうと思います。今回も少し言葉が出てきましたが「UIデザイン編」です。リズムゲーム制作本を作成します。2020年1月2日こんにちは、Boltzです。演奏画面のプログラミングの話に入ります。Overridingとは、Unityで制作したPC用音楽ゲームです。音楽に合わせてタイミングよくボタンを押すことによってスコアを獲得します。前回の記事で、音楽ゲームを制作するという企画を通したはいいものの、Unity/C#の体験がほとんどない私は、どうプログラミングしたものかと悩んでいました。当時の私は、音楽ゲームといえどもスマートフォン向けのゲームや太鼓デバイスを使って達人になるゲームくらいしか知りませんでした。「6レーンに沿って音符が流れてきて、叩いたら得点が上がる」というゲームをどう実現させることができるのかわかりませんでした。音ゲー制作」などとGoogle先生に問い合わせ続けていたような気がします。実践的な方法を教えてくれ!と言いながらモニターをたたき割っていました。音ゲー」でサーチを掛けました。そこで、まさかのYoutubeにてUnityでの音楽ゲームの作り方動画を見つけたのです!!アニミングさんの「Unityで音ゲーを作ってみた」です。この動画では、Unityのあたり判定などをうまく利用したリズムゲームの制作方法が細かく説明されています。初期のころは動画を数十回視聴して、設計方法の理解に努めていました。音楽ゲームを成立させるロジックを理解する意味で、動画が完璧すぎます。Unityで音楽ゲームを作りたい方はとりあえずPart.11くらいまで見るといいと思います。この動画で重要なのは、Unityでノーツが生成される始点と判定ライン、終点を決めること。ノーツを始点から判定点、判定点から終点まで同じ秒数で移動させることによってノーツが流れている感じを出すことです。動画をみて、音楽ゲームをプログラムするにあたっての基本的な考え方がわかりました。動画で得た設計方法を元に一度組んでみました。そこで気づいたのですが、この動画の方法をそのままPC向け音楽ゲームにするには少し問題がありました。譜面作りをもっと楽にしたい4.ノーツの流れる早さ(BeatmaniaIIDXでいうFHS)をいじると判定が理不尽になるので、判定を動的に変えたいこれらに関しては、ひとつひとつ解決を試みていきました。日々の生活を送っていればふと解決策が思いつくこともあれば、プログラマーの方に直接質問して教えていただいたこともあります。以下にそれぞれの問題に対してどう解決を試みたかを書いておきます。ロングノーツの実装方法を新たに思いつく必要がある。考えた解決策が以下の通りです。ノーツが流れるスピードをnotesSpeedとします。ロングノーツの押し終わりの時間から、ロングノーツの押し始めの時間を引くと、ロングノーツのためにボタンを押下している時間になります。これをlongNotesTimeとします。notesSpeedとlongNotesTimeを掛けるとロングノーツの長さになります。これをUnityのScaleに換算してUnity空間の「ノーツ生成地点」に召喚してやればいいという考えに至りました。中学校に「道のり速さ時間」の考え方をロングノーツ生成に利用した考え方です。座標はデフォルトでロングノーツの中央を指しているので(positionはオブジェクトの中心を指しているというUnityの仕様に基づきます)正常に判定が行われません。判定するときには、ロングノーツの長さを2で割った値を判定ライン方向に足して伸ばしてやりましょう。音楽にノーツの到着が遅れる1つめの原因はCSVデータを配列に格納した上で、「ノーツが流れるべき時間にノーツを生成していること」です。決まった時間に流れ出すようにプログラムしておくと動作が速いかもしれません。演奏中に使いたくないですね。最初のロード時間あたりで、使用するノーツをすべて生成すればいいんじゃないでしょうか。lerp関数を使っていることです。生成地点から判定ラインまで何秒で動くと指定すること自体はいいのですが(今後ギミック譜面などをつくるのであればよくないですが)線形補間は到着時間に厳密性を求められる音楽ゲームで使用すべきではありません。そのため、今回は「生成地点から判定ラインまでx秒で流れるとして、いまノーツはどの地点にいるべきか」という情報を、音楽の再生時間に基づいて計算しました。これを全ノーツ分やったらかなり重いゲームになったので(14fpsくらい?)直近x秒分だけ演算させておくとよいのではないかと思います。これでそこそこのグラフィックボードを積んでいるPCでは60fpsで動作しました。譜面作りをもっと楽にしたい音楽に合わせてボタンを叩き、CSVデータにするのもいい方法ではあります。この方法をより厳密にするプログラムもネットのどこかで公開されていた気がします。(BPMを利用して、8分音符の感覚にスナップするやつ)しかし、これでは人間の指が追いつかない譜面やノーツが逆流してくるマイナス・テンポの譜面は作れません。(......Overridingにはそのような譜面は実装しておりませんので、安心してプレイしてください!)BMSエディタなど、譜面制作専用ツールで作った譜面を読む機能を搭載すると幸せになれる気がします。ノーツの流れる早さをいじると判定が理不尽になるので、判定を動的に変えたいPerfect判定ゾーンやGood判定ゾーンが固定されているため、ノーツの流れが速くなればなるほど判定が理不尽に(狭く)なってしまいます。これを解消するために、距離をベースとした判定システムを考えました。1フレームに進むノーツの距離を算出しておきます。yに任意の数字を掛けると、それが判定の誤差として許容されるフレームの数です。ボタンが押されたとき、判定ラインと最も近い距離にあるノーツの距離を算出します。これがperfectに収まっていれば判定をperfectとして処理し、goodに収まっていればgoodとして処理します。してあらかたの演奏画面の設計とプログラミングが終わりました。この方法にも問題があります。BPM(音楽の時間に習った四分音符イコールいくらみたいなの)に応じてノーツが流れてくる速さが変わるわけではありません。BPM80を基準としてノーツが流れてくる速さを調整したら、BPM300とかになったとたんノーツが詰まって流れてきたりします。(判定には問題ないはずですが、視認性がとても悪いです)要するに、まだまだ改善点はあります。一応、今回出展する範囲ではBPMが変動する楽曲はないので、そのようなことは起こらないとは思いますが......。次回作を作るとなれば真っ先に改善したいのはそこですね。リズムゲーム制作本を作成します。現在、100ページを超えてきたので、とてもお買い得だと思います。頒布を始めました!この記事で紹介している本をboothで頒布開始しました!よろしくお願いします!ダウンロード版https://ecml.booth.pm/items/1739359書籍版https://ecml.booth.pm/items/1739286(追記ここまで)さて、企画通りに、ゲームの核となる部分のプログラミングは終わりました。この時点で、7月が終わろうとしていました。企画とプログラミングが終わればゲームはもう遊べるのでしょうか?まだですね。ノーツは流れてくるものの譜面ができあがっていません。市販・市場のゲームをプレイして、ゲーム開発にフィードバックしていく体験について書いていきたいと思います。私が初めてゲームセンターの音楽ゲームに触れたりする話です。2018年11月10日こんにちは、Boltzです。今回はPC音ゲーであるOverriding制作過程を連載する企画の第1回目ということで、企画を始めた時の様子を書いていきたいと思います。Overridingとは、Unityで制作したPC用音ゲーです。6レーンそれぞれに1つのボタンが対応しており、音楽に合わせてタイミングよくボタンを押すことによってスコアを獲得します。今回はこのOverridingが制作されるきっかけとなった流れを順を追って説明していけたらと思います。このゲームには、去年のサークル活動とつながる部分もあるので、話は去年のサークル設立時に遡ります。このサークル「経済マルチメディア研究会」は、去年7月に私とけい、ナゾノクサの3人で立ち上げたサークルです。新入生を迎えるにあたって、サークルとしてひとつの芯を持った活動をできているか?(諸活動からサークル像が見えてくるか)という疑問がありました。3人で相談した結果、サークルの活動内容から変えてみようということになりました。話は変わりますが、私は高校の頃からQpic(九大で物理を研究しているサークル)やKMC(京大でマイコンを研究しているサークル)、traP(東工大でデジタル創作をしているサークル)などの団体に憧れがありました。外から見て、メンバー各々の得意分野(企画、レベルデザイン、グラフィック、音楽など)を組み合わせてひとつのゲームをつくるという体験が楽しそうに思えたからです。高校の頃、大学に入ったら是非そのような創作系団体に所属したい!と思っていました。長崎大学に入学して、そんな創作のできる団体があるのか調べてみたところ、残念ながら私のサーチには引っかかりませんでした。そのため、前々から長崎大学にゲーム制作のサークルを自分でつくりたい!または誰か作ってくれ!と考えていました。ようするに、今回の転機はちょうどいい部分があったのです。ゲーム制作の活動を軸に置くとなると、これまでのサークルの活動とは整合性がとれるかという疑問もありました。仮に活動内容をゲーム制作に変更しても各々の得意分野を生かして、PCで「マルチメディアコンテンツ」を制作し、発表するというサークルの活動とも矛盾するものにはならないと考えられます。そのため、活動内容を思い切ってゲーム制作に変更しました。大学主催のサークル勧誘の機会や、仮入会イベントなどを行った後に6人くらい新入部員が来てくれました。ゲーム制作サークルとなった「経済マルチメディア研究会」はメンバーを増強しつつ制作力を鍛えていかなければなりません。そのために、内製のゲームを制作して対外的に発表する必要があります。対外的に発表する場として長大祭を選べば、それまでに内製の開発もいくらかできるのではないかと考えられました。して4月に団体ツイッターアカウントで「長大祭にゲームセンターを出展する」と宣言。新入部員の有志にはプログラミングについて学んでもらいながら、発表するゲームの企画を立ててもらうことになりました。一通り講座が終わった後は、各々の考えたゲームの企画プレゼン会をすることにしました。一方で、後輩にばかりプランを作らせるわけにはいかず、自分も何かゲームの案を持ってこなければと思っていました。今年度の長大祭で発表するゲームは、当サークルにとっても初めての作品となるので、サークルのあり方や活動に関わるものなどを、何らかの形でゲームに入れられないかと思いました。そのため、4月時点では情報やコンピュータ、プログラミングを連想させるゲームをつくりたいと考えていました。迷走していた感じがあります。パリティチェックとかメモリ領域の確保を題材にしたシューティングゲームを作ろうと思いつきました。あまりにもコアな内容になる感じがして、それは誰にヒットするんだ、などとセルフ突っ込みをやっていました。これと言った案が出ずに悶々とした日々を送っていました。あるとき(その当時新しい音楽ゲームだったCytus2を遊んでいる時だったかな)音楽ゲームをつくろ〜と閃きました。閃くと同時に、音ゲーをこのタイミングにつくることで得られるメリットがいくつか浮かんできました。長崎大学の他のサークルの方々とつながりが持てること。4月の新入生勧誘の時点で、サークルに作曲家はいませんでした。ゲーム制作サークルを続けるにあたって、フリー音源に頼り続けるのもどうかと思っていました。音楽ゲームを作れば、楽曲の募集などで学内の作曲家と繋がれると考えられます。長大祭に展示するアーケードゲームとして、ある手法をとれば来場者に音楽ゲームの楽しさを伝えられるのではないかと思ったからでもあります。当時ハマっていたゲームはスマートフォンアプリのCytus2でした。高校生の頃からRayarkのゲームはプレイしており、一見新しいタイプの音楽ゲームに見えるけれども、一般的な音ゲーの核となる部分を持っており、音ゲー(というジャンル)の楽しさを十分感じられるゲームデザインにとても惹かれていました。この設計思想(新しさを感じさせつつ、音楽を聴かせてノーツを叩かせるゲームデザイン)をアーケードゲームに生かすことで、プレイヤーによりダイレクトにアーケード音楽ゲームの楽しさを伝えられるのではないかと思いました。最初に書いたとおり、Overridingは6レーンの音ゲーです。中央4レーンに対応する4ボタンは一般の音ゲーと同じく上を向いています(SoundVoltexなどを想像していただけるとわかりやすいと思います)新しい部分としては、両サイド2レーンは操作デバイスの側面についているところです。Cytusシリーズは譜面配置から、曲のどのパートを叩かせているのかプレイヤーに考えさせるゲームデザインをしていました。Deemoはピアノパートを聴かせて、基本的にピアノパートをプレイヤーに演奏させるゲームデザインでした。Overridingでは側面ボタンはリズムパート、4ボタンはメロディパートを基本的に当てています。プレイヤーにそれぞれのパート(メロディ、リズム)を聞き分けてもらいながら、それぞれ異なるボタンで演奏してもらえば、「音楽を聴いてプレイする」という音ゲー上達の一歩を踏み出してもらうことにもつながるのではないかと考えています。......というような主旨でプレゼン資料を作り、5月の企画プレゼンで企画を通しました。そのあとの専らの課題は作曲家探しでした。同じサークル棟を使用している音楽サークルにプレゼン資料を持ってお邪魔させていただいたり、部員の友達をあたったりして作曲を依頼する中で、長大生の作曲家さんにプレイ可能な楽曲を4曲前後制作していただける見通しが立ち、制作が本格的に始まりました。いま思い返してみると、かなり見切り発車で無茶な計画だったと思います。今年度のはじめから付き合ってくれた作曲家の方、グラフィック担当の方、本当にありがとうございます!!この連載中にもう何回かお礼をいうことになるだろうけど......。企画が通って実現の見通しが立ったところで、第1回企画編はおしまいです。実現の見通しが立ってよかったですね!!!......アーティストの方をみつけてくるだけで実現の見通しが立つのでしょうか?立ちませんね。これから、Unityで音楽ゲームを成立させるためにプログラミングをしていかなければなりません。第2回はプログラム編の予定です!第2回では、どのサイトを参考にして、どうアルゴリズムを組んでいったか書いていこうと思います。24に行われる長崎大学の学祭で遊べます。部員もそれぞれ多くのことを感じ取っているようで嬉しいです。今回からはOverridingの制作過程をブログに複数回に分けて連載していこうかと考えています。個人的に学ぶことも多かったのでこの際纏めてネットに公開していきます。Overridingとは、Unityという個人利用可能なゲームエンジンで制作したPC用音ゲーです。6レーンそれぞれに1つのボタンが対応しており、音楽に合わせてタイミングよくボタンを押すことによってスコアを獲得します。制作過程を連載しようと思ったのは、個人的に需要があるのではないかと思ったからです。Unityで音ゲーを制作するにあたって、最初はUnityでゲーム制作すらしたことがありませんでした。音ゲー」などをキーワードにたくさんGoogle先生に問い合わせてみていました。残念ながら、先生はUnityの音ゲー制作に対する体系的な情報をあまり下さらなかったので、ほぼすべての音ゲー制作過程をまとめることに多少の需要があるのではないかと思っています。サークルのブログで連載する意味もあると考えています。経済マルチメディア研究会はゲーム制作をするサークルだと銘打っています。この記事を通して、普段の活動とゲーム制作の大まかな流れを知ってもらえればよいと思っています。いうことで、この連載のターゲット層は以下の通りです。途中でBeatmaniaシリーズにハマった話・音ゲーをヒントにプログラミングを進めた話をするので、興味深いかも...!・今から音ゲーをUnityで組んでみたい方(完全ではないですが)プログラム面のアルゴリズムの話や、音ゲー制作で必要になりそうなプロジェクト管理の話をするので面白いかもしれません!・サークルへの加入を希望してくれている方ホームページのお問い合わせ欄からいますぐメールを!その後読み進めても遅くないですよ連載初回にあたり、自己紹介から入っていきます。このゲーム制作において、私は以下の役割を担いました。ゲームの原案を書き、制作の進行をする。スケジュール管理もする。細かなゲームの仕様を決定する。ゲームを面白くするアイデアを出して組み合わせる。ゲームの難易度などを通して、プレイヤーの体験を設計する。このゲームでは譜面制作などを主にする。メニューや演奏画面などのレイアウト設計を通して、ゲームの世界観やプレイヤーの体験を形作る。思い描いた案を実際にコンピュータにわかる形に翻訳して、コンピュータやゲームエンジンに伝える。完成したゲームの存在をターゲット層に効果的に伝える。ゲームをさらに魅力的に見せる。レベルデザイナーは3人でやったのですが、それ以外の役については1人でやりました。これらの役割の体験を中心に、必要に応じて2Dのイラストを描いてくれた人や作曲してくれた人を召喚しつつ連載していけたらと思います。本プロジェクト開始時点(5月)C言語(苦しんで覚えるC言語を流し読みした程度)とC#(書籍「Unityで覚えるC#」を半分くらい読んだ程度)について少しの知識を有していました。Unityについては「はじめてのUnity」のRoll-a-Ballとシューティングをつくりました。Unityのチュートリアルはやったものの実際の制作はやったことのない状態でした。この状態からどうやってゲームを組んできたのかなどを書いていけたらと思います。今回はこのあたりで、また次回お会いしましょう。