HSPかC++か

hirai_jp20002009-04-26

春休みがなんだかんだで終わってしまって、ゲーム制作に割ける時間が極端に減ってしまった。
最近は夜10時帰りがデフォルトとか、高校時代の自分からじゃ信じられない。まぁ、サークルは好きでやってるわけだし、多分6月か7月にはもっと早く帰れるようになるとは思うけど。
とは言っても、暇な時間には一応コーディングは進めてるつもり。


…。


途中までプログラム書いてて思ったんだけど、なんか想像以上に車動かすの大変だ…orz
例えば、ブレーキの処理一つにしても、速度の絶対値を比較しないとどっちの方向に力を加えればいけないのか分からない。すなわち、仮の速度の計算をしてから絶対値を比較してようやく力の向きが決定という流れになる。その処理をしないと、逆方向に加速し続ける…(汗
処理としてはそんなに多くないんだけど、こういうのがいくつもあって、最終的に車が動くまでに数千行になっていそうな気がする。


そもそもの目的として、HSPでの目的は挙動計算のアルゴリズムをある程度確立しておくというものが挙げられる(C++に移った時に困らないようにね。)。それで、HSPで途中まで書いた段階でなんとなくイメージは出来てきたので、ここはパッとC++に移っちゃうのもありかなぁと。というか、このままいくとHSPだけで満足してしまいそうだ…(汗


実際に、HSPでプログラムする中で見えてきたこともあった。
StraightCarChaser以来、技術的な進歩はほとんど無かったといっても過言ではないが、実生活では高校数学を修得し、ベクトルというものを理解した。存在自体は中学の頃から知っており、3Dプログラムを書く上では必須だと言っても過言ではないことはなんとなく分かっていた…が理解できなかった。
それをHSPで使い始めたのはつい先日のことで、3Dにおけるベクトルというものの偉大さの一片をなんとなく理解した。
過去の話になるが、StraightCarChaserにおいては、車が常に直線の道路に沿って走らなければならなかった。これは完全に自分の技術不足であり、車が回転したときにどう処理すれば良いのかということが皆目見当がつかなかったためである。ちなみに、StraightCarChaserでは、向きを変えても直線方向の速度は変わっていなかったという…(笑)
ところが、いまやベクトルというものを理解し、その処理は意外に簡単であるということが分かった。駆動力を例に取ってみると、タイヤの向きを正規化したうえで、そのベクトルに力をかければ良いだけなのである。タイヤの向きは、車体の向きから出せば良いし、車体の向きは力のモーメントから計算すれば良い。
意外に簡単そうである。


というわけでそろそろC++に移ろうかと思案中…。実際問題として、このまま移ると色々な問題が起こってくるであろうことは見えてるし…。かといってこのままHSPで続ければ、そのまま満足してアルゴリズムを忘れるかもしれないからなぁ。自分が書いたプログラムっていうのは時として理解できなくなるんだよね…。でも、その点はC++の方がクラスがあるから有利かもしれない。


まぁ、気が向いたら明日からC++に移ろうかな。


ちなみに画像はちょっと進化したHSPのプログラム。って言っても、超適当な加速・減速しかできないけど。