このサイトはアフィリエイトリンクを含んでいます
スポンサーリンク

「和音なんてキーボードで打てない」タイポニカ初代 v1.0.0=和音版の開発秘話【原型編】

音楽ゲーム『タイポニカ』初代v1.0.0(和音版)のプレイ画面。判定ライン上に複数キー同時押しの和音ノーツ 作ってみた!
スポンサーリンク
スポンサーリンク

皆さん、こんにちは。あんちゃんです。今日は、音楽ゲーム『タイポニカ』のいちばん最初のバージョン(初代 v1.0.0・和音版)にまつわる、ちょっと恥ずかしい開発の裏話をさせてください。じつはこの初代、和音(複数のキーを同時に押す)で弾けることを本気で狙って作った「和音版」だったんです。ところが実際に自分で遊んでみたら——「和音なんてキーボードで打てないよ!」と、いきなり最初のつまずきにぶつかりました。これは、そのタイポニカ 初代 和音版という原型が生まれて、そして単音版へ方向転換するまでの、いちばん前の話です。しかも今回は、その初代 v1.0.0そのものを記事の中に埋め込んでおいたので、実際に触って「たしかに和音は打ちにくい!」を体験してもらえますよ。

あんちゃん
あんちゃん

この記事は「原型(プロトタイプ)の開発秘話」です。いま公開している完成版タイポニカとは別物の、いちばん最初の和音版を触れるようにしてあります。うまくいかなかった話なので、そこは笑いながら読んでもらえるとうれしいです!

スポンサーリンク
スポンサーリンク

初代タイポニカ v1.0.0は、じつは「和音版」でした

そもそものはじまりは、ぼくのこんな思いつきでした。「キーボードの各キーにドレミを割り当てて、ピアノみたいに演奏できたら楽しいよな」と。そこまではよかったんです。問題はこの次で、「せっかくピアノなんだから、和音で弾けたほうが本格的だろう」と考えてしまったこと。ピアノ曲って、右手でメロディを弾きながら左手で「ジャーン」と和音を鳴らしますよね。あのリッチな感じをそのまま再現したくて、複数のキーを同時に押す和音のノーツを、思い切って入れてみたんです。それが初代タイポニカ v1.0.0、つまり「和音版」でした。

きっかけは「ピアノなんだから和音で弾けたら本格的だろう」

この時点のぼくは、けっこう自信満々でした。上から和音のノーツが落ちてきて、それをタイミングよく「ジャーン」と押すと、ピアノらしい厚みのある音が鳴る——想像しただけでワクワクしますよね。単音でメロディをなぞるだけより、和音が入ったほうが絶対にゴージャスで気持ちいいはずだ、と。楽器の演奏って、単音のメロディをポツポツ鳴らすより、和音がドンと入ったほうが一気に「曲」らしくなりますよね。あの厚みを、キーボードでも出したかったんです。いま思うと、頭の中の「弾いている自分」がすでにピアノをスラスラ弾ける前提になっていたんですよね。ピアノなら10本の指をそれぞれ別の鍵に置いて、パッと和音を押さえられます。でもタイピングの手は、そういう構えをしていません。キーボードで和音を「打つ」のがどれだけ大変か、この時のぼくはまったく想像できていませんでした。

中段=白い鍵、上段=黒い鍵、下段=低い音。キー配置は初代から共通です

音階の並べ方は、この初代v1.0.0のときにもう決めていて、じつはそこから今の完成版までずっと共通です。キーボードの中段(ホームポジションの列)にドレミの白い鍵を、上段を黒い鍵(♯の音)、下段を低い音に割り当てました。A・S・D・F…と並んだ中段が、ちょうどピアノの白鍵になるイメージです。たとえば「きらきら星」なら、中段のキーだけで最初のドドソソララソ…がなぞれる、という具合ですね。ホームポジションに指を置いたまま弾ける曲は、いちばん入りやすいようにレベル1にしました。この配置自体はうまくハマったと思っていて、和音をやめたあとの単音版でも、いまの完成版でも、そのまま生き残っています。つまずいたのは配置ではなく、あくまで「和音を同時に押させようとした」ところだったんです。だからこそ、この記事では配置の話ではなく、和音そのものの話をしています。

これが初代の和音版そのもの。触ると「打てなさ」が分かります

言葉で「和音が打ちにくかった」と説明するより、実際に触ってもらうのがいちばん早いです。というわけで、下に初代タイポニカ v1.0.0(和音版)そのものを埋め込んでおきました。これは今の完成版ではなく、いちばん最初の原型です。特に草競馬(レベル4)あたりで和音のノーツが出てきます。実際に触ってみると、「和音を狙って複数のキーを同時に、しかもタイミングぴったりに押す」のがどれだけ難しいか、指で分かってもらえるはずですよ。よかったら少し遊んでから、この先を読み進めてくださいね。

