FS2000 APL SDK Overview



■APL SDK Overview
■FS2000でのAPLの変更点
 天候コマンドと変数
 新しい変数
 新しいコマンド
■APLによるアドベンチャーの開発
 イベント起動プログラミングの利点
 APL プログラミング・スタイル
 アドベンチャー作成の最初の一歩
 アドベンチャーやレッスンを追加する。
  アドベンチャーを追加する。
  レッスンを追加する。

  


■APL SDK Overview

APL SDKはマイクロソフトのFS2000で独自のアドベンチャーやレッスンを開発したいという
方に情報とツールを提供するものです。
このAPL SDKは以下のセクションからできています。
・FS2000でのAPLの変更点
・APLを使用したアドベンチャーの開発
・APL言語の機能仕様
・APLコンパイラー(Aplc.exe)の使用方法
・APL言語のレファレンス
  (このレファレンスにはAPLの文法、命令、形式、機能、APLで使用可能なフライトシミュ
  レータ変数が説明されています。)

このAPL SDKにはAPLコンパイラー(APLC.EXE)とサンプルアドベンチャー(とその関連ファイル)
が、あなた自身のアドベンチャーを作成する際に使用できる様に添付されています。

重要事項:APL SDKに含まれる情報はプログラマーに対する参考資料となることを目的として
います。プログラマーはC及びBASIC言語を良くしっていることを前提としています。
同様に、あなたが航空技術及び用語についての知識がある事も前提となっています。
このSDKに含まれる情報はマイクロソフト社の製品サポートサービスの対象ではありません。



■FS2000でのAPLの変更点
次の様なAPL変更と拡張がFS2000用として行われています。

天候コマンドと変数

FS2000ではAPL内でのローカルウェザーの定義を行なう事が削除された事から、全ての天候関係
のコマンドと変数がこの文書からは除かれています。
FS98用に作成されたアドベンチャーに対する下位互換性の観点から天候関係の機能はサポート
されていますが、FLTとWXファイルを使用して天候条件を設定される事をお勧めします。
天候関係の詳細については「FS2000での天候の使用方法」を参照して下さい。


新しい変数
・主要な六種類の計器の故障をサポート
	AIRSPEED_INDICATOR_FAIL
	ALTIMETER_FAIL
	ATTITUDE_INDICATOR_FAIL
	HEADING_INDICATOR_FAIL
	TURN_COORDINATOR_FAIL
	VERTICAL_SPEED_FAIL
・VOR1とVOR2の故障をサポート
	NAV_FAIL
・ADFの故障をサポート
	ADF_FAIL
・トランスポンダーの故障をサポート
	TRANS_FAIL
・自動操縦装置の故障をサポート−自動操縦装置をオフにし、再びオンにできなくします。
	AUTOPILOT_MASTER
・GPS/NAVスイッチの位置を制御する。
	GPSNAV
・FSが一時停止した時にアドベンチャーのタイマーをストップする。
	ADVENTURE_TIME
・Kohlsman Windowで設定したユーザー高度計の気圧(インチ単位の水銀圧)に戻す。
	ALTIMETER_BARO_IN_HG
・マッハメータの速度の読み取り
	MACH_SPEED
・センター燃料タンクの残量の読み取り
	CENTER_FUEL_LEVEL
・自動操縦装置の現在設定の読み取りとセット(機速、機速ホールドのオン/オフ、マッハ速度、
マッハ速度ホールドのオン/オフ、上昇/降下速度、上昇/降下速度ホールドのオン/オフ)
	AUTOP_AIRSPEED
	AUTOP_AIRSPEED_HOLD
	AUTOP_MACH
	AUTOP_MACH_HOLD
	AUTOP_VERTICAL_SPEED
	AUTOP_VERTICAL_SPEED_HOLD
・パーキングブレーキのセット
	PARKING_BRAKES
・着陸脚個々の故障をサポート
	GEAR1_FAIL
	GEAR2_FAIL
	GEAR3_FAIL
