3Dまっぷ v1.31
公開キー【N34444J3】(2017年2月5日公開)
- 幅1ドットのスプライトをスクリーンの横幅(400ドット)分だけ用意して、カメラから壁までの距離を計算して壁の高さを割れば、3D表示できちゃうんじゃない!?と思って、おもむろにつくり始めたのがコレでした。
- 後から調べたら、Ray Caster(視点から光を投げて、壁に当たるまでの距離を計算して描画する)という、すでに存在する手法でした(´・ω・`)
- カメラから壁までの距離を、いかに少ない計算量で求めるかがポイントでした。
- 「視線と壁の交点を1点計算したら、壁の横幅分は視線を再走査せずにスキップする」という改良を行ったところ、かなり速くなったのですが、これだと「見つけた壁より手前に覆いかぶさって壁」もスキップしてしまう場合があるという問題があり、結局「一旦左から右へ走査し、その後右から左にも走査しなおす」という2パスにすることで、解決しました。
- 地面は、前回の「地面を表示するプログラム」の手法でやっていますが、ここが負荷のかなりの部分を占めるため、次のバージョン(未公開のv1.40)で
1.ミップマップのように遠景ほど解像度を荒くする
2.壁に隠れている部分は描画しない
という改良を行った結果、なんとかゲームに使える速度になり、後のつるつるバルーンを作るきっかけになりました(*´▽`*)