C# と C++ : Memory Allocation (4)

シューティングゲームでのアナロジー.

  1. C# で書かれた自機は,ショットボタンを押すとすみやかに弾が発射される.連射性能抜群.オプションが弾を撃つのと同時に自機も弾を撃てる.でも一定弾数を発射すると突然一定時間硬直する.まれにそこそこ長時間硬直する.
  2. C++ で書かれた自機は,ショットボタンを押してから弾が発射されるまで一瞬硬直が存在する.オプションと同時には自機は弾を発射できず,その場合どちらかが余分に硬直する.さらに弾が画面外に消える瞬間も弾を発射できず硬直が起きる.ただし個々の硬直時間はおおむね一定の範囲内に収まる.

ここではシューティングゲームを作るときに自機の弾を毎回 new することの是非を問うているわけではありません.もちろんゲームプログラミングではどちらも邪魔なので,オブジェクトプーリンングなどで回避したいと言うならばそれまでの話です.
しかしまあこうやって書いてみると,面白いぐらいに対照的ですね.C# 的自機は火力を集中させやすいけど調子に乗りすぎると肝心なところでストール,C++ 的自機はコンスタントに目押しが要請されて,画面中に弾をばらまくような必殺技はその後の隙が大きくて連発しにくい,等々.まさにシューティングゲームの自機セレクトに必要十分なぐらいに個性的と言えるでしょう.