ロードバイクのペダリングスピードやパワーをコンピュータに伝達するスマートトレーナーで、実在する世界の都市を走り回れる独自のインドアバイクアプリを作ったのが前回までのお話。今回は、これを発展させてゲームを作ってしまおうという試みです。

記事の執筆時点では、ニューヨークのブロードウェイと、東京都練馬区の富士街道を選べるだけでしたが、その後ルートを増やし、ロンドンの中心街からアビーロードまで、東京の青梅街道を荻窪駅から新宿大ガード下まで、そして、リバプールのビートルズ史跡をめぐる2コースと、全部で6コースまで拡充しました。
月面を走れるようにしたりとかも。仮タイトルは「ムーンライダーズ」。
好きなコースをいつでも作れるようになったので、次の思いつきを実行することにしました。
以前作ってあった、絵文字を使って勝手にプレイを続けるローグライクゲーム「探犬♾️」を、スマートトレーナーに接続し、ロードバイクに乗りながらローグライクをプレイするものです。
さて、このゲームは、本物のローグが@を使っているのを絵文字に置き換えたら面白いのではないかという発想から、それにこれまた以前から作り溜めていた、無限音楽機関の仕組みを組み合わせ、ビートに合わせて自動探索していく、プレイヤーはそれを見ているだけ、というものです。
これもいろいろと拡張していって、当初はローグのように平面展開するだけだったのを、Wizardryのような疑似3Dビューも実装しました。
この3Dビューなら、インドアバイクシステムとの相性もよかろうということで、今回のローグライク+ロードバイク=ローグバイク、となったわけです。
発想自体はこれだけなので、あとは出来上がったものを組み合わせていくだけ。
まず、組み合わせの骨格です。インドアバイクアプリ側は、スマートトレーナーから受け取ったパワーとケイデンスを物理計算にかけて速度を出す、という部分をそのまま使います。空気抵抗、転がり抵抗、勾配、体重と車体の重さ。ここは都市を走っていたときと同じ式です。

一方の探犬♾️は、1マスを4mと決めました。走った距離のぶんだけ主人公が進みます。ペダルを止めれば主人公も止まります。どちらへ行くかは、これまでどおり主人公が自分で決めます。肉や薬、金、手負いの敵、まだ踏んでいない床、飽きてきたら階段。プレイヤーが与えられるのは速さだけです。
つまり、見ているだけだった探犬♾️が、脚を回さないと進まないゲームになりました。ローグライクの「ターン」が、ペダリングに置き換わったわけです。
戦闘はこうなっています。隣のマスにこちらに気づいた敵がいると戦闘に入り、そのとき相手の重さのぶんだけ、トレーナーの負荷が重くなります。鼠なら勾配2%ぶん、竜なら10%ぶん。敵がその強度に応じてペダルにのしかかってくる、という理屈です。


敵にはそれぞれ「守り」の回転数があって、それより速く回していると1秒に1回、攻撃が入ります。守りを30rpm上回れば会心の一撃で2倍。守りを下回っていると攻撃は当たりませんし、敵の攻撃も躱せません。鼠の守りは60rpm、竜は95rpmですから、竜と出会ったら10%の坂で95rpm以上を回し続けることになります。なかなかの地獄です。
体力が尽きると鎮魂歌が11秒流れ、転生します。転生の回数は記録に残ります。
音楽は、探犬♾️がもともと持っていた無限音楽機関をそのまま載せていますが、ひとつだけ大きな変更があります。拍がケイデンスそのものになったことです。90rpmで回せば90bpm、全力で踏めば150bpm。脚を止めると旋律が黙り、太鼓だけが遅くなって残ります。自分の脚がテンポを決めているので、曲に合わせて走るのではなく、自分の走りが曲になります。
楽風は元の探犬♾️と同じく、和、弦楽、オルガン、EDMの4つから選べます。オルガンは倍音を足し合わせて作ったパイプオルガンで、太鼓なし、I-vi-IV-Vの和音の上を分散和音が常動曲として走り、足鍵盤が通奏低音を刻みます。迷宮の石壁の中をバッハ風のオルガンで走るのは、なかなかの気分です。「おまかせ」にしておくと、転生のたびに違う楽風を引きます。

語りも入れました。ブラウザの読み上げ機能(Web Speech)で、「湿った石の匂いが、車輪の下から立つ」「出た。回せ」といった短い文を、状況に応じて喋ります。音楽が鳴っている間は語りのあいだだけ音量を下げ、終わると戻します。
ここで困ったのがWindowsの読み上げの誤読です。「脚」「角」「拍」「門」あたりを平気で読み間違えます。語りの文はすべてこちらで書いたものなので、文に出てくる語の読み表を持たせ、読み上げに渡す直前だけひらがなに直すことにしました。画面の表示は漢字のままです。「来る」は「くる」、「次の角」は「つぎのかど」。こういう地味な辞書作りは、AIに任せると速いです。
見た目は、最初からthree.jsによる3Dで、既定は主人公の一人称視点にしました。見えるのはハンドルと前輪だけ。迷宮の石壁や扉、階段の光、街の家並みや木や店の間を走ります。戦闘では相手のほうを向き、相手が目の前で脈打ちます。倒れると視界が傾いて沈みます。キーひとつで三人称(斜め後ろからの視点)と、従来の上から見た2Dの盤面にも切り替えられます。三人称視点だと、プレイヤーを見下ろせるのですが、それが漢字の「犬」なのでシュールすぎます。

当初は1マスを1拍単位でカクカク進んでいたのですが、インドアバイクで走っているときには不自然。そこで主人公が次の一歩を先に決めておき、マスの中心から走った距離のぶんだけ先に居るように描くことで、ペダリングに応じて滑らかに進むようにしました。踏み出す前から次に曲がる方を向くので、迷宮の角も自然に曲がります。
ハンドルバーの操作で進む方向を決めるのもできそうですが、それはオプションを買ったり自作する必要があるのでまたの機会に。
動かし方はページをChromeで開くだけです。Web Bluetoothでスマートトレーナーにつないで自転車にまたがる。トレーナーがなくても、パワーと回転数のスライダーで試せます。GitHub Pagesにアクセスするだけでプレイ(ライド)できます。
ローグライクとロードバイクを足しただけの思いつきでしたが、「次の角を曲がるまで脚を止めない」「竜が出たから全力で回す」という、インドアバイクに一番足りなかった「理由」が、ちゃんと生まれました。次は、無限バッハ機関そのものを持ち込んで、機能和声で転調しながら迷宮を走れるようにしたいと思っています。
このゲーム「探犬∞ Ride — TANKEN INFINITY RIDE」はGitHubでリポジトリを公開し、GitHub Pagesにアクセスすれば無料で制限なしで遊べます。自分でも試してみましたが、インターバルトレーニングにもなるので、結構な運動量です。
スマートトレーナーは高価ですが、Zwiftに対応したスピンバイクはら1万円台からあると思うので、よかったらお試しください。
遊ぶ URL(GitHub Pages):https://matsuo-koya.github.io/tanken-ride/?role=trainer

¥18,031
(価格・在庫状況は記事公開時点のものです)













