制作記録

【立ち上げ編 2】なめらかな道路を作るまでの長い道

  • 立ち上げ編
  • 道路

「立ち上げ編」は、このプロジェクトの最初のころに、運営チームがぶつかった苦労を紹介するシリーズです。前回は、本物の地図のデータから、ゲームの中に土地の形を出した話でした。2回目の今回は、その上に道路をつくった話です。

地図の道路を、そのまま置いてみたら

道路の形は、OpenStreetMap(オープンストリートマップ)という、世界中の人が協力してつくっている地図のデータから持ってきました。道路の通り道が、点と点をつないだ線として記録されています。

この線にそって、Roblox(ロブロックス)の小さな板(ブロック)を並べれば道路になるはず。ところが、やってみると、こんな道路ができました。

  • 曲がり角がカクカク、ジグザグしている
  • 道路が地面から浮いて空中にかかっていたり、反対に地面に埋まってトンネルのようになっていたりする
  • 板と板のつなぎ目に段差があり、キャラクターが走ると、ピクピクはねてしまう

地図のデータは正確です。でも、それは人が地図として見るためのもので、ゲームの中で「走れる道路」にするには、別の工夫が必要でした。

道路の板が地面から浮いた状態、地面に埋まった状態、地面にそって置かれた状態をくらべた説明図
道路の板が地面から浮いた状態、地面に埋まった状態、地面にそって置かれた状態をくらべた説明図

「1枚の長い帯」で描けば?

最初に思いついたのは、道路1本を、1枚の長い帯のような形で描く方法です。板を並べるからつなぎ目ができる。それなら、つなぎ目のない1枚の帯にすれば、段差はなくなるはずです。考え方としては、とてもきれいな方法でした。

そこで、Roblox に当時加わったばかりの、形を自由に組み立てられる試験中の機能を使ってみました。けれども、次々に問題が出ました。

  • 道路の帯が灰色のままで、アスファルトの模様がうまく貼れない
  • 道路どうしが交わる交差点で、帯が重なって、ちらちら点滅する
  • 形をつくる計算に時間がかかる

交差点を1か所直すだけでも、形がくずれてしまいました。1〜2週間ほど試したあと、制作者と相談して、この方法はあきらめることにしました。

小さな板に戻って、つくり直しをくり返す

戻ったのは、小さな板をたくさん並べる、ふつうの方法です。そのかわり、並べ方を何度も見直しました。主な試みを、順番に紹介します。

まず 地図の線を同じ長さに区切って、板を置きました。ジグザグも浮きもそのままでした。

次に 道路の高さの上がり下がりを、前後の点と平均してならしました。でも、その高さはゲームの外で計算したもので、ゲームの中の本当の地面とずれていました。

そこで ゲームの中で、板のまん中から真下に向けて地面の高さを測るようにしました。今度は、板のはしが浮いたり沈んだりしました。

さらに 板のまん中と両はしの3か所で測りました。浮きは減りましたが、道路が左右にななめに傾いてしまいました。交差点では道路どうしが段差で重なり、カーブも「カクカクが細かくなっただけ」でした。

板をそのまま並べたカクカクのカーブと、なめらかな曲線でつないだカーブをくらべた説明図
板をそのまま並べたカクカクのカーブと、なめらかな曲線でつないだカーブをくらべた説明図

8月にたどり着いた工夫

8月7日に完成した最終版では、次のように、いくつかの工夫を順番に組み合わせました。

1. 点の間かくをそろえる 地図の線は、点がたくさんある所と少ない所があります。まず、同じ間かくで点を打ち直しました 2. 地面の高さを調べる それぞれの点から、ゲームの中で真下に向けて見えない光を飛ばし、当たった所を地面の高さにしました 3. なめらかな曲線にする 高さの小さなでこぼこを平均してならし、点と点の間を、なめらかな曲線でつなぎました 4. 坂をゆるやかにする となりの板との高さの差に上限を決め、急な段差ができないようにしました 5. 交差点を平らにする 交差点のまわりは、交差点のまん中と同じ高さにそろえました 6. 道路を左右に傾けない 板は進む向きにだけ回し、左右には傾けないようにしました

本物の道路は、カーブで少し内側に傾いています。でも、ゲームでそれをまねすると、かえって不自然に見えました。傾けないほうが、ずっと「走れる道」に見えたのです。

こうして、実際に走って確かめた範囲では、地面から浮いたり埋まったりする板は、ほとんど見られなくなりました。立ち上げ期の数か月、あいだをあけながら試行錯誤を続け、8月7日に最終版が完成しました。

学んだこと

  • 1回で正解にはたどり着けませんでした。 1つ直すと、別の問題が見えてきます。それを1つずつ直していくしかありませんでした
  • あきらめた挑戦も、むだではありませんでした。 「1枚の帯」のために書いた、地図から道路の通り道を取り出すプログラムは、最終版でも使われています
  • 考え方がきれいな方法より、最後まで完成できる方法が強いこともあります。 小さな板をたくさん並べる、一見地味な方法が、結局いちばん役に立ちました
  • 数字だけでは分からないこともあります。 段差が小さいという数字が出ても、キャラクターで実際に走ると、はねることがありました。最後は、走って確かめました

ゲームの中の道路を歩くとき、足もとが平らでなめらかなのは、こうした積み重ねがあるからです。

次回は

次回は「イベント本番に向けて」の話です。お楽しみに。

木津川市メタバースプロジェクトで運営チームが担当した内容は、事例ページで紹介しています。プロジェクトのほかの情報は、公式サイトのトップページをご覧ください。