・レッスンの採点に基づく証明書表示の制御
	LESSON_SCORE
・自動操縦マスタースイッチがオンになっている時の自動操縦装置の故障
	AUTOP_FAIL
・パネルライトの故障をサポート
	PANEL_LIGHTS_FAIL
・ユーザー高度計の数値の読み取り
	DISPLAYED_ALTIMETER
・エンジン制御を有効にするエンジンの選択
	ENGINE_CONTROL_SELECT


新しいコマンド
・WAVファイルの再生が完了するまでウェイトする。
	WAIT PLAY



■APLによるアドベンチャーの開発

Microsoftフライトシミュレータ Adventure Programming LanguageはBASIC風の言語で、フライト
シミュレータの多くの変数(全てではありません)にアクセスする事を可能にしています。
(フライトシミュレータの各種の変数は、例えば機体の高度や針路、速度といった項目でシミュレ
ーションを色々な面で捕らえています。)
APLプログラムは一行に一つのステートメントまたは一つのコマンドを記述するという制限があり
ます。BASICと異なり、APLはインタープリターとして動かす事はできず、アドベンチャーを動かす
前に、まず、ソースをAPLC.EXEを使ってコンパイルしなければなりません。
APLはイベント駆動をサポートしているので、プログラムを動かす為に巨大なループを維持すると
いう必要はありません。これにより簡潔できれいなプログラミング、イベントに対する速やかな
反応、容易なデバッグが可能になっています。

APLを理解する鍵は、APLはパイロットに替わって機体を飛ばす為のものではないという点です。
APLを使って、自動操縦付きのフライトシミュレータの機体をいくらか運動させる事はできます。
そういう場合は最初に自動操縦系統のいくつかの変数を設定しておき、その後で、自動操縦装置
をオンにします。ただ、この場合、設定できる自動操縦機能には限界があります。例えば、自動
操縦で60度バンクから水平飛行に戻す事や設定した針路に戻したりする事はできますが、ループ
やロールといったアエロバティックな運動をさせる事はできません。


イベント起動プログラミングの利点

APLはユーザー機体の位置、高度、速度、針路の監視には最適です。そして特定のイベント(例えば
機体の高度があらかじめ設定した高度や速度、位置に達した場合)にWAVファイルを再生するといった
対応する行動を取らせることができます。
例えば、デフォルトのMeigs FLTファイル(FS2000.FLT)をロードし、ユーザーに離陸を促し滑走路針
路で高度2,000フィートまで上昇を指示するWAVファイルを再生する事ができます。また、一度スタ
ートさせれば、次の様にイベントを設定する事ができます。
・機体が離陸した時をチェックする。
・離陸後、速度が安全範囲であるかどうかをチェックする。
・機体の針路を監視する。、
・機体の高度を監視して1,500フィートに達した所で新しい指示を出す。

この場合、機体が離陸した時をチェックするというイベントにより速度、針路、高度イベントを
有効にします。(地上にいる時にはこの様なイベントをチェックする必要はありません。)
針路と速度イベントはフライトシミュレータ変数を受け取り、それが許容範囲にあるかどうかを
チェックします。もし、許容範囲外となった場合はユーザーに注意を促すWAVファイルを再生する
事ができます。

機体の高度が1,500フィートに達した時に高度イベントのトリガーが引かれ、例えば90度に針路を
変更し、引き続き3,000フィートまで上昇せよと言った新しい指示を出します。また、この高度イ
ベントによって新しい高度、速度、高度のチェックといった新しいイベントを有効にすると良いで
しょう。
それ以外にも無線周波数やVORと交差した時に行なうOBSの設定、自動操縦装置への値の設定、自動
操縦装置のオンといった、しなければならない事が色々あります。

プログラマーによって設定可能なイベントによってアドベンチャーの開発とトラブルシュートが容
易になり、且つ、ユーザーの入力に対するアドベンチャーの反応を素早くできます。


APL プログラミング・スタイル

