はじめに

皆さん、加速度センサプログラマって知ってますか?昔(2013年頃)プログラミング教材市場で粋(イキ)に暴れまわってたっていうぜ販売されていた、その名の通り加速度センサをメインに据えたプログラミング教材です。

加速度センサプログラマ

製品自体は諸般の事情で短命に終わりましたが、この商品には本体をコントローラとした玉転がしゲーム「加速度センサシミュレータ」が公開されていました。

加速度センサシミュレータ

加速度センサシミュレータは、フリーの物理エンジン「Bullet」を利用し、PCに接続した本体の傾きと連動して画面上のボールを動かし、玉転がしゲームを通して加速度センサの挙動や物理的な体験を行うことを目的としたソフトウェアです。

プログラミングソフトウェア(BeautoBuilder)は本体が無ければどうしようもないですが、このソフトだけなら本体が無くてもキーボード操作に対応させれば今でも使い道があるんじゃね!?と思い立って、改造してみることにしました。

今のところ操作は加速度センサプログラマ本体(まだ持ってる人いるのか?)とキーボードのみです。ゲームと言いながらゲームパッドには対応していません。
いっそのことかつてのアタリのマーブルマッドネスのようにトラックボールに対応したり、かつてのタイトーのキャメルトライのようにパドルに対応するでも良かったのかもしれません…というかWindowsのゲーミングデバイスでパドルってあるのか?(あった!高いな!)

ソフトの導入

ソフトは以下のURLで公開しています。マニュアルも同じ所からDLできます。

http://vstone.co.jp/products/vs_gs001/download.html#03

おなじみexe形式(インストーラ)とzip形式の二つを用意していますが、後述の設定ファイルを書き換えて遊ぶことを考えると、後者のzip形式を激しくお勧めします。

実行にはDirectX9のランタイムライブラリも必要です。プログラムを実行して何かエラーが出るようなら、マニュアルにも書いていますが、下記URLからランタイムのインストーラをDLしてインストールしてください。

https://www.microsoft.com/ja-jp/download/details.aspx?id=35

起動画面はこんな感じです。今どきの16:9ではなく4:3想定の画面比のため、フルスクリーンにすると縦に潰れるのが、地味にやる気を削がれますね。

起動画面

操作方法とか

皆さん、無事起動できましたか?できましたよね?できたことを信じて操作説明に移ります。
元々の操作方法は、USB接続した本体の加速度センサ情報を読み取って操作する形式でしたが、それを以下のようにキーボード操作に置き換えています。

  • カーソルキー…本体の前後左右の傾き
  • スペースキー…本体の操作ボタン
  • Z/Xキー…本体を上下に振る動き

まあ、大体雰囲気でわかりますよね?(わかりますよね!?)
メニュー画面では、カーソルキー左右で項目を選んでスペースキーで決定します。
ゲーム中はカーソルキーを押した方向にボールが転がり、Zキーを押すとジャンプします。
ちょっとしたテクニックで、ZとXキーを同時に押しっぱなしにしてXキーだけ離すと大ジャンプしますが、特に使いどころはありません。

ゲームの目的はいたってシンプル、ボールをゴールまで運ぶことです。コース上で新築マンションのチラシのように発光している緑のエリアがゴールです。

緑に発行しているのがゴールエリア。
画面右下にはミニマップを表示

注意として、ボールが空中に浮いた状態では操作が反映されません。地面に接触した状態の時だけ操作が効きます。アクセルとブレーキの無いスピンディジーだと思ってください。
ゴール判定はこれまた「ゴールエリア内で地形に接触したとき」なので、空中にいる間はゴール判定されないのに注意です。

他に、ゲーム中F1~F4を押すと地形がワイヤーフレーム表示になったり、フラットシェーディングになったり、テクスチャや影が表示されなくなったりします。

また、F5,F6を押すとカメラアングルが微妙に変わります。
無駄に変な機能を盛り込んでますね。

コースの紹介

せっかくだから俺はこの赤の扉を選ぶぜイカれたコース達を紹介するぜ!

障害物

物理エンジンの体験用にテキトーに障害物を配置したテストコース。
ジャンプを駆使して箱に昇ってみたり、円柱を転がしてみたり、ドミノ倒しで日々のストレスを解消したりしてください。飽きたらゴールしてください。

凸凹のある地面

この地形に見覚えは無いか?そう、加速度センサプログラマ本体のデザインだ。今となっては誰も分からないのが哀愁を誘う。途中の溝は橋を渡って超えてもいいし、無理やり超えても良い。

ゆるやかなカーブ

