単純で一貫性のあるルールが一つだけの特別形で崩壊するよくある話

わざわざ武器を右手でも左手でも装備できるようにしてるのはきっと自分が左利きでどっちの手を使うのかということに変なこだわりがあるからではなかろうかと思う。

さて、右手に持っている武器は右手に持っているように表示されており、右手の武器を使うボタンを押したら右手に持っている武器のアトリビュートが使われてアニメーションやダメージ計算などが行われる。左手はその逆。非常に単純明快。これですべてがうまくいくと思っていた。

ここで武器の一つとして弓矢が登場する。弓矢は少なくとも弓の方が様々な種類のアトリビュートを持つようになるだろう。矢を放ったら弓の攻撃力を加味してやる必要がある。反面、弓と矢をそれぞれ手に持つとして、矢を持っている方の手を使うボタンを矢を放つボタンとした方が適当だろう。普通は矢の方を利き手で持つのだし。

さあおかしくなった。

当初は弓矢を持っているときだけ内部データ的には左右逆に持っているようにしてしまおうとか、逆に、左右逆に表示されるようにしようとかと考えたのだが、依存する部分があまりに多く、バグの温床になりかねない。そこで、矢を持っている手は反対側の手にユーザーの操作をコピーする、という単純な特別ルールを設けて問題を回避することにした。

左利きは早死にするといわれるが、こういう余計なところで時間を食うのが原因に違いない。