すべてのプログラマーには、各々にとって一番やりやすいプログラム開発のスタイルがあります。
それらの殆どをAPLで使用する事が可能です。
但し、考慮しなければいけない重要事項がいくつかあります。
・ASCIIテキストの編集が可能なテキストエディターを使用しないといけません。例えばNotepad
  が最低線ですが、高機能のエディターが一つあると便利です。
・サブセクションを区別する為に4文字以上の標準インデントを使用します。
・IF…ELSEIF, WHILE…ENDWHILEタイプのセクションは内部をインデントします。
・変数には小文字及び大文字小文字のミックスを使い、コマンドやキーワードには大文字を使い
・各々のプログラムソースコードの頭部には標準の説明文セクションで始めます。この説明文セ
  クションにはアドベンチャーの名前、作者、作成日、バージョンやFLTやWXといった他に必要と
  するファイや著作権情報を記述します。
・ソース上での説明やセクションやサブルーチンを分割する為に複数行に亙るコメント文を使用
  します。
・コードの説明を行なう為のコメントは常に少ないより多いに超した事はありません。
・再使用するセクションやイベントの管理の為にはサブルーチンを使用しましょう。
・サブルーチンはソースコードの最後の部分に置きメインルーチンから切り離す事でトラブルシ
  ュートやプログラムの修正が容易になります。

再利用可能なコードの開発
アドベンチャー開発の大きな部分は似たようなタスクを行なう殆ど同一のコードを書く事に費や
されます。例えば、複数のVOR局を経由する航空路を追跡するエンルート部分を開発する場合、
一つのイベントと一つのサブルーチンを書く事でVOR局を交差した事を検知し、それを複数回再使
用する事ができます。更に、これらのサブルーチンでプログラムライブラリーを作り、それを使
って新しいアドベンチャーの開発を行なう事ができます。
再利用可能なサブルーチンの例としては以下のものがあります。
・ユーザーが一定の高度から許容範囲内にいるかどうかをチェックし、許容範囲外に出た時に注意
  促す。
・ジェット機の離陸の際にスピードを監視し、適切なスピードに達した時にV1、ローテート、V2、
  ギアアップ、フラップアップの読み上げを行なう。
・ILSアプローチの際にローカライザーやグライドスロープからどの程度外れているかをモニター
 する。


アドベンチャー作成の最初の一歩

APLでのアドベンチャー開発で必要とされる主要なスキルは二つの異なる領域に分けて考える事が
できます。その二つの領域とは、飛行計画とコードのデザインです。

最初の飛行計画の開発については実際に飛行を行なう際と同様の手順から始めます。空路図や
アプローチチャート、必要であればSIDやSTARチャートも揃えましょう。ルート上おのおのの部分
での針路、高度、VORの周波数、インバウンド/アウトバウンドのラジアルとそれに加え航空管制
機関(ATC)の一連の周波数も必要になります。
ユーザーに対してどういう指示を音声あるいは表示で出すかについての大まかなリストを準備しま
す。このリストはユーザーに指示を与えたり、ATCとの交信をシミュレートしたり、チェックリスト
を読み上げたり、また、もしユーザーが指示に従っていない時にはどの様に修正するかといった時
に使用します。これらの指示はフライトプランの適切な場所に挿入します。

アドベンチャーで針路、コース、高度を完全に守れるユーザーは少数である点に留意して、適当な
許容範囲を設定し、助言ですませる範囲や注意を与える範囲を個々に設定します。
FS2000のレッスンやチェックライドのプレフライトブリーフィングを参考にしてこの許容範囲を決め
れば良いでしょう。いくつかのエリアの境界は緯度経度または緯度経度と高度の組み合わせにする
と良いでしょう。このエリア内にユーザーがいる限り、特別なアクションは必要とされません。

それでは、次にフライトプランを実際のプログラムに移すことにしましょう。まずやる事は、フライ
トプランを論理的に連続する小さなセグメントに分割します。一つのセグメントが終了すると次の
セグメントが走り始めるという形です。例えば、IFRデパーチャー/フライトの最初部分は以下の様
になります。
・グランドコントロールへのクリアランスの要求と承認の復唱、タワーへの周波数の変更。
・タワーによる最終指示と離陸許可。機体を滑走路に移動し、離陸、1,000フィートへの上昇。
 タワーからデパーチャーコントロールへのハンドオフ。
