empire — 世紀のウォーゲーム
Empireはあなたとコンピュータの2人の皇帝による全面戦争のシミュレーションゲームです。 もちろん勝つのは1人で、ゲームの目的は相手を打ち負かすことです。 コンピュータとあなたは同じルールでプレーします。
-w
water
このオプションはマップの水域の量を決定します。 指定した百分率(%)の値がマップの水域になります。デフォルトは70%です。 waterは10から90の間の整数でなければなりません。
-s
smooth
このオプションはマップの滑らかさを決めます。 値が小さいと多くの小さな島や湖でできた混沌としたマップが作られ、 大きいと少数の大きな大陸のあるマップが作られます。 値が大きいほど生成に時間が掛かるので注意してください。 デフォルトは5です。
-d
delay
このオプションは画面の上部にメッセージを表示した後にどのくらいの長さコンピュータが待つかを決めます。 delayはミリ秒で指定します。 デフォルトは2000で、ユーザにはメッセージを読む時間が2秒間あります。
empire -w90 -s2
これは多くの島のあるマップを生成します。
empire -w50 -s0
これはかなり変わったマップを生成します。 これは臆病者には勧められません。
empire -w10
これは多くの島と少しの湖のあるマップを生成します。 このようなマップでは、コンピュータは無意味な輸送艦を多く作りがちで苦戦します。
これ以外にも2つのオプションがあります。
-S
interval
ゲームの保存間隔を設定します(デフォルトは10)。 intervalターンに一度、あなたが動かした後にゲームの状態を保存します。 これにはモードを変えた場合や、コマンドモードでの`M'や`N'を含む様々な行動も含まれます。
-f
savefile
保存ファイル名を設定します(通常はempsave.dat)。
Empireはあなたとコンピュータが対戦するウォーゲームです。 ゲームの世界は正方形で構成されていて、そこには都市、陸、水域があります。 都市では地上部隊、航空機、艦船を生産することができ、それで敵地を破壊、探索し、都市を占領します。 このゲームの目的は敵地を全て破壊し、全ての都市を奪うことです。
この世界は60×100個の正方形で構成された長方形で、 海(.)、陸(+)、中立の都市(*)、コンピュータの都市(X)、そしてあなたの都市(O)が存在します。
マップはあなたの手番の間、画面に表示されます。 (端末の画面が小さい場合はマップの一部のみ表示されます。) 各ユニットはマップ上でそれぞれの文字として表示される。 いくつかの例外がありますが、1つのマスには1つのユニットしか存在できません。 マップは、あなたのユニットと接した8方向のマスのみ表示されます。 この情報はあなたの移動前と移動後に更新されます。 マップには最後に知られた情報が表示されています。
ゲームはあなたの都市1つとコンピュータの都市1つの状態から始まります。 都市では新しいユニットを生成できます。 あなたのそれぞれの都市では、コストに応じて望む種類の新しいユニットをさらに生成することができます。 多くのプレイヤーは特別に何かをするまではAutomove(移動モード)コマンドを使います。 それぞれのラウンドで、プレイヤーは自動的に行動しないユニットを動かすことを求められます。
マップの座標は4桁の数値で表します。 先頭の2桁は行で、後の2桁は列です。
ユニットには次のものがあります:
ユニット | あなた | 相手 | 移動 (Moves) | ヒットポイント (Hits) | 攻撃 (Str) | コスト (Cost) |
地上部隊 (Army) | A | a | 1 | 1 | 1 | 5(6) |
戦闘機 (Fighter) | F | f | 8 | 1 | 1 | 10(12) |
哨戒艇 (Patrol Boat) | P | p | 4 | 1 | 1 | 15(18) |
駆逐艦 (Destroyer) | D | d | 2 | 3 | 1 | 20(24) |
潜水艦 (Submarine) | S | s | 2 | 2 | 3 | 20(24) |
輸送艦 (Troop Transport) | T | t | 2 | 1 | 1 | 30(36) |
空母 (Aircraft Carrier) | C | c | 2 | 8 | 1 | 30(36) |
戦艦 (Battleship) | B | b | 2 | 10 | 2 | 40(48) |
人工衛星 (Satellite) | Z | z | 10 | -- | -- | 50(60) |
2列目はマップ上のあなたのユニットを表しています。
3列目は敵のユニットを表しています。
移動(Moves)はそのユニットが1ラウンドで移動できるマスの数です。
ヒットポイント(Hits)は破壊に必要なダメージの量です。
攻撃(Str)は各ラウンドの攻撃で与えるダメージの量です。
コスト(Cost)は都市でそのユニットを生成するまでに必要なラウンド数です。
カッコ内の数値はその都市で最初のユニットを生成するまでのコストです。
ユニットにはそれぞれ特徴があります。 このゲームの戦略上の重要な問題の1つは、どのユニットをどれだけ生成すべきかです。
地上部隊(Army)は陸のみを移動できる、そして陸のみを移動する唯一のユニットです。 地上部隊のみが都市を占領できます。 つまり、ゲームに勝つためには地上部隊を生成しなければなりません。 地上部隊は都市を攻撃したとき、50%の確率で占領することができます。 (自分の都市を攻撃すると地上部隊は破壊されます。 地上部隊は海に入るとおぼれてしまいます。 地上部隊は海のユニットを攻撃できますが、たとえ勝利してもおぼれます。) 地上部隊は輸送艦で運ぶことができます。 地上部隊が輸送艦の上に移動したならば、輸送艦が移動すると、地上部隊も輸送艦と一緒に移動します。 輸送されている間は、地上部隊は海上のユニットを攻撃できません。
戦闘機(Fighter)は陸と海の両方を移動でき、そして1ラウンドで8マス移動できます。 高速性と優れた移動力を持つ戦闘機は探索に適しています。 しかし、戦闘機は定期的に自分の都市に着地して燃料を補充しなければなりません。 戦闘機は補給なしで32マス移動することができます。 また、戦闘機は自分のものでない都市を通過しようとすると撃墜されてしまいます。
哨戒艇(Patrol boat)は高速ですが軽武装の艦船です。 よって、このユニットは海の哨戒と探索に適しています。 しかし、より強い艦船と戦うと、哨戒艇は大きな打撃を受けるでしょう。
駆逐艦(Destroyers)はやや重武装で、比較的早く生産できる艦船です。 よって、世界中に広がろうとする敵の輸送艦を破壊するのに適しています。
潜水艦(Submarine)の攻撃が命中すると、1ではなく3のヒットポイントを奪えます。 よって、潜水艦は重武装した敵の艦船に大打撃を与えることができます。 無傷の潜水艦は無傷の駆逐艦を2/3の確率で破壊できることに注目してください。 しかし、潜水艦が戦闘機を破壊できる確率は2/3ですが、駆逐艦は戦闘機を3/4の確率で破壊できます。
輸送艦(Troop transport)は地上部隊を運べる唯一のユニットです。 1ユニットの輸送艦で最大6ユニットの地上部隊を運ぶことができます。 海の多い世界では、輸送はゲームの勝敗を決める重要な問題となります。 輸送艦は弱く、より強い艦船で護衛する必要があるので注意してください。
空母(Aircraft carrier)は戦闘機を運べる唯一の艦船です。 空母は残りヒットポイントの数だけ戦闘機を運ぶことができます。 戦闘機は空母に着艦すると燃料が補充されます。
戦艦(Battleship)はより強力であることを除けば駆逐艦と同じです。
人工衛星(Satellite)は探索しかできません。 人工衛星は攻撃されません。 人工衛星はランダムな角度に打ち上げられ、50ターン活動します。 人工衛星は他のユニットより1マス広く探索できます。
全ての艦船ユニットは海上のみ移動できます。 艦船は自分の都市に入港することもできます。 入港すると1ターンにつき1ヒットポイントのダメージを回復できます。 艦船は大ダメージを受けると移動が遅くなります。
この回復能力があるため、空母や戦艦のようなヒットポイントの多い艦船は有利です。 敵の艦船を破壊する途中で受けたダメージが小さいならば、これらの艦船は都市に戻り、敵が破壊された艦船を補充する時間を与えずにすばやく回復することができます。
次の表は、戦闘で横のユニットが縦のユニットに勝利する確率を示しています。 (両者ともダメージを受けていないと仮定します。)
AFPT | D | S | C | B | |
AFPT | 50.0% | 12.5% | 25.0% | 00.391% | 00.0977% |
D | 87.5% | 50.0% | 25.0% | 05.47% | 00.537% |
S | 75.0% | 75.0% | 50.0% | 31.3% | 06.25% |
C | 99.6% | 94.5% | 68.7% | 50.0% | 04.61% |
B | 99.9% | 99.5% | 93.8% | 95.4% | 50.0% |
しかし、艦船がダメージを受けている場合は、この確率が変化するので注意してください。 例えば、無傷の潜水艦は1のダメージを受けた戦艦に25%の確率で勝利でき、無傷の潜水艦は2のダメージを受けた空母に50%の確率で勝利できます。
任務(function)には様々なものが存在します。 ユニットの任務はユーザモードとエディットモードで設定できます。 都市にユニットごとの任務を設定することもできます。 都市にユニットの種類ごとの任務を設定すると、都市で新しいユニットが生産されるたびにユニットに任務が設定されます。 輸送中の輸送艦や、戦闘機を載せた空母が都市に入ると、望まない副作用があるので注意してください。
通常、一度任務を設定すると、ユニットは次のことが発生するまでその任務に従って行動し続けます:
移動先に敵のユニットまたは占領していない都市があるとき。 この場合、指定の方向への移動以外は、ユニットの任務は完全に解除されます。 輸送中の地上部隊と都市内のユニットは、もし行動するときに敵のユニットがいなくなっていれば、任務は解除されません。
あなたが任務の解除を指示したとき。
そのユニットが任務された行動を続けられないとき。 この場合、そのユニットは一時的に任務が解除され、ユニットの移動方向を尋ねられます。
戦闘機ユニットの燃料が最も近い都市に移動できる最小(と少しの余裕)の量になったとき。 この場合、移動先を指示するか、着地(Land)を指示するまでユニットの任務は解除された状態になります。
この複雑さの背後にある考え方は、戦闘機の任務の解除を忘れて墜落する前に、完全に任務を解除されなければならないというものです。 しかし、戦闘機の方向が設定されると、その戦闘機は燃料切れの危険がないとみなしています。
移動方向が設定されたユニットは、方向がリセットされてしまうのは無駄であるため、任務は完全に解除されません。 しかし、解除することは簡単です(キーを1回押す)。
任務には次のものがあります:
この任務は地上部隊のみ可能です。 この任務が設定されると、地上部隊は最も近い敵の都市、中立の都市、または敵の地上部隊に向かって移動します。 これは進攻する敵を撃退する場合や、新しい領土を獲得する場合に便利です。 この任務が設定された地上部隊は、近くの領域の探索も行います。 そのため、「探索(grope)」任務はあまり使う機会がありません。
任務が解除されると、ユニットは毎ターン方向を尋ねてきます。
この任務は空母と輸送艦に対して可能です。 この任務が設定されると、艦船が戦闘機または地上部隊でいっぱいになるまで留まります。
この任務はユニットに探索させます。 ユニットはそれぞれマップ上の最も近い未探索の区域へ向かいます。 統計的に最適な探索を行うためのいくつかの試みが行われています。
この戦闘機への任務は、戦闘機を最も近い都市か空母へと向かわせます。
この任務はユニットを隣の空いたマスへランダムに移動させます。
この任務はユニットを静止させます。 都市上ではこの任務で「静止」させることはできません。
この任務は地上部隊のみ可能です。 地上部隊は近くを満杯でない輸送艦が来るまで静止し、輸送艦が来ると地上部隊は動き出し輸送艦に乗ります。
この任務は艦船のみ可能です。 艦船は最も近い自分の都市へ移動し、修理されるまで待ちます。
ユニットの移動方向を設定します。
ユニットを指定の場所へ移動させさせます。 この移動モードでは、ユニットは目的地へ最短の経路で移動します。 この任務を設定されたユニットは斜めに進んで探索することが多くなります。 そのため、ユニットの移動は直感に反するかもしれません。
任務の使い方の一例は、新しい大陸の都市を獲得したとき、その都市の地上部隊の任務を攻撃にすることです。 地上部隊が生産されるたびに、次々と大陸を探索し、まだ手に入れていない都市や敵の地上部隊や都市に向かって移動します。
都市の艦船の任務は、遠くにある都市から前線に艦船を自動的に移動させるためによく設定されます。
大陸に地上部隊がいても探索や攻撃の対象がないときは、海辺まで移動させ、搭乗任務を設定し、輸送艦が通過したとき乗るようにします。
3つのコマンドモードがあります。 1つ目は「コマンドモード」です。 このモードはゲーム全体に影響を与えます。 2つ目のモード「移動モード」はあなたのユニットに命令を与えます。 3つ目のモードは「エディットモード」で、ユニットの任務を編集や、マップの様々な場所を見ることができます。
全てのコマンドの長さは1文字です。 覚えられるように完全な命令名の一覧が下にあります。 命令名には不自然なものもありますが、それは英語のアルファベットが少ないためです。 このプログラムが日本語で書かれていないのが残念ですね?
全てのコマンドモードで、"H"を押すとヘルプが表示され、<ctrl-L>を押すと画面が再描画されます。
コマンドモードでは、コンピュータはあなたの命令を待ちます。 このとき次のコマンドを受け付けます:
移動モードへ移行します。 このコマンドで新しいラウンドが始まります。 コンピュータのターンの後も移動モードが継続されます。 (移動モードでは、"O"コマンドでコンピュータのターンが終わった後でコマンドモードに戻ります。)
コンピュータにランダムな中立都市を与えます。 このコマンドはコンピュータが弱すぎると思ったときに便利です。
現在のラウンドを表示します。
敵のマップを調査します。 このコマンドはコンピュータが降伏した後にのみ有効です。
マップを指定したファイルに書き込みます。
このコマンドはコンピュータに手番を与えます。
エディットモードへ移行し、調査やあなたのユニットや都市の任務を変更できるようにします。
1ラウンドだけ移動モードへ移行します。
コンピュータに指定した回数の手番を与えます。
セクターを画面に表示します。
ゲームを終了します。
empsave.datからゲームを復帰させます。
ゲームをempsave.datに保存します。
このコマンドはフラグをセットします。 フラグがセットされていると、あなたとコンピュータの手番の後、ゲームの状態が'empmovie.dat'ファイルに書き込まれます。 注意! このコマンドはたくさんのファイルを生成します。
このコマンドは保存された動画を再生します。
動画は1画面に収まるように縮小されているため、再生はやや分かりにくいものになります。
このコマンドはコンピュータが降伏した後にのみ有効です。
あなたが負けた場合は、動画を再生してコンピュータがあなたを打ち負かした秘密を知ることはできません。
また、再生でコンピュータのユニットの現在の位置を知ることもできません。
動画の再生中は、-d
オプションで遅延時間を2000ミリ秒程度に設定することを薦めます。
そうしないと画面の更新が早すぎて何が起こっているかわからないでしょう。
画面に縮小されたマップを表示します。 マップはいくつもの小さな長方形に区切られます。 これらの長方形は画面上で1つのマスとして表示されます。 もし長方形内に都市があればそれが表示されます。 そうでなければ、敵のユニットがあれば表示され、次はあなたのユニット、陸、海、未探索の領域の順で表示されます。 ユニットは艦船が戦闘機や陸上部隊より優先されて表示されます。
移動モードでは、画面上の移動が必要な各ユニット上にカーソルが現れます。 その後、ユニットに移動コマンドを与えられるようになります。 移動の方向は次のキーで指定します:
QWE
A D
ZXC
あなたの端末にカーソルキーとテンキーがあればそれも有効のはずです。
これらのキーは、Sキーから見た方向へ移動させます。 これらの文字はエコーせず、また1文字のみ受け付けます。 よって<リターン>の必要はありません。 その場にとどまりたい場合は<スペース>バーを押してください。
他のコマンドは:
都市の生産を変更します。
輸送艦または空母の任務を搭載に設定します。
ユニットの任務を探索に設定します。
ユニットの移動方向を設定します。
エディットモードへ移行します。
ユニットの任務を解除します。 もしそのユニットが輸送艦または空母ならば、搭載されたユニットの任務は解除されません。
戦闘機の任務を着地に設定します。
移動モードを中断します。 ラウンドが終わるとコマンドモードになります。
画面を再描画する。
ユニットの任務をランダムに設定します。
ユニットの任務を防衛に設定します。
地上部隊の任務を搭乗に設定します。
艦船の任務を修理に設定します。
都市にユニットの任務を設定します。 例えば、"VAY"と入力すると、都市の地上部隊の任務は攻撃になります。 この都市で地上部隊が生産されると(または地上部隊を乗せた輸送艦が都市に入ると)、地上部隊の任務が攻撃に設定されます。
地上部隊の任務を攻撃に設定します。
ユニットの情報を表示します。 任務、残りヒットポイント、燃料、輸送中のユニット数が表示されます。
攻撃は攻撃したい相手のマスに移動することで行います。 ヒット率は50%で、攻撃した側とされた側が交互にどちらかが完全に破壊されるまで行います。 勝者はどちらか一方のみです。
味方の都市やユニットへの攻撃など致命的な行為も「許可」されています。 致命的な行為を行おうとすると、コンピュータは警告しやり直す機会を与えます。
マップの端へ移動することはできません。
エディットモードでは、世界中を見渡し、ユニットを調べ、新しい任務を設定することができます。 カーソルは通常の方向キーで動かせます。 他のコマンドは:
カーソルを合わせた都市の生産を変えます。 プログラムは新しい生産を尋ねるので、生産したいユニットの文字のキーを押して答えます。
輸送艦または空母の任務を搭載に設定します。
ユニットの任務を探索に設定します。
ユニット(または都市)の方向を設定します。
その場の全てのユニットの任務を解除します。 もしその場所が都市ならば、戦闘機の航路も解除されます。
現在の場所のユニットまたは都市を選択します。 このコマンドは"N"コマンドと一緒に使います。
"M"コマンドで選択したユニットの目的地を現在の場所に設定します。
エディットモードを終了します。
セクターのマップを新たに表示します。 マップは20マス×70マスの10のセクターに分かれています。 セクター0がマップの左上、セクター4がマップの左下、セクター5が右上、そしてセクター9が右下です。
ユニットがランダムに移動するようにします。
ユニットが動かないようにします。
地上部隊の任務を搭乗に設定します。
艦船の任務を修理に設定します。
都市にユニットの任務を設定します。
地上部隊の任務を攻撃に設定します。
ユニットまたは都市の情報を表示します。 都市ならば、生産、次のユニットが完成するまでの時間、任務、そしてその都市の戦闘機と艦船の数が表示されます。
エディットモードでは都市内のユニットに直接影響を与えられないので注意してください。
このゲームでしばらく遊ぶと、コンピュータに簡単に勝てることがわかるでしょう。 このゲームをより面白くするいくつかのアイデアがあります。
ゲームが始まる前にコンピュータに1つかそれ以上の都市を与える。
滑らかさの値を小さくする(-s2 か、さらに -s0 オプションを試してみる)。
ゲームを始めると、難易度を尋ねられます。 この「難易度」は必ずしも正しくありません。 プログラムは陸地と陸地の都市の数で難易度を決めています。 高「難易度」では、コンピュータに広い陸地と多くの都市が与えられ、ユーザには小さな陸地と少ない都市が与えられます。 低「難易度」はその逆になります。 「難易度」が低い場合の方がコンピュータがうまくプレーする場合もあります。 その理由は、この場合コンピュータはゲームの初期の段階で複数の陸地に地上部隊を展開することを強制されるためです。
A Brief History of Empireによると、このゲームの原型は1970年代初頭にカリフォルニア工科大学の学生Walter Brightによって作られました。 コピーが大学から流出し、1979年秋頃にTOPS-10/20 FORTRANのソースコードが使えるDECのVAX/VMSに移植されました。 1983年にCraig LeresはDECUSのテープからソースコードを発見し、様々な種類の端末に対応させました。
Ed Jamesはバークレーでソースコードを手に入れ、C言語に移植し、画面の操作の大半でcursesを使用するようにしました。 1986年12月、彼は自分が修正したソースコードをネットで公開しました。 このゲームは長い間VMSマシンで動いていたためVMS Empireとして知られています。
1987年、アムダール社のChuck Simmonsはプログラムを解析し、完全なC言語版を作成しました。 その過程で、彼はコンピュータの戦略、コマンド、ユニットの種類、多くのユニットの特性、そしてマップ生成のアルゴリズムを修正しました。
このゲームの様々なバージョンは、後のCivilization (1990)やMaster of Orion (1993)などの4Xゲーム(expand/explore/exploit/exterminate)(探索/拡張/利用/排除)の原型となりました。
1994年、Eric Raymondはこのゲームをカラー化しました。
ゲームのバックアップが保存されています。 empireが実行されると、このファイルにゲームの状態が次々と書き込まれます。
ゲームの履歴が保存され、「動画」として再生できるようになります。
間違いなく無数にあります。
保存ファイルはバージョン1.13以降は互換性がなくなっています。
人工衛星は完全には実装されていません。 人工衛星のあるマスには移動できるべきですが、それはできません。 敵の人工衛星はあなたのユニットの任務を解除しません。