2D自動車シミュレーターをGoogle Maps API for Flashに対応

Google Maps APIのFlash版がリリースされたので、突貫工事で導入してみました。

APIはJavaScript版から多少変わってるみたいですが(プリフィックスのGが取り除かれたり、getBounds()がDisplayObject.getBounds()とのバッティングのためにgetLatLngBounds()になっていたり)、MapをaddChildして、ExternalInterfaceで呼んでいたJavaScriptの関数群をそのままActionScriptにコピペして適当にエラーを潰した程度であっさり移行完了。

やっぱりFlashオンリーだと動きがスムーズ。フレームレートをJavaScript版の15?20fpsから40fpsに上げたにもかかわらず、CPU使用率は下がった。Googleマップのレスポンスの遅れによる表示ずれもなくなった。安定性もずっと良くなったのではと思う。トラブルメーカーのwmode=transparentが必要なくなったし、そもそもFlashからJavaScriptを秒数十回呼ぶとか、どんな環境で何が起こるか分かったものじゃないし。というか実際不具合が起きていたようで……。

あと、MapはSpriteのサブクラスなので、回転させたりエフェクトをかけたり好き放題できるんだけど、Googleのロゴや著作権表示まで加工してしまうことになるので、APIの規約に引っかかるかもしれない。とはいえ、Google自身がマップを回転させるサンプルを用意していて、これは「やってもいいよ」サインなんだろうか。画面が回転しないと運転しにくいとはよく言われるので、どうするか悩みどころ。

楽しそうなんだけどなあ。回転。

それと、LatLng.distanceFrom()に不具合があるっぽい。経度が無視されて、緯度だけの距離が戻ってくる。v1.4で修正されたようです。

JavaScript版:

var p1 = new GLatLng(35, 135);
var p2 = new GLatLng(35, 136);
var p3 = new GLatLng(36, 135);
var p4 = new GLatLng(36, 136);
p2.distanceFrom(p1) = 91187.20767600156
p3.distanceFrom(p1) = 111319.49079327373
p4.distanceFrom(p1) = 143543.27401042765

Flash版:

var p1:LatLng = new LatLng(35, 135);
var p2:LatLng = new LatLng(35, 136);
var p3:LatLng = new LatLng(36, 135);
var p4:LatLng = new LatLng(36, 136);
p2.distanceFrom(p1) = 0
p3.distanceFrom(p1) = 111319.49079327373
p4.distanceFrom(p1) = 111319.49079327373

これを回避するためにちょっと精度が落ちてるはずなんですが、まあ気になるほどではないですね。鈴鹿を一周するとトリップメーターがちゃんと5.8kmになります。

2008年5月19日

2D自動車シミュレーターあれこれ

最初は何気なく作ったのが、いつのまにか免許の定番ページのひとつになってる感じ。自分でネーミングしておいてなんですが、「自動車シミュレータ」という検索キーワードを思いっきり荒らしてしまってるような。自動車関係の人が迷惑してるんじゃなかろうか。

ニコニコ動画にプレイ映像が上がってるのを発見。

楽しんでもらえてるようでありがたいんですけど、けん引のコース、広げなきゃならないんですよね……。最初に教習用のトレーラーの寸法を勘違いしたままコースを作ってしまって、後から車体を大きくしたにもかかわらずコースがそのままなので、そりゃギリギリで難しいです。ちょっと悪いなあ。

コースを作るのは結構大変で、中央線の幅が15cmとか停車線が45cmくらいとかだいたい決まってたり、クルマが曲がれるように地道にすみ切り作業をしたり。Google Maps版で走るとわかりますが、現実の道路って恐ろしく巧妙です。特に首都圏の交差点など、幾何学的芸術とでもいうのか、本当にすごい。クルマを滞りなく走らせるため、ドライバーを惑わせないための約束事がたぶんたくさんあって、なかなか僕みたいな素人が真似できるものじゃない。今のコースにおかしなところがたくさんあるのは、つまりそういうわけで……。

で、今後の更新をどうするか問題。

今のはFlashの古いバージョンで無理して作っていて、これ以上のアップデートはしにくいです。バージョン3.0としてFlash 9/ActionScript 3で作り直したいんですが、少なくとも来年半ばまでは別のゲーム制作のために凍結なのは確実だと思います。要望もいろいろいただいてますし、考えもあるんですが、約束できる状況じゃないかなと。

手ぶらも何なので、初期のバージョン(1.0)を再公開しておきます。闇に葬っておきたかったんですけど、まあいいやとw 今見るとあまりにもしょぼい。2.0も大概だけど(言い訳すると、視点を拡大縮小回転させる必要があったので描画速度的にテクスチャをまったく貼れなくて)。

2008年3月5日

トップページ
プロフィール

はてなブックマーク
wonderfl