・デパーチャーコントロールによる新たな高度への上昇指示。トラフィックパターンのベクター、
 最初の位置通報点(FIX)へのベクター。Centerとの交信指示。
・エンルート部分についてはフライトプランのVORから次のVORまでのレグを一つのセグメントと
  して分割すると良いでしょう。

各々のコードセグメントは以下の様な項目を含んでいます。
・コースや針路、高度、VORや音声無線の周波数に関する変数を設定する。
・機体の位置をチェックし、WAVファイルを再生するイベント集。
・セグメントが終了すると、次のセグメントを起動する。

これらの、小さなコードのセグメントは簡単に作成でき、テストをするのもセグメント間の関係
が次ぎのセグメントを順次起動するだけなので簡単です。アドベンチャーをテストするという事
は、アドベンチャーを起動し、想定している動作が実際に起動されるかを実際に機体を飛ばして
確認する事です。最初のコードセグメントが適切に動作し、次ぎのセグメントがきちんと起動す
れば、最初のセグメントのコードがそれ以降、問題を引き起こす事は考えなくとも良くなります。

ニューヨーク〜ロサンゼルス間ノンストップ飛行といった長距離フライトアドベンチャーを作成
する時は、到着やアプローチをテストする為だけにアドベンチャー全てを飛行しなければならず、
時間が全く足りなくなってしまいます。
この問題を解決する一つの方法は、降下を開始する直前の適切な位置、巡航高度で一度FLTファイ
ルをセーブする事です。アドベンチャーではこのFLTファイルを読み込ませ、降下直前部分のコー
ドにジャンプします。こうする事で、フライト全体をやらなくても、何度でもアプローチと着陸
部分をテストできます。この部分がうまく動作する様になれば、FLTファイル読み込みと降下直前
へジャンプして部分を取り除き、フライト全体をテストします。

あなたがプログラミングや操縦について初心者である場合は、一つか二つの事をする短いアドベン
チャーの作成から始めると良いでしょう。アドベンチャーは地上にいる時から始める必要はありま
せん。機体が空中にいる時から始めて良いのです。簡単なものとしては、セスナがMeigs飛行場の
上空2,000フィートを西に向かって飛んでいるFLTファイルを作成します。それからFLTファイルを
読み込み、無線をオヘアVORに調整し、VOR1のOBSを指針がセンターにくる様ユーザーに指示を与え
VORラジアルを追跡する様に自動操縦をセットさせるアドベンチャーを作成します。VORを交差した
時には、OBSをリセットし、自動操縦装置にVOR局のアウトバウンド270度ラジアルを追跡させれば
良いでしょう。


アドベンチャーやレッスンを追加する。

アドベンチャーやレッスンの作成とテストが終了すると、フライトシミュレータにそれらのプログ
ラムを追加しないといけません。コンパイルしたアドベンチャーのファイル(.ADVファイル)は適切
なディレクトリーに移動する必要があります。また、アドベンチャーに関連するファイルも同様に
適切なディレクトリーに移動する必要があります。
そうする事で、あなたの作成したアドベンチャーやレッスンがアドベンチャーやレッスンダイアロ
グから選択出来る様になります。


アドベンチャーを追加する。

APL SDKにはサンプルアドベンチャーファイルであるSdk_smpl.adv が入っています。このアドベン
チャーは次のファイルを参照しています。
・Cfmgsr18.flt ‐ FLTファイルです。(FS98ではシチュエーションファイルと呼ばれていました。)
  あなたが作成するアドベンチャーをセットアップします。(なお、このファイルはプライベートパ
  イロットレッスンの一部としてFS2000に含まれています。)
・Cfmgsr18.wx‐ Cfmgsr18.fltに関連する天候ファイルです。天候ファイルはFLTファイルをセーブ
  した時に自動的に作成されます。
