
2Dゲームと3Dゲームは開発する上でかなり大きな違いがあり、
「上下左右に奥行きが追加されるだけ」と思うかもしれないが、
特に意識しなければいけないのがカメラの存在だ。

2Dゲームは画面というキャンバスに描いていくイメージなので
表示した画像は必ずプレイヤーに見える状態になる。

しかし3Dゲームは立体空間に配置された物体に対して
カメラが見ている内容が画面に表示される。
たとえ3D空間に「描画」されていても
カメラの視界に入っていなければ画面には映らないのだ。

カメラが見ている範囲は台形が立体になったような形になり、
これを「視錐台(しすいだい)」と呼ぶ。
3Dモデルが視錐台の中にあるかどうかを判定すれば
その物体が画面に映っているかどうかが判別できるわけだが、
それによって描画負荷を下げる視錐台カリング以外にも
さまざまな利用方法があるのでいくつか紹介してみる。
死んだ敵をさりげなく消す

多くのゲームでは敵キャラクターが出てくるが、
倒した敵(=死体)は特に役に立たないし、
描画することで処理負荷がかかるので
プログラマーの立場から言えばさっさと消してしまいたい。
かといって死んだときにパッと消すと変に目立ってしまうし、
半透明になってジワジワ消えていくのも
リアルな世界観だと不自然に感じる。
そこで視錐台の外に出たタイミングで死体を消すのだ。
そうすれば消える瞬間が見られることはなく、
死体から目を離したタイミングでさりげなくいなくなる。
見えている敵だけが攻撃してくるようにする

複数の敵が主人公を取り囲むようなゲームは多いが、
画面外の見えない場所から敵の攻撃が飛んできたりすると
避けるチャンスがなくて理不尽に感じてしまう。
そこで視錐台の中にいる敵にだけ攻撃させるのはどうだろうか。
これなら見えていない場所から攻撃されることはないし、
敵キャラは視錐台を目指して移動するよう処理すればいい。
プレイヤーが戦いやすいよう
敵が配慮するのは違和感があるかもしれないが、
時代劇で敵が1人ずつ順番に斬りかかるのと同じようなものだ。
見ているときにイベントを発動する

ストーリー性の強い作品だと、いろいろなイベントが
リアルタイムに展開されることがあるが、
3Dゲームの場合はカメラの向きがプレイヤー任せなので
物事が起きている方向を見ていない可能性がある。
ムービーシーンに移行すれば見せたいものを見せられるが、
ゲームとして操作できない状態に切り替わるのは
プレイヤーの感情移入が途切れてしまうデメリットがある。
そこで視錐台に入ったタイミングでイベントを発動するのもいいだろう。
そうすることで肝心なところを見逃される可能性がなくなり、
プレイヤーが目を向けている間にイベントを再生できる。
まとめ
「枯れた技術の水平思考」と同様の考え方だが、
ある目的のために習得した技術を
それとはまったく別の用途で利用することができれば
その価値を何倍にも引き上げることができる。
持っている知識や技術が同じでも
いろいろな使い道が提案できるだけで
他の人より役立つ人材になれるのだ。