渦巻き型のコース。
インを攻めて如何に最短距離を進むかが最短記録へのカギだが、無理やりよじ登ってもだれも文句は言わないぞ!

きついカーブ

鋭角が続くコース。
インを攻めて如何に最短距離を進むかが最短記録へのカギだが、無理やりよじ登っても(略)

ハーフパイプ

スノボのハーフパイプよろしく、左右にグイングイン振って気持ちよく走破できるかなと思って作ったら失敗した悲しきコース。
逆に途中の障害物をなかなかうまく超えられずにストレスが溜まるので、心臓が弱い方・高血圧な方はご注意ください。

物体の形状と摩擦力

途中の障害物をぶつかって下に落として道を切り開いていくコース。後述しますが設定で「石の球」や「鉄球」に変えないと、デフォルトのゴムボールでは重すぎて障害物を動かせません。とんだクソゲーじゃねーか!

崖っぷち

切り立った崖を進むコース。
下に落ちないように慎重に進むように見えるが、無理やりよじ登(略)

力の伝達

ようやく少し頭を使うコース。玉乗りの要領で円柱の上に乗り、落ちないように少しずつ転がして進む。

レール

最終コース。レールからレールへ落ちないようにうまく伝って行く。途中の黒玉はひっかけと見せかけて実はゴールに重要な役目を持っている。

設定

タイトル画面で「設定」を選ぶと、ゲームの設定を行います。上下で設定したい項目に合わせて、スペースキーを押してから左右を押して項目を変更できます。微妙に不親切なUIですね。

設定画面

ボールの種類

いわゆるキャラクターセレクトです。デフォルトのゴムボールは軽いので加速が速くジャンプも高いです。その代わり障害物を押す力が弱く、また無駄にバウンドして操作しづらい場合があります。

石の球はゴムボールより少し重くなります。重くなった分加速が遅くジャンプ力が少し下がりますが、障害物を押す力が少し強くなります。

鉄球は鉄の玉です。石の球よりも重く、加速力やジャンプはかなり低いですが、障害物には強く、無駄なバウンドも少ないです。

操作性からするとデフォルトのゴムボール一択ですが、一部のコースは他の球の方が有利な場合があります。
また、ゴムボール有利なコースでも、ゴムボール以外で作者も気づかない意外な方法(TASさん?)による高速クリアができるかもしれません。

場所の選択

大層な名前ですが、要するに重力の設定です。デフォルトは地球(1G)です。

月(0.16G)にすると、全体的にふわふわした動きになります。ふわふわ時間です。月は地球の約1/6の重力なので、それを再現した形ですね。
地球よりもジャンプが高くなったり、障害物が遠くに吹っ飛んだりするようになります。
しかしバウンドも大きくなるので操作が安定しないこともあります。

木星(2.4G)にすると、ほとんどジャンプしなくなります。物体の落ちるスピードが上がったり、ぶつかってから静止するまでの時間が短くなったりと、なんだか時間が速く進むようになったと感じられます。
ふわふわしない分転がす操作は安定しそうですが、それ以上にジャンプが出来なくなることでコースが難しくなりそうです。

カメラの高さ・距離

ゲーム中のカメラアングルの設定です。ゲーム中はF5,F6キーで全く同じ変更ができるので、ここで設定する意味ありませんね。

勝手に改造

実はこのソフト、exeと同じフォルダにある「def.ini」や「course.ini」を書き換えると、結構ダイナミックにパラメータやコースを変更したり、新コースの追加が出来てしまいます。

def.iniは質量・重力等の設定、course.iniは各コースの設定

そしてこれらのファイルを書き換えると、

超巨大ボール

ボールのサイズを変えたり…

ゲッタースパーク空高く

超高くジャンプしたり…

新しいコースまで作れてしまうんです。

一体どうやってる来るかと言うと…あーっと、もう余白が無い!以下次号(あるのか)!?
とりあえず各ファイルにはご丁寧にも各パラメータの概要などが日本語で書かれているので、興味がある人はそれを見て地道に書き換えてみてください。

いつか日の目を見ることを信じて書かれた親切な解説コメント…

まじめな話、物理シミュレーションと玉転がしゲームの土台はそろっているので、夏休みの自由研究で「月と地球での物の転がり方の違い」みたいなテーマの検証にちょっとは使えるんじゃないかと思ってるんですが、どうなんでしょうね。
昨今はUnity,UE4みたいな物理込みのゲームエンジンで同程度のものはお手軽に作れちゃいますが、それでも基本部分を作る手間はかかるわけで、出来合いのシステムとしてこのソフトが流用できるなら、あるいは…