▶ 初代・和音版(v1.0.0)を全画面で遊ぶ(別タブで開く)

収録は5曲。特に草競馬(レベル4)に和音ノーツが入っています

初代v1.0.0に入れた曲は5つ。きらきら星(レベル1)、メリーさんの羊(レベル1)、歓喜の歌=第九(レベル2)、猫踏んじゃった(レベル3)、そして草競馬(レベル4)です。どれも作曲者が亡くなって長い年月がたった、著作権フリー(パブリックドメイン)の曲を選んでいます。この初代v1.0.0では、特にいちばん難しい草競馬(レベル4)で、けっこうな回数「複数キー同時押し」の和音を要求されます。触ってもらうと分かるのですが、単音のところはまだしも、和音が来た瞬間に手が「え、どれとどれ?」と固まるんですよね。ゆっくりな曲ならまだ間に合っても、テンポの速い草競馬だと、和音を押さえにいっている間に次のノーツが来てしまう。この「固まる感じ」こそが、ぼくが最初にぶつかった壁でした。ぜひ草競馬まで進んで、この壁を体験してみてください。

和音のデータは、コードでいうとこの部分です

ちょっとだけ中身の話をさせてください。初代では、1つのノーツに複数のキーを持たせるために、譜面(曲のデータのこと)に「G B」のようにスペースで区切って書いておいて、split(” “)という命令で [“G”,”B”] という並び(配列)にバラしていました。1ノーツに複数キー、というわけですね。判定のほうは「全部のキーが押されたか」を確かめて、押されていれば、いちばんタイミングがズレた打鍵で良し悪しを決める、という作りです。この「複数キーを一度にそろえて押させる」ところが初代の肝で、あとでまるごと撤去することになった仕組みでもあります。

// 譜面データ:[拍, "キー"]。和音は "G B" のようにスペース区切り(同時押し)
[0,"G B"],[1,"G"],[2,"D"],[3,"G"],[4,"H"],[5,"G"],[6,"D Z"],
...
keys: n[1].split(" "),   // "G B" を ["G","B"] に分解(1ノーツに複数キー)
pressed: {},             // キー→押した時刻(和音用)
...
// 和音:全キーが押されたら、最もズレた打鍵で判定
var all = true, worst = 0, k;
for(k = 0; k < best.keys.length; k++){
  var pk = best.pressed[best.keys[k]];
  if(pk === undefined){ all = false; break; }
  worst = Math.max(worst, Math.abs(pk - best.sec));
}
if(all){ applyJudge(best, judgeOf(worst) || "good"); }

動くものはできて、この時点ではまだ満足していました

正直に言うと、初代が動いたときは「おっ、それっぽいのができたぞ!」とけっこう満足していたんです。曲は鳴るし、和音の判定もちゃんと動く。見た目にも「本格的なピアノゲーム」っぽい。作り手としては、この時点ではまだ失敗にまったく気づいていませんでした。落とし穴は、自分でくり返し遊んでみて、はじめて口を開けて待っていたんです。

やってみて分かった「和音なんてキーボードで打てないよ」

初代を何度も自分でプレイしているうちに、ぼくははっきり気づいてしまいました。「あれ、和音ってキーボードでは打てないぞ……」と。ワクワクして入れたはずの和音が、遊べば遊ぶほど、いちばんの「楽しくない原因」になっていたんです。ここからは、あくまでぼくが実際に触ってみて感じたことなので、技術的にこうだと断定できる話ではありませんが、正直な体感として書いておきますね。

タイピングは1キーずつ打つ動作。同時押しを狙って正確に叩くのは難しい

よく考えたら当たり前の話なんですが、ぼくらがキーボードで文字を打つとき、基本はいつも1キーずつですよね。「あ・い・う・え・お」と、指は1つずつキーを叩いていきます。ところがピアノの和音は、2つ3つのキーを「同時にピタッと」押す動作。この2つは、同じキーボードを使っていても、指の使い方がまったく別物なんです。しかも音ゲーなので、ただ同時に押すだけでなく、流れてくるノーツのタイミングにも合わせないといけない。「複数のキーを・同時に・タイミングよく」——この3つを一度に成立させるのが、思っていたよりずっと難しかったんです。

指がもつれて、練習にも音ゲーの気持ちよさにもつながらない

