FlightGearで大空に飛び出そう
FlightGearを始める前に
多くの人にとってFlightGearをインストールする最良の方法は、愛用するディストリビューションに含まれるバージョンを利用することだ。Ubuntu Edgyにはバージョン0.9.10-2が入っているので、今回の記事の執筆にはこれを使っている。tarballを取ってくるかCVSから最新版をチェックアウトしてきてスクラッチからビルドすることも可能だが、相当な手間がかかることを覚悟すべきだ。
FlightGearのインストールに取りかかる前に、システムが最低限のハードウェア要件を満たしていることを確認する。大事なのは、3Dアクセラレーションが必要なことだ。Linuxユーザの場合、3D機能が有効なNVIDIAカードが最適だろう。IRCチャンネルでは、ATIカードを搭載したLinuxでFlightGearを動かそうと試みた人々の悲惨な失敗談をいくつか耳にした。
インストールが終わると、マシンのどこかにFlightGearのルートディレクトリができている。Ubuntuの場合は/usr/share/games/FlightGearだが、ディストリビューションによって違うかもしれない。ジョイスティックやキーボードの割り当て変更、機種や風景の追加といった処理を行うには、このルートディレクトリの場所を知っておく必要がある。これ以降、”FlightGear”で始まるディレクトリが何度か出てくるが、使っているマシンのどのディレクトリにFlightGearがあるかの解明はみなさんにおまかせしたい。
FlightGearを楽しむのにパイロットとしての経験は必要ない。ただ、航空機の専門用語など基本事項を理解しておけば役に立つことは間違いない。最低でも、補助翼、昇降舵、方向舵、フラップ(下げ翼)、安定板のそれぞれの違いを知っておく必要はあるだろう。また、基本事項の習得に役立つフライトスクール用チュートリアルが含まれたこのPDFも熟読しておくとよいかもしれない。
The FlightGear.orgというWebサイトには、FAQ、マニュアル、要点のまとめ、Wikiといったユーザによるその他ドキュメントへのリンクもある。
こうしたリソースに加え、FlightGearユーザのためにはメーリングリストや、リアルタイムで支援が受けられるirc.flightgear.orgの#flightgearチャンネルも用意されている。活動中のオープンソースプロジェクトではよくあることのようだが、公式ドキュメントの内容はソフトウェアの現行バージョンに追随できていないことがあるため、後に挙げた2つのほうが有益な情報源と言える。
ジョイスティックの設定
FlightGearはキーボードとマウスでも十分に操作できるが、ジョイスティックがベストだ。私の場合、FlightGearを使い出してまもなくSaitek Cyborg GraphiteのUSBジョイスティックを購入したが、決して損な買い物ではなかった。FlightGearでは、各種ベンダから出ている多数のジョイスティック向けに一般的な設定がFlightGear/Input/Joysticksというディレクトリに用意されている。手持ちのジョイスティック用の設定が予め用意されているかどうかは、そのベンダの製品ラインナップを見て一致するモデルが存在することを確かめればよい。
ブランドやモデルによっては、対応するジョイスティック用コントロールファイルがFlightGearに用意されているかもしれない。予め用意されている場合は、FlightGearのルートディレクトリにあるjoysticks.xmlファイルに手を加えて該当するコントロールファイルを参照するようにするだけで済む。joysticks.xmlファイルには、デフォルトで次のような行が含まれている。
<js n="0" include="Input/Joysticks/Local/joystick_0.xml"/>
ここに記されたパスを、次のように、手持ちのジョイスティックのベンダとモデルを示すものに変えるだけだ。
<js n="0" include="Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml"/>
手持ちのジョイスティック用の設定ファイルが見つからない、あるいはその設定内容が気に入らない場合は、FlightGearに用意されている2つのツールを使って独自の設定を構築できる。たとえば、コマンドラインでjs_demo
と入力して実行すると、次のように表示される。
Joystick test program. ~~~~~~~~~~~~~~~~~~~~~~ Joystick 0: "Cyborg Graphite" Joystick 1 not detected Joystick 2 not detected Joystick 3 not detected Joystick 4 not detected Joystick 5 not detected Joystick 6 not detected Joystick 7 not detected +--------------------JS.0----------------------+ | Btns Ax:0 Ax:1 Ax:2 Ax:3 Ax:4 | +----------------------------------------------+ | 0000 -0.0 -0.1 +0.0 +0.0 +0.0 . . . |
5つの軸に対応する各カラムには、0~4までの数字が割り振られている。ジョイスティックのハンドルを左右に傾けると、Axis 0の下に表示されている値が変化するのがわかる。ハンドルを前後に動かすと、同じことがAxis 1で起こる。私のCyborgジョイスティックの場合は、土台部分にあるスロットルレバーがAxis 2として、ジョイスティックの最上部にあるキャップがAxis 4として機能する。これで、それぞれの操作がFlightGearからどのように見えるのかがわかったので、上記の設定ファイルで0~4までの部位の操作を自分の好きなように割り当てることができるわけだ。
では、ボタンはどのように識別されるのだろうか。ボタンをどれか押すとBtnsカラムに1、2、4、8のいずれかに相当する2進数が表示される。これら4つの2進数に0~3までの数字を順に割り振れば、押したボタンのFlightGearにおける番号がわかる。たとえば、トリガを握るとBtnsカラムの値が0001に変わるので、このトリガはボタン0にあたることがわかる。Btnsカラムの値が0010(10進数の2に相当)に変われば、そのボタンはFlightGearによってボタン1とみなされていることになる。
既存の設定を変えるだけなら、ここまでの情報で事足りるだろう。軸またはボタンの値を好きなように変えれば済むことだ。だが、ジョイスティック用の設定ファイルをスクラッチから作るなら、fgjs
の実行も必要になる。
fgjsコマンドを実行すると、軸やボタンをおびただしい数の操作に割り当てるためのダイアログが表示される。それほどの操作を扱えるだけの軸やボタンはないはずなので、その多くは単純にスキップすることになる。スキップを行うには、軸に対する割り当てを求められているときにはボタンを押し、ボタンに対する割り当てを求められているときにはジョイスティックを動かせばよい。
先に進むと、割り当て内容の確認を求められる。それが済めば、jsX.xml(Xの部分にはジョイスティックの種類を示す文字列が入る)というファイルが作業ディレクトリに作られるので、このファイルの名前をjoystick.xmlにしてFlightGear/Input/Joysticks/Defaultディレクトリにコピーすれば、設定は完了だ。
ジョイスティックを利用する人のために、最後に1つ注意しておこう。離陸時または飛行中の左旋回時に機体が左にドリフトしても、ジョイスティックやその設定のせいにしてはいけない。これはこのシミュレータが徹底的にリアルさを追求していることによるもので、おそらくはみなさんが初飛行を行うことになるであろうデフォルトのセスナ172のようなプロペラ機ではより顕著に発生する現象なのだ。このドリフトについては、プロペラトルクの影響またはスリップストリームの影響という両方の説明を見かけたが、どちらが正しいのか私にはわからない。いずれにせよジョイスティックの影響でないことは確かだ。
ジョイスティックがなくても、FlightGearのルートディレクトリにあるkeyboard.xmlとmice.xmlに設定されているキーボードおよびマウスの割り当てを使って飛行することができる。必要に応じて、それらのファイルに手を加えるとよいだろう。
初めてのフライト
FlightGearには膨大な数のコマンドライン引数があるが、デフォルトの設定で始めるならターミナルでfgfs
と入力するだけでよい。数秒後には、サンフランシスコ国際空港の28R滑走路上でエンジンを始動させたセスナ172に搭乗していることだろう。スロットルを開いて操縦桿を引くと、セスナは速度を上げながら滑走路上を進み、やがてちょうど図1のように宙に浮くはずだ。離陸に失敗しても落ち込んだりしないように。新米パイロットは大概そんなものだ。
図1:サンフランシスコ国際空港での離陸 | |
図2:キャンドルスティックパーク | |
図3:ゴールデンゲートブリッジ | |
図4:A-10 ウォートホッグ攻撃機 | |
図5:ジェット旅客機 | |
図6:パラグライダー |
デフォルトではコックピット内部の様子が画面に表示されるが、このビューでは機体の周囲や眼下の様子があまりわからない。Vキーを押すことで、視点を真横、後ろ、真上などに移したその他のビューに切り換えられる。
デフォルトの飛行機および空港は、FlightGearのルートディレクトリにあるpreference.xmlファイルに設定されている。どちらも変更は簡単だ。私にとってはセスナ172Rが操縦しやすかったので、このファイルを編集してその中の1行、
<aircraft>c172p</aircraft>
を次のように変更している。
<aircraft>c172r</aircraft>
私と同じくセスナ172Rが操縦しやすいと思っても、このシミュレータに慣れてくればもっと多くの機種を試したくなるはずなので、搭乗する飛行機をpreference.xmlではなくコマンドラインで指定できたほうがよいだろう。たとえば、ガトリング砲(複数の銃身を持つ高速連射用の重火器)に興味があれば、fgfs --aircraft=A-10
としてシミュレータを起動することで、セスナの代わりにA-10 ウォートホッグ攻撃機を飛ばすこともできる。
利用できる飛行機を確認するには、--show-aircraft
オプションを指定してFlightGearを実行すればよい。そこに目当ての機種がない場合は、Webサイトで追加の機種を検索して自分のマシンにダウンロードすることができる。私はここから125機種入りのアーカイブを入手したが、もうなくなっているかもしれない。その場合でもここから一度に1機種ずつ選んで手に入れることは可能だ。
ダウンロードが済んだらFlightGear/Aircraftディレクトリに行き、sudo unzip
を実行してダウンロードファイルを解凍する。Aircraftディレクトリの下に機種別のサブディレクトリができれば、それ以降はコマンドラインからその機種を指定できるようになる。ちなみに、FlightGearにはパラセーリング用パラシュートや気球、グライダーなども用意されている。
フライト場所の選択
FlightGearのWebサイトには、デスバレー、アイダホ、死海、グランドキャニオンといったサンフランシスコよりも魅力的なフライト場所がいくつか紹介されている。こうした場所を飛ぶには、2つのことを行う必要がある。希望する空港の指定と必要な風景のインストールだ。
FlightGearにデフォルトで含まれているのは、サンフランシスコ地域だけである。だが、DVDの購入またはインターネットからのダウンロードによって、経度、緯度とも10度刻みのチャンク単位で世界中の地域のデータを入手できる。欲しいチャンクを手に入れる一番簡単な方法は、地図からダウンロードできるページを使うことだ。ただし、各チャンクは100MB以上のサイズがあるので、DVDを購入するのも悪くはない。
FlightGearにチャンクを追加するには、FlightGear/Sceneryディレクトリに行き、tar xzf chunkfile.name
と入力する。ダウンロードしたチャンク内のデータはObjectsおよびTerrainの各サブディレクトリに置かれるが、この時点ではまだ圧縮された状態になっていても問題はない。そのままにしておけば、必要なときにFlightGearが解凍の処理をしてくれる。
風景データが準備できたら、あとは空港のICAO(International Civil Aviation Organization、国際民間航空機関)コードをコマンドラインで指定するだけだ。これは機体の指定方法によく似ていて、--airport=KTKI
のように好きなICAOコードを入力すればよい。なかにはICAOコードが割り当てられていない飛行場もあるが、FlightGearではこうした飛行場のために3文字のFAA LID(連邦航空局による位置ID)を用いる。空港のICAOやFAA LIDがわからない場合は、次のようにして調べることができる。
FlightGear/Airportsディレクトリに行き、gunzip apt.dat.gz
を実行し、展開されたapt.datファイルからgrepを使って目当ての空港を検索するのだ。たとえば、ハワイのオアフ島ノースシェア沿いを飛行したければ、次のようにしてディリングハム空港を探せばよい。
grep Dillingham apt.dat 1 74 1 0 PDLG Dillingham 1 14 0 0 PHDH Dillingham
PDLGはハワイではなくアラスカの飛行場なので、PHDHが正解だ。そこでfgfs --airport=PHDH
と入力してFlightGearを実行すると、数分後にはハレイワからワイメア湾に向かう夢のような飛行が体験できる。
また、FlightGearには米国のみならず世界中の風景が用意されていることを忘れてはならない。次に私が選んだのはRPLB、フィリピンのスービックベイ国際空港だ。適切なチャンクのダウンロードとインストールを済ませた私は、オロンガポを飛び立って海岸沿いに北上し、サンバレス州サンミゲルを目指した。
その他の機能
ここまでに紹介した機能はごく一部に過ぎず、すべてを取り上げると本1冊分のページ数が必要になるほどの機能が、FlightGearには備わっている。たとえば、Linuxユーザならマルチプレイヤーフライトが可能なので、友人と一緒にフライトを楽しむこともできる。以下に示すのは、私がマルチプレイモードでA-10を飛ばすときに使っているコマンド行だ。
fgfs --multiplay=out,10,mpserver01.flightgear.org,5000 --multiplay=in,10,192.168.1.151,5000 --callsign=K1GPL --aircraft=A-10
ただし、こんな長ったらしいコマンドは一度入力するだけでうんざりなので、エイリアスを作って.bashrcファイルに保存しておいた。今ではfly-a10
と入力するだけで済む。
--multiplay=in
オプションのIPアドレスはLANにおけるデスクトップマシンのアドレスになっている。みなさんはこれを自分のIPアドレスに変えて ― ただし、ルータをかませている場合は内部IPアドレスを用いること ― コールサインを好きなものに変えるだけでよい。
現在マルチプレイモードに入っているすべての機体がわかるこのページで、自分の存在を確認することもできる。なお、マルチプレイモードの詳細については、こちらのHOWTOを参照してほしい。
FlightGearでは離陸する場所の現地時間が用いられる。またお好みに応じて、コマンド行に--enable-real-weather-fetch
を追加することにより、実際の天候データを利用することも可能だ。
FlightGearのセッションを「記録(record)」したり「再生(playback)」したりするためのコマンドラインオプションも使える。フライトを記録するには--generic=file,out,20,flight.out,playback.xml
を、再生するには--generic=file,in,20,flight.out,playback.xml --fdm=external
を使えばよい。ただし、再生時のコマンドラインオプションには、記録時と同じ機種、時間、場所を指定する必要がある。
FlightGearのCVSには、安定版にはまだ存在しない多くの新機能がある。今後のリリースでは、必要な風景の取得や表示を「適宜」リアルタイムで実施する機能、機体になり代わるのではなくその中にいるかのようにプレイヤーに感じさせるコクピットのダイナミックビューなど、多くの新機能が搭載される予定だ。こうした新機能は、FlightGearのWebサイトにあるお知らせのセクションで確認できる。Olsen氏が語ってくれたように、現在進められているすべての活動の把握は難しいが、確かに楽しい作業だ。
まとめ
これまで長い間、FlightGearほどの感銘を与えてくれたオープンソースプロジェクトには出会ったことがなかった。私がFlightGearのプレイを始めるきっかけになったのは、ある地域のLUGメーリングリストで読んだ1件のコメントだった。それまでは、このソフトがUbuntu Dapperで使えることすら知らなかったのだ。
FlightGearのバージョン0.9.9を試しに動かしてから、すっかり気に入ってしまった。Ubuntu Edgyに入っているバージョン0.9.10-2は、さらに優れた新機能を数多く備えている。いま私はCVSに存在する新機能が待ち遠しくてしかたがない状態だ。これまでLinuxマシン用の優れたフライトシミュレータの登場を待ち続けてきたなら、もうこれ以上待つ必要はない。あなたの求めているものはここにあり、しかもその人気は上昇中だ。
FlightGearの歴史の簡単な紹介 |
---|
Curtis Olsen氏はFlightGearの誕生について次のように語っていた。
Olsen氏は「UNIXマシンの‘マルチタスク処理’を大学で初めて目にしたときからUNIX/Linux愛好家になった」とも語っている。 「私は当初から個人的にLinuxでFlightGearの開発を進めてきましたが、その途中、プロジェクトではWindows、Mac、SGI、Sunなどの移植版もずいぶん早くから用意していました」 現在、10数名以上の開発者がこのプロジェクトに携わっている。Olsen氏は「これまで、文字どおり何百という人々がコード、グラフィック、3Dモデル、ハードウェア、その他あらゆる面で貢献してくれました。以前は、私がこうした成果をひとつひとつ追跡して記録していたものですが、とても手に負えなくなったのであきらめました」と話している。 プロジェクトが大きくなっても、自分は今でもプロジェクトにコードを提供している、とOlsen氏は言う。
|