・Sdk_smpl.brf ‐ このブリーフィングファイルはNotepadやその他のASCIIテキストエディターで作
  成します。BRFファイルの内容はフライトシミュレータのアドベンチャーやレッスンのダイアログ
  で、プレフライトブリーフィングに表示されます。なお、BRFファイルはアドベンチャーと同じ名前
  でなければなりません。
・Sdk_smpl.bmp ‐ アドベンチャーダイアログに表示されるプロモーション用のイメージファイルです。
 (アドベンチャーダイアログではBMP形式のイメージファイルのみが使用できます。AVI形式のファイ
  ルを流したり表示する事はできません。) なお、BMPファイルはアドベンチャーと同じ名前でなけ
  ればなりません。
・最後に、貴方のアドベンチャーで使用する複数のWAVファイルです。アドベンチャーでは複数のWAV
  ファイルを参照する事ができます。これらのファイルは\adv\wavディレクトリーに入っています。
  (このサンプルではFS2000に同梱されているWAVファイルを使用します。)

あなたが、自分のアドベンチャーを作成された時は、全ての必要なファイルを正しいFS2000のサブディ
レクトリーに移動して下さい。デフォルトのディレクトリーをご覧になるとアドベンチャーのディレク
トリーは以下の様な構造になっています。

FS2000
	\ADV
		\Advanced
		\Beg
		\Expert
		\Int
		\Other
		\Wav

私達はサードパーティ製のアドベンチャーの為に\Otherディレクトリーを割り当てています。あなた
のアドベンチャーの関連ファイルもこの\Otherサブディレクトリーにコピーして下さい。
コピーするファイルは上記のサンプルで言えば以下のものです。
	Sdk_smpl.adv
	Cfmgsr18.flt
	Cfmgsr18.wx
	Sdk_smpl.brf
	Sdk_smpl.bmp

但し、アドベンチャーのWAVファイルはFS2000\Adv\Wavサブディレクトリーにコピーして下さい。
デフォルトではアドベンチャーやレッスンは関連するWAVファイルを参照する時に、このディレクト
リーを探しに行きます。


レッスンを追加する。

レッスンは本質的にはアドベンチャーと言って良いでしょう。但し、特定の操縦指導目的の為の物
と考えて下さい。フライトシミュレータにレッスンを追加する方法はアドベンチャーと基本的には
同じですが、いくつかの点が異なっています。

最初にコードをコンパイルした後、作成されたADVファイルの拡張子を.LESに変更する必要がありま
す。例えば、Sdk_smpl.adv は Sdk_smpl.lesにします。
次にレッスンと全ての関連ファイル(.BRF, .AVI, .FLT, .WX,.WAV) は適切なレッスンディレクトリ
ーにコピーしないといけません。(注: レッスンのダイアログでは関連するファイルとして作成して
おけばAVIファイルを表示する事ができます。しかしながら、BMPファイルを表示する事はできませ
ん。)
デフォルトのディレクトリーをご覧になるとレッスンのディレクトリーは以下の様な構造になって
います。
	FS2000
		\LESSONS
			\Atp
			\Comm
			\Instr
			\Priv
			\Videos
			\Other
			\Wav

私達はサードパーティ製のレッスンの為に\Otherディレクトリーを割り当てています。あなたのレ
ッスンの関連ファイルもこの\Otherサブディレクトリーにコピーして下さい。
コピーするファイルは上記のサンプルで言えば以下のものです。
	Sdk_smpl.les
	Cfmgsr18.flt
	Cfmgsr18.wx
	Sdk_smpl.brf
	Sdk_smpl.avi

繰り返しになりますが、あなたのレッスンで使用するWAVファイルはFS2000\Adv\Wavサブディレク
トリーにコピーして下さい。デフォルトではアドベンチャーやレッスンは関連するWAVファイルを
参照する時に、このディレクトリーを探しに行きます。




BACK TO MAIN INDEX BACK TO SDK INDEX
Last Update 2000/2/18