-
擬似3Dへのきっかけ
マイコンBASICマガジン(以下ベーマガ)には、レーシングゲームの投稿がいくつかあったのだが、その多くは、
視点がコースの真上にあった。
(なかにはクオータービューもあったが)
実際にはその作品をプレイしてはいないが、
そういったゲームでは、自分が車に乗っているようには感じられないと思う。
これでは臨場感が生まれないだろう。
擬似3Dなら、それをうまく出せるのではないか。
僕はそう考え擬似3Dのレーシングゲームを作り、ベーマガに投稿することにした。
-
カーレーシングからスノーボードへ
最初はカーレースを作りたいと思っていたのだが、それには問題があった。
どうやって道路を描くかである。
VisualBasic(以下VB)では、任意の方向から見た道路を描くのは無理だから、工夫をしなければならない。
最初に考えたのは、直線、カーブ等の絵をいくつか用意してそれを表示すると
いうものだった。
つまり背景は固定させ、車が左右に動くというものだ。
しかしそれでは、道から外れないように、ただ左右に動くというものになってしまう。
僕はどの方向にも動けるものが作りたかったので、それはやめた。
次に考えたのは、道路を塗りつぶさずに、輪郭だけを描くものだった。
線を描くだけでも、VBでは難しそうだったが、これならなんとかなりそうだと思った。
しかし、これもやめた。
線だけだとコースがわかりにくいというものその理由だったが、もっと大きな理由は、別の方法を
思いついたことである。
97年2月、ベーマガ97年3月号に掲載されていた「シュプール」(御茶目菜子さん作)を見た。
それから、ベーマガに連載されている「VisualBasic研究所」で、前に
スノーボードゲームを作っていたのを思い出した。
そして、スキーやスノボーなら、道路を描かなくてもいいことに気づいた。
そう思った僕は、カーレースをやめ、スノボーのゲームを作ることにした。
スキーでない理由は、ストックを描かなくてよいからである。
-
主な処理
やっていることは単純で、物理法則に従って力→加速度→速度→位置といったように
計算をしているだけ。
そして、次に通過しなければならない旗の位置と自分の位置を比べ、通過していたら、
通過した旗の数を1つ増やしていく。
旗を通過したときには、旗の右を通過したか左を通過したかでミスの数を増やすかどうかを決める。
ゴールも旗でできているから、決められた数だけの旗を通過すればゴールとなる。
斜面の傾斜の度合いや、スピードの大きさといったものの調節は、試行錯誤でやった。
速度に関してはスノーボードでどれぐらいの速度が出るのかは知らないので、適当に調整してある。
-
グラフィック
僕はスノボーをやったことがないので、どういう動きをするのか知らなかった。
そこで図書館にいき、スノボーの本に載せられていたイラストや写真を参考にして絵を描いた。
といっても、僕は絵が下手なので、たいしたものは描けなかった。
それから、ベーマガを読んでプログラムを打ち込む人のために、
グラフィックは、プログラムで生成できるようにした。
これは描くのが難しいと思ったからじゃなくて、
「ビットマップのサイズは・・・、・・・を描いた絵を・・・枚作ってください」
というふうに書いても初心者は理解し難いだろうと思ったから。
-
ウエイト
このゲームではゴールまでのタイムを計測しているので、ウエイトを正確にしなければならない。
VBのTimerではウエイトが正確にならないので、しばらく悩んでいたのだが、
APIのGetTickCountを使用すれば可能ということをきいた。
これはWindowsが起動されてからの時間をミリ秒単位で返す関数。
不明な点はあるが、テストプレイでは問題無かったのでそのまま使用している。
-
バグ
このページをつくるころになって、バグを発見。
なんと、速度が時速数万Kmにもなってしまう。
どうすればそんなことが起きるかは秘密
ふつうのプレイでは起こらないので、ダウンロードできるのもそのままにしてある。
もう少しうまく調整すべきだった。
-
最後に
今やってみると、スピード感が足りないかなと思ってしまうが、
けっこう面白い作品になっていると思う。
あと、絵がちゃちいとも思うがこれは仕方ない。
どうしてもいやだという人は、自分で描いてください。
感想がある人は、ぜひメールをください。