実際にやってみると、和音のノーツが来るたびに指がもつれて、片方だけ早く押してしまったり、狙ったキーの隣を叩いてしまったり。「ジャーン」と気持ちよく鳴るはずが、「ジャ…ラン」とバラけてしまうんですよね。しかも「次はどのキーとどのキーだっけ」と考えているうちに、判定ラインはどんどん過ぎていってしまう。単音なら反射でポンと押せるところが、和音になった途端に一拍止まってしまうんです。これだと、タイピングの練習にもならないし、音ゲーとしての「決まった!」という気持ちよさも味わえない。むしろ「うまく押せなかった」というストレスばかりが残ります。和音を入れたことで、かえって遊びも練習も両方だめになっていた、というのが正直なところでした。ちょっと悔しいですが、これも実際に自分で作って遊んでみたからこそ分かったことです。頭で考えているだけでは、たぶん一生気づけなかったと思います。

キーボードで和音(複数キー同時押し)を打とうとして指がもつれ戸惑うイメージ

だから次の一手は「和音を全部やめる」でした

ここでぼくは、思い切った決断をしました。せっかく入れた和音を、ばっさり全部やめることにしたんです。自信満々で作った目玉機能を撤去するのは、正直ちょっと勇気がいりました。でも、遊んで楽しくないものを「本格的っぽいから」という理由だけで残すのは違うな、と。原型でつまずいたからこそ、次に進む方向がはっきり見えました。

次のv1.1.0で和音を撤去して、打つのは単音だけにしました

次のバージョン(v1.1.0)では、和音(同時押し)のノーツを完全にゼロにしました。プレイヤーが打つのは、いつでも1キーずつの単音メロディだけ。その代わり、コードやベースといった伴奏の部分は、ゲームが自動で演奏してくれるように作り替えたんです。これなら「1キーずつ打つ」というキーボード本来の動きに素直で、指がもつれることもなくなりました。この和音をやめた単音の試作機については、別の記事で「じゃあ単音にしたら今度はどうだったの?」という続きの話を書いています。よかったらそちらもどうぞ。

「音楽でタイピング練習」はできる?タイポニカ試作機 v1.1.0 で気づいた本音【プロトタイプ編】
音楽でタイピング練習ができると思って試作機 v1.1.0 を作ったら、まったく練習になりませんでした。その失敗談と、練習を名乗るのをやめて完成版タイポニカ v1.2.0 として公開するまでの開発ストーリーです。

そして、いまの完成版タイポニカ(v1.2.0)にたどり着きました

和音をやめて単音にしたこの気づきが出発点になって、そこからさらに調整を重ねて、いま公開している完成版タイポニカ(v1.2.0)にたどり着きました。「キーボードで曲を奏でて楽しむ音楽ゲーム」として、無理のない等身大の形に落ち着いた感じです。完成版は下の記事の中にそのまま埋め込んであって、ブラウザで、しかも無料ですぐ遊べます。この初代の和音版を触ったあとに完成版を遊ぶと、「ああ、単音だとこんなに素直に打てるのか」という違いがよく分かると思いますよ。

音楽タイピングゲーム『タイポニカ』v1.2.0を自作!キーボードでピアノ演奏【無料・ブラウザ・第1弾】
音楽タイピングゲーム『タイポニカ』を無料でブラウザで遊べます。流れてくるキーを判定ラインで押すと、きらきら星や第九などの名曲がピアノの音で鳴る自作ゲーム。打つのは1キーずつ、伴奏は自動。シリーズ第1弾、この記事の中で今すぐ遊べます!

最初のつまずきも、正直に残しておきます

というわけで、「ピアノなんだから和音で弾けたら本格的だろう」と意気込んで作った初代タイポニカ v1.0.0(和音版)が、「和音なんてキーボードで打てないよ」といきなり最初のつまずきにぶつかり、そこから単音版へ、そして完成版へと進んでいった——という、いちばん前の原型の話でした。かっこいい成功談ではありませんが、この最初のつまずきがなかったら、たぶん今のタイポニカにはたどり着けていません。失敗も含めて、原型として正直に残しておこうと思います。

ちなみに、AIのClaudeと一緒にブラウザゲームを作るこのシリーズ、前にはテトリスも作っています。そちらは「スタートボタンは押せるのにゲームが始まらない」という怪奇現象と格闘した、これまた濃い開発の裏話です。うまくいかなかった過程を正直に書くつながりで、よかったらこちらものぞいてみてくださいね。

Claudeと作るテトリス最終決戦!「スタートボタンが押せない」謎とWordPressの罠を全部越えてv1.2.2完成【スマホ対応】
Claude(AI)と共同開発したブラウザテトリスv1.2.2の全記録。文字化け、押せるのに始まらないスタートボタン、4ライン消したのに2行残るバグ——WordPress埋め込みの罠を一つずつ解決した実録です。ゲームは記事内で遊べます。
あんちゃん
あんちゃん

最初のつまずきも、こうやって正直に書けてスッキリしました!和音版を触って「たしかに打てない!」と笑ってもらえたら、そのあとは完成版で気持ちよく曲を鳴らしてみてね。まずは「きらきら星」からどうぞ!

コメント

タイトルとURLをコピーしました