G(m+M)/d^2

bit Generations の一つ、ORBITAL。突如としてやりたくなったので二日前だかにやり始めて今日ようやくFinal-5まで到達。むずい…
何がむずいってっと、まず衝突した後復帰するときにどっちに飛ぶかわからないせいで重力と反重力のどっちを使えばいいかわかりにくいことが多い、特にEx-5。これのせいで復帰した直後どっち行くかわからんで他の惑星帯に衝突してまた復帰する方向わからんでのループマジ勘弁。それから重力の相殺が起きたときに重力の働く方向がわからん。二つの惑星の間を飛んでるときに思った方向と別の方向に重力かかって混乱すること多数。いったいどういう仕様で重力の方向決めてるんだ?
あと自機の惑星の速度制限が当然とはいえゲーム内での絶対速度で計算されてるんで宇宙っぽくない挙動起こすのも微妙。速度制限ないと青天井に速度上がってやばいことになるけど。


アクションパズルとしては複雑すぎるしアクションとしては動作がもっさりしてる気がするけど、ボタン二つで操作する操作感は予想通りなかなか面白い。動作のもっさり感と裏腹にかなりの集中力が必要なあたりのギャップを感じるが、あれ以上高速に動作されても脳内演算が追いつかないかなとも。


万有引力ってよく考えると距離の二乗しか計算に影響しないからプログラムにしたとき平方根計算しないですむ*1からそこら辺楽チン、というか全てのオブジェクトに対して計算けしかけたりしても負荷が大きくないから便利だよね、と思った今日この頃


11/01追記:
ORBITALの計算の話、更によく考えると二点間の距離と惑星質量から重力を求めるまではrootの計算ないんだけど、いくつかの惑星からの重力を合成したり、その重力の結果どれくらいのXY成分を持った加速度になるのかというあたりは結局root演算ないし三角関数演算必要。よくある勘違い

*1:二点間の距離は √(x^2+y^2)