SAIL(6) SAIL(6) 名称 sail - マルチユーザ版ゲーム「帆船の戦い」 書式 sail [ -s [ -l ] ] [ -x ] [ -b ] [ num ] 解説 sail は、もともとは、S. Craig Taylor によって開発された、アバロンヒル社 の戦闘帆船ボードゲームのコンピュータ版です。 sail のプレイヤは、旧式の戦艦の指揮をとり他のプレイヤやコンピュータと戦 い ます。プレイヤは、ゲームの中に記録された数多くの歴史上の海戦の中の 1 つを再現してもよいし、空想上の戦闘を選ぶこともできます。 sail 海軍の艦長として、プレイヤは自分の艦の活動については完全な管理がで き ます。プレイヤは全ての操作を命令し、帆装を変更し、そして片舷斉射の恐 ろしい破壊力を解き放つ正しい瞬間を判断しなければなりません。更に、敵 と 戦 うことに加えて、プレイヤは、風と海の力を味方につけて自分のために働か せなければなりません。帆船時代の多くの海戦の勝敗は、ある 1 人の艦長の ’ 風上’ をとる能力により決せられました。 フラグは: -s 上位 10 位までの船員の名前と艦を表示します。 -l ログイン名を表示します。-s とともに指定したときだけ有効です。 -x どの艦にするかという選択を求められるかわりに、最初に利用できる艦 でプレイします。 -b ベルを鳴らしません。 実装 sail は実は 2 つのプログラムを 1 つにまとめたものです。各プレイヤは彼自 身の船を動作させるプロセスを起動します。それに加えて、(最初のプレイヤに よって) 起動された ドライバ[driver] プロセスが、コンピュータ船を動作 さ せ、さらに全体にわたる記録計算を引き受けて処理します。 ド ライバプロセスは、それが制御している全ての船の動きを計算しなければな らないので、より多くの船をコンピュータがプレイすればするほど、ゲーム は よりゆっくり進行しているように見えるでしょう。 も し、あるプレイヤが現在進行中のゲームに参加したとすると、他のプレイヤ と同期して同じ速度になるでしょう (皆にすれば幾分か遅くなります)。そして 、その後、彼は他のプレイヤと同じ速度でプレイするでしょう。 マ ルチユーザゲームを Version 7 UNIX — これは sail がその上で最初に書か れたオペレーティングシステムでした — に実装するためには、通信しているプ ロ セスがメッセージを読み書きする場所として共通の一時ファイルを使う必要 がありました。それに加えて、共有ファイルへの排他的アクセスを保証する た め 、ロック機構が供給されなければなりませんでした。例えば、 sail はシナ リオ 21 については、 /tmp/#sailsink.21 という名前の一時ファイルを使いま す 。そして、他のシナリオに対してはそれに類するファイル名を使用します。 一時ファイルへの排他的アクセスを供給するために、 sail は Jeff Cohen 作 の "pubcaves" と呼ばれる古いゲームから盗んだテクニックを使っています。 "/tmp/#saillock.??" という名前のファイル ("??" はゲームのシナリオ番号に 対 応しています) へのリンクを作成できるまでの間、プロセスが次のようなル ープ for (n = 0; link(sync_file, sync_lock) < 0 && n < 30; n++) sleep(2); でビジーウェイトをしています。 UNIX はリンクが唯一つのファイルをポイ ン ト するものであることを保証しているので、リンクに成功したプロセスは一時 ファイルへの排他的アクセスを獲得します。 この仕組みが実際に機能するかどうかについては、さらなる考察が必要でし ょ う。それというのも、マシン ucbmiro (=miro.berkeley.edu の BITNET アドレ ス) が暴走してリブートしたとき、ファイルシステム検査プログラムによっ て 、 sail の一時ファイルとそれがリンクしているファイルの間に、3 個のリン クが発見されましたから。 プレイヤプロセスとドライバプロセスとを分離した結果 プレイヤ達が移動や発砲などの全体の興味に関わる重要な行動をするときに は 、 ドライバプロセスはゲーム中の他の船の行動とその行動とを調整しなければ なりません。例えば、もしあるプレイヤがある方向に移動したい場合には、 彼 の 船を移動させることをドライバプロセスに要求するメッセージを、一時ファ イルに書き込まなければなりません。ターンのたびに、ドライバプロセスは プ レ イヤ達から送られたメッセージを全て読んで、起こったことを決定します。 それから、ドライバプロセスは変数の新しい値などを一時ファイルに書き戻 し ます。 こ の通信がゲームに及ぼす最も顕著な効果は移動の遅れです。もしもプレイヤ が彼の船の移動をタイプして、リターンキーを叩いたとしましょう。次に何 が 起 こるでしょうか?プレイヤプロセスは一時ファイルに書き込むべきメッセー ジをバッファに溜込みます。およそ 7 秒おきに、プレイヤプロセスは一時ファ イ ルへの排他的アクセスを獲得して、そのバッファを一時ファイルに書き出し ます。ドライバプロセスは非同期的に動作しています。これは、移動コマン ド を 読み込み、そのコマンドを処理し、そしてその結果を書き出さなければなり ません。これには、一時ファイルへの 2 回の排他的アクセスを必要とします。 最後に、プレイヤプロセスがもう 1 回の更新にやっと取り掛かる頃、移動の結 果がスクリーン上に表示されます。それゆえ、プレイヤが自分が行なった移 動 結果を知るまでに、移動それぞれにつき、一時ファイルへ排他的アクセス 4 回 (1 回の排他的アクセスに 7 秒から 21 秒の間のどれくらいの時間を要する か は、非同期性に依存しています) が要求されます。 実 際は、遅れはそう見えるほどには厄介なものではありません。移動には、パ イプライン処理の余地があります。プレイヤは 1 番めの移動メッセージを書き 込んだあと、2 番目の移動コマンドを入力できます。 1 番目のメッセージは、 一時ファイルの中でドライバプロセスの読み込みを待ちます。そして、 2 番目 の メッセージは、ファイルバッファにあってファイルに書き出されるのを待っ ています。そういうわけで、常に 1 回だけターンを先行して移動コマンドを打 ち込むことで、プレイヤは十分素早く帆走することができます。 も しプレイヤが 7 秒間隔の更新 2 回の間に数個の移動コマンドを打ち込んだ とすると、ドライバプロセスに見えるのは最後の移動コマンドだけです。同 じ 更新期間中の複数の移動コマンドは、ある意味で互いに上書きし合います。 SAILの歴史 筆者は sail の最初のバージョンを 1980 年の秋に PDP 11/70 の上で書きまし た。言うまでもなく、コードは恐ろしいもので、移植可能とはとうてい言え る も のでもなく、そして動きもしませんでした。プログラムは、全くモジュール 化されていない上に、数行おきに fseek() や fwrite() がありました。トップ ダウン手法による徹底的な書き換えによって、1981 年までに筆者は最初の機能 するバージョンを仕上げました。片舷斉射の発射や方角の発見に関していく つ か のやっかいなバグがありました。ところで、 sail は浮動小数点を使ってい ません。それで、方角についてのルーチンは、すこし手が込んだものになっ て います。 Ed Wang は、1981 年に angle() ルーチンをより間違いのないものに 書き換えました。 (しかしながら、それは、まだ完全には機能していません)。 そ して、彼はゲームの始めで (最初に利用可能な船の代わりに) プレイヤが自 分の望む船を選べるようなコードを加えました。 ハッピィ艦長 (Craig Leres) が、 sail を移植可能にすることに初めて責任を も ちました。ちなみに、これはとても難しい仕事でした。2 や 10 といった定 数がコードにはとても頻繁に現れます。また、 sail の中で「Riggle 記念構造 体 ("Dave Riggle":筆者)」を使ってしまったということでも名前を売ってしま ったぐらいですし。筆者の構造体参照の多くはとても長いので、ラインプリ ン タ の印字ページをはみ出してしまいます。もし、笑わないと約束して下さるな ら、ここに一例をお見せしましょう。 specs[scene[flog.fgamenum].ship[flog.fshipnum].shipnum].pts sail には、1983 年の夏と秋に最も徹底的な 4 回目の書き換えがなされました 。 Ed Wang はコードを殆ど何もない状態から書き換えモジュール化しました ( 記念碑的な偉業です)。彼は、多くの新しいバグを導入したにもかかわらず、最 終 的な結果はとても奇麗で、(?) より速いものになりました。彼は、ウィンド ウ移動コマンドと艦船発見コマンドを加えました。 歴史的情報 古い横帆船 [Square Rigger] は、複雑な帆走が可能で、とても操作しやすい船 で す。これら横帆船の唯一つの弱点は、風上にぎりぎりに間切って帆走できな いことです。木造船の設計は大砲を左舷と右舷の方向に向けることだけを考 慮 し ていました。少数の小さな大砲 (通常 6 ポンド砲か 9 ポンド砲) だけが前 方に狙いをつけることができました。しかし、それらの砲は、68 門の 24 ポン ド 砲か 32 ポンド砲からなる舷側砲の片舷斉射に比べれば、その効果は小さい ものでした。大砲は大体つぎのような方向に向けられます。 \ b---------------- ---0 \ \ \ 10の範囲まで (砲丸 [round shot] の場合) \ \ \ 片舷斉射が敵艦の縦方向に打ち抜かれたときには、興味深い現象が起きまし た 。 砲弾は甲板 [こうはん] に沿ってはねまわり数倍の損害を加えがちでした。 この現象は縦射 [rake] と呼ばれました。船の船首 [bow] は非常に強固で船尾 [stern] より小さな標的だったので、船尾縦射 [stern rake](船尾より船首の 方向の着弾) は船首縦射 [bow rake] によるよりも大きな損害を与えました。 b 00 ---- 船尾縦射 [stern rake]! a 大抵の船は、カロネード砲 [carronade] を装備していました。この大砲は、非 常 に大きく、射程距離の短いものでした。アメリカの艦船にはフランス革命か ら 1812 年の戦争 (米英戦争) まで、ほぼすべての艦船にカロネード砲が装 備 されていました。 sail で扱っている時代は、ほぼ 1770 年代から 1815 年にナポレオンのフラン ス支配が終るまでです。帆船時代に関しては、素晴らしい本が多くあります 。 筆者の好きな作家は Captain Frederick Marryat です。もっと現代の作家達の 中では、C.S. Forester や Alexander Kent です。 艦船には、装備された兵器で区別される分類があります。どの艦隊でもメイ ン マ ス ト を なす艦船は、戦列艦 [Ship of the Line]、即ち、戦列をなす戦艦 [Line of Battle Ship] です。これらの艦船がこのように名付けられた理由 は 、 これらが大きな列を作って交戦するからです。彼らは、互いに助け合えるぐ らい近くに位置しますが、それでも、どの艦もその両舷側の片舷斉射 [broad- side] を発射できるようにします。現代の「遠洋定期船 [ocean liner]」とか 「定期船 [liner]」、そして「戦艦 [battleship]」という言葉は 「 戦 列 艦 [Ship of the Line]」から派生したものです。最もありふれた分類は、74 砲門 で 2 層甲板の戦列艦です。 2 層の砲列甲板には普通 18 ポンド砲か 24 ポ ン ド砲が搭載してありました。 第 1 に来る分類は、艦隊の誇りとなる船です。これらの艦船は、80 砲門から 136 砲門の大砲を搭載した巨大な 3 層甲板戦列艦です。 3 層の大砲は、普 通 18 ポンド砲、24 ポンド砲、そして 32 ポンド砲でした。これらの大砲は、こ の順番で上から下に搭載されていました。 他のさまざまな船が次の分類になります。これらの戦艦は殆んど全て「レイ ジ ー[razee] 」、すなわち、甲板を 1 層切り落とした戦列艦です。これらの戦列 艦は、40-64 砲門の大砲を搭載した、フリゲート艦 [frigate] と戦列艦の貧弱 な あいのこです。レイジーには、フリゲート艦のスピードもなければ、戦列艦 の火力もありませんでした。 その次に来る分類が、「艦隊の目」です。フリゲート艦 [frigate] は 32 砲門 か ら 44 砲門の大砲をどこにでも搭載していて大きさはさまざまです。これら は、大変便利な船です。フリゲート艦は、より大きな船に対しては航行速度 で ま さり、より小さな船に対しては火力でまさります。フリゲート艦は、ずっと 大きな 74 砲門の戦列艦がやるように戦列を組んで戦ったりはしませんでし た 。 その代わり、これらの船は、敵の背後をおびやかし、傷ついて戦えなくなっ た船をだ捕しました。これらの船は、艦隊から離れて行なう任務で、はるか に 効 果を発揮しました。例えば、長い航海を短縮するとか、ボートによる戦闘を 切り開くとかの任務です。これらは、強力な一撃のあと、ずばやく引くこと が できました。 最 後に来る分類には、コルベット艦 [corvette](平甲板 1 段砲装の帆装戦艦) 、スループ帆船 [sloop](1 本マストの縦帆船)、そしてブリッグ帆船 [brig](2 本 マストの横帆船) があります。これらは、一般的には 20 砲門以下の大砲を 搭載しているより小さな船です。コルベット艦は、フリゲート艦よりほんの ち ょ っと小さいだけなので 30 砲門までの大砲を載せられたでしょう。スループ 帆船は急送公文書や船客を搬送するのに使われました。ブリッグ帆船は陸地 で 囲まれた湖のために建造されたものです。 SAIL 固有の詳細 sail では、船は 2 文字で表されます。 1 番目の文字は、船首 [bow] を表し ます。もう一方の文字は、船尾 [stern] を表します。船には、船籍と番号があ ります。ある船籍の最初の船は番号 0 です。2 番目の船は番号 1、などなど。 したがって、ゲームの最初の英国船は「b0」と印字されます。 2番目の英国 野 郎は「b1」、そして、5 番目のスペイン紳士は「s4」となります。 船は、戦闘帆 [Battle Sail] と呼ばれている通常の帆装をつけられます。また 、それに加えて総帆 [Full Sail] と呼ばれる全帆を結びつけられます。総帆の 船 は本当に美しい眺めです。そして、総帆の船は戦闘帆装の船よりずっと速く 航行できます。総帆装についての唯一の問題は、帆と索具に非常に大きな応 力 が かかるので、狙い澄ました砲丸は、帆をちりじりに引き裂いてしまうことが できるということです。これにひきかえ、ゆるんだ帆には、砲丸は小さな穴 し か開けられません。この理由で、総帆装をつけた船では、索具への損傷は 2 倍 になります。このことで、総帆を使うことを思いとどまらないで下さい。筆 者 は 、総帆を戦闘たけなわとなるまで維持するのが好きです。総帆装の船には船 籍として大文字を設定します。例えば、蛙食いのフランス野郎「f0」が総帆 で あれば、「F0」と印字されます。 船 が、傾いた廃船 [listing hulk] になるまで叩き潰されたときは、最後まで 残っていた者が「旗を下ろして降伏」します。この儀式は、船の正式な降伏 で す。降伏した船の船籍文字は、「!」として印字されます。例えば、最後の例の フランス野郎は、すぐに「!0」になるでしょう。 船が傾いた廃船の段階に至ったときには、船が出火したり沈没したりする可 能 性が確率的に生じます。沈みつつある船は、その船籍として「~」が印字されま す。出火していて、今にも爆発しそうなときには、「#」が印字されます。 だ捕された船はだ捕船回航員の船籍になります。それゆえ、もしアメリカ船 が 英国船をだ捕したならば、英国船の船籍として、「a」が印字されます。更に、 船の番号は最初の番号しだいで「&」,「’」, 「(」, ,「)」, 「*」, 及び 「+ 」 につけかえられます。例えば、アメリカ船にだ捕された「b0」は、「a&」と なります。フランス野郎にだ捕された「s4」は「f*」となります。 究極の例は、もちろん、アメリカ船に捕獲された爆発しそうなイギリス野郎 で す:「#&」 移動 多 くの人にとって、移動は sail の最も困惑させられる部分でしょう。艦船は 8 方向を向くことができます: 0 0 0 b b b0 b b b 0b b 0 0 0 艦艇が舵を切ると、その船の「船尾 [stern]」が動きます。「船首 [bow]」 は 、動きません。 (風が凪いでさえいなければ)、風には関係なく船はいつでも舵 を切ることができます。すべての船は、船足を失ったときには漂流してしま い ます。もし、船が 2 ターンの間に全く前進しなければ、その船は漂流し始めま す。もし船が漂流し始めた場合、もし「面舵 [right turn]」を切るか、「取舵 [left turn]」を切る以外のことをしようとしているなら、舵を切る前にまず前 進しなければなりません。ちなみに、面舵や取舵を切ることはいつでも可能 で す。 sail の移動コマンドは、いくつかの前進と旋回からなる文字列です。例として は、「l3」があります。これは、船に取舵を切らせて、 3 スペース分前進させ ます。上図では、「b0」は 7 回連続して取舵を切っています。 sail が移動入 力を催促するときには、データ取り込みのための 3 文字を印字します。例えば 、 move (7, 4): 最初の数字は、旋回を含めて、移動できる最大数です。 2 番めの数字は、可能 な旋回の最大数です。時々、数字の間に引用符号の「’」が印字されます。もし 引 用符号があれば、それは、船が漂流していることを意味しています。このと き、舵を切る前に船足を取り戻すため前進しなければなりません (上の説明 を 参照のこと)。上述の例で可能な移動のいくつかは、次のようなものです: move (7, 4): 7 move (7, 4): 1 move (7, 4): d /* 漂流、または 何もしない */ move (7, 4): 6r move (7, 4): 5r1 move (7, 4): 4r1r move (7, 4): l1r1r2 move (7, 4): 1r1r1r1 横 帆船は、風上に向かって帆走することには全く惨めなほど機能を果たしませ んでした。そのため、移動コマンド列のどこかで風上を向いてしまったら、 移 動はそこで止まってしまいます。例えば、 move (7, 4): l1l4 Movement Error; Helm: l1l ------ (Helm = 舵輪、舵の動き) そ のうえ、旋回を行なうときにはいつでも、移動の許容限度は最小にまで低下 します (残っているものといえば、新しい態勢で持てるはずのものです)。要す る に、もし風上によりぎりぎりに間切って舵を切れば、「move」プロンプトに 表示される全許容量を帆走することは、全くできそうにありません。 昔の帆船の船長たちは、風について常に気を配っていなければなりませんで し た 。 sail の艦長達も、全く同じです。船の移動する能力は、風に対する態勢 に依存しています。可能な角度のうち最善のものは、船尾から 45 度の方角 か ら 風を受けることです。即ち、船尾からちょっとずれた方角からです。スクリ ーンの脇に現れる指示によって、風に対する方位全てに対する、その船に可 能 な 移動を知ることができます。これは、まず、戦闘帆での速度を示し、次に、 総帆での速度を括弧内に示します。 0 1(2) \|/ -^-3(6) /|\ | 4(7) 3(6) 船の船首(「^」で表します)が上を向いており、風がページの下から上へ吹いて いるとしましょう。 1 番下の「3(6)」という数字は、その状況での戦闘帆と総 帆での速度を表すでしょう。もし、風が (後方) 45 度から吹いていれば 、 は 「4(7) 」移動できます。もし、風が帆桁方向から (横風) であれば、「3(6)」 です。もし、風が船首からちょっとずれた方向からであれば、「1(2)」だけ し か 移動できません。風に対面してしまったら、全く移動できません。風に対面 してしまった船は、「枷をかけられた」と言われていました。 風速と風向き 風速と風向きは画面の脇に小さな風信器として表示されます。風信器の真中 の 数字は、風速を表します。そして、+ から - への向きは、風向きを示します。 風は+符号 (高気圧) から - 符号 (低気圧) への向きに吹きます。例えば、 | 3 + 風速は、 0 = 静穏 [becalmed]、 1 = 軽風 [light breeze]、 2 = 和風 [mod- erate breeze]、 3 = 疾風 [fresh breeze]、 4 = 雄風 [strong breeze]、 5 = 疾強風 [gale]、 6 = 全強風 [full gale]、 7 = ぐ風 [hurricane]。ぐ風が あらわれたら、全艦船が壊滅してしまいます。 鈎錨による引っかけと絡まり もし、2隻の船が衝突したら、彼らは互いに絡まってしまう危険を冒しています 。これは、「絡まり [fouling]」と呼ばれています。絡まった船は、一緒に く っ ついてしまい、どちらも動けません。双方が望む場合、彼らは絡まりを解除 することもできます。乗船乱入団を他の船に送り出せるのは、敵艦を絡めた か 鈎錨で引っかけたときに限られます。 船 は四つ爪錨 [grapnel] を他の船の索具 [rigging] に投げつけることにより 引っかけることができます。 船が保持している絡まりと鈎錨の引っかけの数は画面の右上に表示されます。 乗船乱入 乗船乱入は、人命の点からすると非常に費用のかかる冒険でした。 sail で は 、 乗船乱入団が作られるのは次の場合です。つまり、敵艦に乗船乱入するため か、攻撃に対抗して自分自身の艦を守るためかのいずれかです。防衛のため の 乗船乱入団として組織された人々は組織されぬままの人々より2倍も激しく自艦 を守って戦います。 乗船乱入団の乗船乱入攻撃の強さは、送られる乗員の質と数により決まりま す 。 乗員の質 英 国の船乗りは、彼らの航行能力の優秀さで世界中に盛名を馳せました。しか し、実は、世界一の船員は、アメリカの船員だったのです。何故かといえば 、 アメリカ海軍は、王立海軍の賃金の 2 倍を支払ったので、海の好きな英国の船 員は数千の単位でアメリカへ逃亡したからです。 sail では、乗員の質は、5 つのエネルギーレベルに量子化されます。「 精 鋭 [Elite]」な乗員は、他の全ての船乗りに対して、射撃能力においても格闘能力 においても凌駕できます。「一流 [Crack]」な乗員が、次に来ます。 「 普 通 [Mandane] 」 な 乗 員 は 平 均 的です。「未熟 [Green]」な乗員と「反抗的 [Mutinous]」な乗員は、平均以下です。上手な目の子勘定としては、「一流 」 と「精鋭」な乗員は「普通」な乗員に比して片舷斉射あたり 1 発余分に命中さ せます。「未熟」な乗員にはあまり多くを期待しないことです。 舷側砲[broadsides] 各舷側砲 [broadsides] には、次の 4 種類の砲弾を装填できます: ぶど う 弾 [grape]、鎖弾 [chain]、砲丸 [round]、2 連発 [double]。大砲 [gun] とカロ ネード砲 [carronade] を、左舷 [port] と右舷 [starboard] の両砲郭に搭 載 で きます。カロネード砲 [carronade] は 2 の射程距離しかありません。その ため、カロネード砲を発射できるほど近付かなければなりません。他の船の 船 殻 [hull] を砲撃するか、索具 [rigging] を砲撃するかを選択することができ ます。もし船の距離が 6 よりも遠ければ、読者は索具を砲撃できるだけです。 砲弾の型とその長所は: 砲丸[round] 10 の射程距離。船殻と索具のいずれの砲撃にも適しています。 2 連発[double] 1 の射程距離。船殻と索具のいずれの砲撃にも非常に適しています。 2 連発は 、装填するのに 2 ターンが必要です。 鎖弾[chain] 3 の射程距離。索具を粉砕してしまうのに特に優れています。しかし、船殻 や 大砲に損害を加えることはできません。 ぶどう弾[grape] 1 の射程距離。たまに、敵乗員に圧倒的な効果を示します。 スクリーンの脇には、自分の船に関する極めて重要な情報が表示されます: Load D! R! Hull 9 Crew 4 4 2 Guns 4 4 Carr 2 2 Rigg 5 5 5 5 「Load (装填)」は、左舷と右舷それぞれの砲にどのような砲弾が装填されてい るかを示します。砲弾の後の「!」はそれが最初の片舷斉射であることを示しま す 。最初の片舷斉射は、戦闘の前に、そして甲板が血で真っ赤に染まる前に、 注意深く装填されています。その結果、最初の片舷斉射は、後で装填したと き の片舷斉射より若干効果的です。砲弾の型のあとの「*」は、砲側員がまだその 砲弾を装填中で、まだ発砲できないことを示します。「Hull (船殻)」は、どれ くらいの船殻が残されているかを示します。「Crew (乗員)」は、3 つの区画ご との乗員を示します。乗員が死ぬにつれて、読者は砲撃力を失なっていきま す 。 「Guns (大砲)」と「Carr (カロネード砲)」は、左舷と右舷の大砲を示しま す。大砲を失うと、それだけ砲撃力を失います。「Rigg (索具)」は、3 本マス トや 4 本マストにどれくらいの索具が残っているかを示します。索具が打ち払 われるにつれて、機動力が失われてゆきます。 砲撃の効果 船が雷のような大音響をとどろかせて片舷の砲を発射するときは、とても劇 的 で す。しかし、ただ行き当たりばったりに片舷斉射を行なっても、命中は全く 保証されません。片舷斉射の破壊力には、多くの要素が影響します。まず第 1 の 、そして、主要な要因は、距離です。 10 の距離にある船を砲撃する方が、 すぐ横に並んで波を蹴立てて進んでいる船を砲撃するより困難です。次は、 縦 射 [rake] です。以前に記述した通り、縦射砲撃は、10 の距離にある船の帆柱 をときには折り倒すことができます。その次には、乗員の数と質が片舷斉射 に よ る損害に影響します。発砲する大砲の数もまた、いわば、実を結んで得点に なると言えます。最後に、天候が片舷斉射の正確さに影響します。もしも、 波 が高ければ (5 または 6)、戦列艦は下側の砲門を開くことさえできず、大砲を 出せません。このことにより、嵐の中では、フリゲート艦や他の平甲板の船 は 有利になります。シナリオの Pellew vs. The Droits de L’Homme (ペルー艦長 対人権号) は、この特殊な状況を利用しています。 修理 船殻、大砲、索具に対して修理を行なうことができます。3 ターンにつき 2 ポ イ ントの遅い割合で修理が進みます。それ以上の修理ができなくなったときに は、「修理完了 [Repair Completed]」のメッセージが表示されます。 コンピュータ船の特性 sail におけるコンピュータ船は、上述の全ての規則に従いますが、しかし少数 の 例外があります。コンピュータ船は、決して損害を修理しません。もし、コ ンピュータ船が修理をしたら、プレイヤ達はコンピュータ船に決して勝てな い で しょう。しかし、今のままでも既に彼らは、十分良くやっています。慰めと して、コンピュータ船はターンごとに 2 連発の砲撃を行なえます。まぐれ当た り もあるので、プレイヤの船は近付かないのが、合理的というものでしょう。 ドライバプロセスが、コンピュータ船の動きを計算します。ドライバプロセ ス は 、典型的な A.I. の距離関数と縦型検索によってコンピュータ船の動きを計 算することで、最高「得点」を発見します。これは、かなりうまく機能して い る ように見えます。しかしながら、この A.I. が完璧でないことは筆者が真っ 先に認めましょう。 遊び方 sail にコマンドを与えるには、文字を 1 文字タイプします。そのとき、更 に 入力するよう催促されます。コマンドの短い要約を次に示します。 コマンドの要約 ’f’ 可能なら、片舷斉射を行ないます ’l’ 再装填 ’L’ 舷側砲から弾を抜きます (弾薬を交換するため) ’m’ 移動 ’i’ 最寄りの船を表示 ’I’ 全艦船を表示 ’F’ 特定パターンの船を 1 隻または数隻探します (例えば全アメリカ船は「a?」) ’s’ 艦隊全体にメッセージを送信 ’b’ 敵艦への乗船乱入の試み ’B’ 乗船乱入隊を呼び返します ’c’ 帆装を交換 ’r’ 修理 ’u’ 絡んだ索具をほどく試み ’g’ 鈎錨を引っかける/はずす ’v’ ゲームのバージョンナンバの表示 ’^L’ 画面の再描画 ’Q’ 終了 ’C’ 読者の船をウィンドウの真中にします ’U’ ウィンドウを上へ移動 ’D’,’N’ ウィンドウを下へ移動 ’H’ ウィンドウを左へ移動 ’J’ ウィンドウを右へ移動 ’S’ ウィンドウを自分の船についていかせるか今の位置を保つかを反転 シナリオ 以下に、 sail のシナリオの要約を示します: Ranger vs. Drake: 北からの風、疾風。 (a) Ranger 19 砲門 スループ帆船 (一流の乗員) (7 点) (b) Drake 17 砲門 スループ帆船 (一流の乗員) (6 点) The Battle of Flamborough Head: 南からの風、疾風。 こ れは、ジョン・ポール・ジョーンズの最初の有名な海戦です。ボノム・リシ ャールに乗り組んだ彼は、素早くセラピスに乗船乱入したおかげで、セラピ ス の優勢な火力を克服できました。 (a) Bonhomme Rich 42 砲門 コルベット艦 (一流の乗員) (11 点) (b) Serapis 44 砲門 フリゲート艦 (一流の乗員) (12 点) Arbuthnot and Des Touches: 北からの風、疾強風。 (b) America 64 砲門 戦列艦 (一流の乗員) (20 点) (b) Befford 74 砲門 戦列艦 (一流の乗員) (26 点) (b) Adamant 50 砲門 戦列艦 (一流の乗員) (17 点) (b) London 98 砲門 3 層甲板 戦列艦 (一流の乗員) (28 点) (b) Royal Oak 74 砲門 戦列艦 (一流の乗員) (26 点) (f) Neptune 74 砲門 戦列艦 (平均の乗員) (24 点) (f) Duc de Bourgogne 80 砲門 3 層甲板 戦列艦 (平均の乗員) (27 点) (f) Conquerant 74 砲門 戦列艦 (平均の乗員) (24 点) (f) Provence 64 砲門 戦列艦 (平均の乗員) (18 点) (f) Romulus 44 砲門 戦列艦 (平均の乗員) (10 点) Suffren and Hughes: 南からの風、疾風。 (b) Monmouth 74 砲門 戦列艦 (平均の乗員) (24 点) (b) Hero 74 砲門 戦列艦 (一流の乗員) (26 点) (b) Isis 50 砲門 戦列艦 (一流の乗員) (17 点) (b) Superb 74 砲門 戦列艦 (一流の乗員) (27 点) (b) Burford 74 砲門 戦列艦 (平均の乗員) (24 点) (f) Flamband 50 砲門 戦列艦 (平均の乗員) (14 点) (f) Annibal 74 砲門 戦列艦 (平均の乗員) (24 点) (f) Severe 64 砲門 戦列艦 (平均の乗員) (18 点) (f) Brilliant 80 砲門 戦列艦 (一流の乗員) (31 点) (f) Sphinx 80 砲門 戦列艦 (平均の乗員) (27 点) Nymphe vs. Cleopatre: 南よりの風、疾風。 (b) Nymphe 36 砲門 フリゲート艦 (一流の乗員) (11 点) (f) Cleopatre 36 砲門 フリゲート艦 (平均の乗員) (10 点) Mars vs. Hercule: 南からの風、疾風。 (b) Mars 74 砲門 戦列艦 (一流の乗員) (26 点) (f) Hercule 74 砲門 戦列艦 (平均の乗員) (23 点) Ambuscade vs. Baionnaise: 北からの風、疾風。 (b) Ambuscade 32 砲門 フリゲート艦 (平均の乗員) (9 点) (f) Baionnaise 24 砲門 コルベット艦 (平均の乗員) (9 点) Constellation vs. Insurgent: 南からの風、疾強風。 (a) Constellation 38 砲門 コルベット艦 (精鋭な乗員) (17 点) (f) Insurgent 36 砲門 コルベット艦 (平均の乗員) (11 点) Constellation vs. Vengeance: 南からの風、疾風。 (a) Constellation 38 砲門 コルベット艦 (精鋭な乗員) (17 点) (f) Vengeance 40 砲門 フリゲート艦 (平均の乗員) (15 点) The Battle of Lissa: 南からの風、疾風。 (b) Amphion 32 砲門 フリゲート艦 (精鋭な乗員) (13 点) (b) Active 38 砲門 フリゲート艦 (精鋭な乗員) (18 点) (b) Volage 22 砲門 フリゲート艦 (精鋭な乗員) (11 点) (b) Cerberus 32 砲門 フリゲート艦 (精鋭な乗員) (13 点) (f) Favorite 40 砲門 フリゲート艦 (平均の乗員) (15 点) (f) Flore 40 砲門 フリゲート艦 (平均の乗員) (15 点) (f) Danae 40 砲門 フリゲート艦 (一流の乗員) (17 点) (f) Bellona 32 砲門 フリゲート艦 (未熟な乗員) (9 点) (f) Corona 40 砲門 フリゲート艦 (未熟な乗員) (12 点) (f) Carolina 32 砲門 フリゲート艦 (未熟な乗員) (7 点) Constitution vs. Guerriere: 南西からの風、疾強風。 (a) Constitution 44 砲門 コルベット艦 (精鋭な乗員) (24 点) (b) Guerriere 38 砲門 フリゲート艦 (一流の乗員) (15 点) United States vs. Macedonian: 南からの風、疾風。 (a) United States 44 砲門 フリゲート艦 (精鋭な乗員) (24 点) (b) Macedonian 38 砲門 フリゲート艦 (一流の乗員) (16 点) Constitution vs. Java: 南からの風、疾風。 (a) Constitution 44 砲門 コルベット艦 (精鋭な乗員) (24 点) (b) Java 38 砲門 コルベット艦 (一流の乗員) (19 点) Chesapeake vs. Shannon: 南からの風、疾風。 (a) Chesapeake 38 砲門 フリゲート艦 (平均の乗員) (14 点) (b) Shannon 38 砲門 フリゲート艦 (精鋭な乗員) (17 点) The Battle of Lake Erie: 南からの風、軽風。 (a) Lawrence 20 砲門 スループ帆船 (一流の乗員) (9 点) (a) Niagara 20 砲門 スループ帆船 (精鋭な乗員) (12 点) (b) Lady Prevost 13 砲門 ブリッグ帆船 (一流の乗員) (5 点) (b) Detroit 19 砲門 スループ帆船 (一流の乗員) (7 点) (b) Q. Charlotte 17 砲門 スループ帆船 (一流の乗員) (6 点) Wasp vs. Reindeer: 南からの風、軽風。 (a) Wasp 20 砲門 スループ帆船 (精鋭な乗員) (12 点) (b) Reindeer 18 砲門 スループ帆船 (精鋭な乗員) (9 点) Constitution vs. Cyane and Levant: 南からの風、和風。 (a) Constitution 44 砲門 コルベット艦 (精鋭な乗員) (24 点) (b) Cyane 24 砲門 スループ帆船 (一流の乗員) (11 点) (b) Levant 20 砲門 スループ帆船 (一流の乗員) (10 点) Pellew vs. Droits de L’Homme: 北からの風、疾強風。 (b) Indefatigable 44 砲門 フリゲート艦 (精鋭な乗員) (14 点) (b) Amazon 36 砲門 フリゲート艦 (一流の乗員) (14 点) (f) Droits L’Hom 74 砲門 戦列艦 (平均の乗員) (24 点) Algeciras: 南西からの風、和風。 (b) Caesar 80 砲門 戦列艦 (一流の乗員) (31 点) (b) Pompee 74 砲門 戦列艦 (一流の乗員) (27 点) (b) Spencer 74 砲門 戦列艦 (一流の乗員) (26 点) (b) Hannibal 98 砲門 3 層甲板 戦列艦 (一流の乗員) (28 点) (s) Real-Carlos 112 砲門 3 層甲板 戦列艦 (未熟な乗員) (27 点) (s) San Fernando 96 砲門 3 層甲板 戦列艦 (未熟な乗員) (24 点) (s) Argonauta 80 砲門 戦列艦 (未熟な乗員) (23 点) (s) San Augustine 74 砲門 戦列艦 (未熟な乗員) (20 点) (f) Indomptable 80 砲門 戦列艦 (平均の乗員) (27 点) (f) Desaix 74 砲門 戦列艦 (平均の乗員) (24 点) Lake Champlain: 北からの風、疾風。 (a) Saratoga 26 砲門 スループ帆船 (一流の乗員) (12 点) (a) Eagle 20 砲門 スループ帆船 (一流の乗員) (11 点) (a) Ticonderoga 17 砲門 スループ帆船 (一流の乗員) (9 点) (a) Preble 7 砲門 ブリッグ帆船 (一流の乗員) (4 点) (b) Confiance 37 砲門 フリゲート艦 (一流の乗員) (14 点) (b) Linnet 16 砲門 スループ帆船 (精鋭な乗員) (10 点) (b) Chubb 11 砲門 ブリッグ帆船 (一流の乗員) (5 点) Last Voyage of the USS President: 北からの風、疾風。 (a) President 44 砲門 フリゲート艦 (精鋭な乗員) (24 点) (b) Endymion 40 砲門 フリゲート艦 (一流の乗員) (17 点) (b) Pomone 44 砲門 フリゲート艦 (一流の乗員) (20 点) (b) Tenedos 38 砲門 フリゲート艦 (一流の乗員) (15 点) Hornblower and the Natividad: 東からの風、疾強風。 ホ ーニィ・ファンの読者のためのシナリオです。思い起こしていただきたい事 は、ホーンブロワーは、大きな不利と風に抗してナティビダッドを沈めたこ と です。ヒント:ナティビダッドに乗船乱入しようとしないで下さい。この船の乗 員は、未熟ではありますが、ずっと多いのです。 (b) Lydia 36 砲門 フリゲート艦 (精鋭な乗員) (13 点) (s) Natividad 50 砲門 戦列艦 (未熟な乗員) (14 点) Curse of the Flying Dutchman(さまよえるオランダ人の呪い): 南からの風、疾風。 ちょっとした戯れです。Piece of Cake の側を取って下さい。 (s) Piece of Cake 24 砲門 コルベット艦 (平均の乗員) (9 点) (f) Flying Dutchy 120 砲門 3 層甲板 戦列艦 (精鋭な乗員) (43 点) The South Pacific: 南からの風、雄風。 (a) USS Scurvy 136 砲門 3 層甲板 戦列艦 (反抗的乗員) (27 点) (b) HMS Tahiti 120 砲門 3 層甲板 戦列艦 (精鋭な乗員) (43 点) (s) Australian 32 砲門 フリゲート艦 (平均の乗員) (9 点) (f) Bikini Atoll 7 砲門 ブリッグ帆船 (一流の乗員) (4 点) Hornblower and the battle of Rosas bay: 東からの風、疾風。 ホーンブロワーが負けた唯一の海戦です。 しかし、彼は1隻の船のマストを折り、他の船達に船尾縦射を撃ちました。 あなたも同じだけの戦果が挙げられるでしょうか。 (b) Sutherland 74 砲門 戦列艦 (一流の乗員) (26 点) (f) Turenne 80 砲門 3 層甲板 戦列艦 (平均の乗員) (27 点) (f) Nightmare 74 砲門 戦列艦 (平均の乗員) (24 点) (f) Paris 112 砲門 3 層甲板 戦列艦 (未熟な乗員) (27 点) (f) Napoleon 74 砲門 戦列艦 (未熟な乗員) (20 点) Cape Horn: 北東からの風、雄風。 (a) Concord 80 砲門 戦列艦 (平均の乗員) (27 点) (a) Berkeley 98 砲門 3 層甲板 戦列艦 (一流の乗員) (28 点) (b) Thames 120 砲門 3 層甲板 戦列艦 (精鋭な乗員) (43 点) (s) Madrid 112 砲門 3 層甲板 戦列艦 (未熟な乗員) (27 点) (f) Musket 80 砲門 3 層甲板 戦列艦 (平均の乗員) (27 点) New Orleans: 南東からの風、疾風。 小さな Cypress が行ってしまうのに気をつけて下さい! (a) Alligator 120 砲門 3 層甲板 戦列艦 (精鋭な乗員) (43 点) (b) Firefly 74 砲門 戦列艦 (一流の乗員) (27 点) (b) Cypress 44 砲門 フリゲート艦 (精鋭な乗員) (14 点) Botany Bay: 北からの風、疾風。 (b) Shark 64 砲門 戦列艦 (平均の乗員) (18 点) (f) Coral Snake 44 砲門 コルベット艦 (精鋭な乗員) (24 点) (f) Sea Lion 44 砲門 フリゲート艦 (精鋭な乗員) (24 点) Voyage to the Bottom of the Sea: 北西からの風、疾風。 このシナリオは、Richard BasehartとDavid Hedisonに捧げるものです。 (a) Seaview 120 砲門 3 層甲板 戦列艦 (精鋭な乗員) (43 点) (a) Flying Sub 40 砲門 フリゲート艦 (一流の乗員) (17 点) (b) Mermaid 136 砲門 3 層甲板 戦列艦 (反抗的乗員) (27 点) (s) Giant Squid 112 砲門 3 層甲板 戦列艦 (未熟な乗員) (27 点) Frigate Action: 東からの風、疾風。 (a) Killdeer 40 砲門 フリゲート艦 (平均の乗員) (15 点) (b) Sandpiper 40 砲門 フリゲート艦 (平均の乗員) (15 点) (s) Curlew 38 砲門 フリゲート艦 (一流の乗員) (16 点) The Battle of Midway: 東からの風、和風。 (a) Enterprise 80 砲門 戦列艦 (一流の乗員) (31 点) (a) Yorktown 80 砲門 戦列艦 (平均の乗員) (27 点) (a) Hornet 74 砲門 戦列艦 (平均の乗員) (24 点) (j) Akagi 112 砲門 3 層甲板 戦列艦 (未熟な乗員) (27 点) (j) Kaga 96 砲門 3 層甲板 戦列艦 (未熟な乗員) (24 点) (j) Soryu 80 砲門 戦列艦 (未熟な乗員) (23 点) Star Trek: 南からの風、疾風。 (a) Enterprise 450 砲門 戦列艦 (精鋭な乗員) (75 点) (a) Yorktown 450 砲門 戦列艦 (精鋭な乗員) (75 点) (a) Reliant 450 砲門 戦列艦 (精鋭な乗員) (75 点) (a) Galileo 450 砲門 戦列艦 (精鋭な乗員) (75 点) (k) Kobayashi Maru 450 砲門 戦列艦 (精鋭な乗員) (75 点) (k) Klingon II 450 砲門 戦列艦 (精鋭な乗員) (75 点) (o) Red Orion 450 砲門 戦列艦 (精鋭な乗員) (75 点) (o) Blue Orion 450 砲門 戦列艦 (精鋭な乗員) (75 点) 結語 sail は共同作業の成果です。 作者 Dave Riggle 共作者 Ed Wang 改訂 Craig Leres 顧問 Chris Guthrie Captain Happy Horatio Nelson そして他の多くの優れた人々... 参考文献 Wooden Ships & Iron Men, by Avalon Hill Game Co. (ボードゲーム) Captain Horatio Hornblower Novels, (13 of them) by C.S. Forester 「海の男/ホーンブロワー・シリーズ」 早川書房、セシル・スコット・フォレスター Captain Richard Bolitho Novels, (12 of them) by Alexander Kent 「海の勇士/ボライソー・シリーズ」 早川書房、アレグザンダー・ケント The Complete Works of Captain Frederick Marryat, (about 20) Captain Frederick Marryat全集, (約20)特に Mr. Midshipman Easy Peter Simple Jacob Faithful Japhet in Search of a Father Snarleyyow, or The Dog Fiend Frank Mildmay, or The Naval Officer バグ 多分、少しはあると思います。もし、バグを 見 つ け た ら ど う か "rig- gle@ernie.berkeley.edu" と "edward@ucbarpa.berkeley.edu" にお知らせ下さ い。 4th Berkeley Distribution December 30, 1993 SAIL(6)
Copyright(C) linux-cmd.com All Rights Reserved. Author Takayuki Yukawa