			vms-empire news

1.14: 2016-01-05 06:49:17Z
        Add an identifying magic cookie and version to save files.
        Full ANSI prototypes for private functions as well as public.
	Markup fix for probability table.

1.13: 2014-12-14T17:06:26Z
	Comment on entry to and exit from edit mode.
	Cleaned up packaging and install/uninstall productions.

1.12: 2014-05-20T09:03:09Z
	Incorporated Dennis Pinckard's fix for a Mac OS/X port bug.
	Added desktop file.

1.11: 2013-12-31T17:31:04Z
	Clean up code to modern C, apply cppcheck.
	Fix code typo reported as Debian bug #593434

1.10: 2013-08-22T23:47:21Z
	Fix core dump when a satellite bounced off the world edge.
	Full ANSIfication of function prototypes (which fixed the 
	sat bug - the code appears to have been tickling some obscure
	bug in the compilation of function calls with K&R-style prototypes).

1.9: 2012-02-16T22:59:22Z
	Drop RPM packaging. Documentation cleanups.

1.8: 2010-10-21T12:47:33Z
	Joe Wells's patch to enable different-sized worlds.  Minor fixes to
	map functions by Andrew Morrow. More on the history of the game.
	Enable arrow keys in edit mode.
	License changed from Chuck Simmons's cosmetically tweaked clone
	of the GPL to GPL proper, so the classifier systems that forge
	and archive sites use will be less confused.

1.7: 2004-09-27T21:53:41Z
	Documentation fixes.  The old empire.doc file has been replaced
	by the man page.

1.6: 2003-12-29T11:11:53Z
	Source RPMs can be built by non-root user.

1.5: 2003-12-29T11:06:21Z
	Cleanup release with new build machinery.

1.4: 2002-08-01T20:04:09Z
	Packaging tweaks.  RPM spec fixes.  READ.ME broken up into
	READ.ME and NEWS.  Obsolete bug notes removed.  Option -f to
	set savefile added.  I'd like to move the documentation to XML, 
	but can't yet because db2man doesn't render tables.

1.3: 2002-04-19T10:25:43Z
	Walt Stoneburner's cleanup patch addressing all compiler errors and 
	warnings, both in debug and in production mode; works with GCC v3.0.3.

1.2: 2000-07-28T16:04:26Z
	The victory-odds table in previous versions was seriously buggy.
	I folded in corrections from Michael Self.  I also took changes
	from James T. Jordan <kermyt@earthling.net>, who wrote some
	speedups, added ANSI prototypes, and cleaned up code.

1.1: 1995-12-06T14:02:31
	Packaging tweaks.

1.0: 1994-12-01T17:15:43Z
	I colorized and speed-tuned this and added a
	save-interval option. 

この履歴の残りは、Chuck Simmonsによるオリジナルのメモである。
現在は非常に多くのEmpireゲームが存在するが、全てVMS Empireにたどり着くためであ
る(全てはこの子孫だ!)。

					-- Eric S. Raymond

歴史

	このゲームのオリジナルはDigitalではなく、恐らく大学で書かれたもののよ
	うだ。1979年秋頃にTOPS-10/20 FORTRANのソースコードが使えるDECのVAX/VMS
	に移植された。
	Ed Jamesはバークレーでソースコードを手に入れ、C言語に移植し、画面の操
	作の大半でcursesを使用するようにした。
	1986年12月、彼は自分が修正したソースコードをネットで公開した。このゲー
	ムは長い間VMSマシンで動いていたためVMS Empireとして知られている。

	1987年初頭、私はこのプログラムを解析し、完全なC言語版を作成した。その
	途中、多くの構造体と定数を定義し、コードを柔軟で修正しやすいものにしよ
	うと試みた。
	このC言語版ではアルゴリズムは全て新しくなり、コマンド名は分かりやす
	く、そして新しいコマンドも実装された。
	元のままなのは画面の構成のみである。
	私は、この多くの変更はオリジナルよりも遅く、そして実装も洗練されていな
	いと思っている。
	さらに、オリジナルの機能の一部を実装していない。
	しかし、私が書いたコメント付きのCのソースコードは、オリジナルのFORTRAN
	のソースコードよりも遥かに変更や拡張のしやすいものになったと考えてい
	る。
	もしあなたが改良したならば、ぜひEd Jamesと私にコピーを送って欲しい。

	元のゲームの変更は困難なものであった。
	私は生産できるユニットを変更し、その他のパラメータを修正し、さらに多く
	の新しい任務を追加した。
	完全な内容はマニュアルを読んで欲しい。

	'bugs'ファイルには拡張のための多くのアイデアと、発見できなかったバグに
	関する記述がある。

最後のメモ

	不幸なことに、私にはかなり強力な、68020ベースのコンピュータよりも10か
	ら40倍高速なメインフレームがある。
	つまり、これは非常に非効率的なアルゴリズムを使えることを意味する。
	このプログラムをより小規模なマシン、たとえばSun workstationやVaxでは満
	足に動作しない恐れがある。
	特に、コンピュータのユニットの移動には長い時間が掛かるだろう。そして、
	移動の後のゲームの保存が問題になるかもしれない。(1/2メガバイトのファイ
	ルを数ミリ秒で書き込めない?)
	2つ目の問題は簡単に修正できる。しかし、1つ目の問題を解決できるアイデア
	はまだない。

	保存ファイルのサイズはempire.hのLIST_SIZE定数を小さくすることで簡単に
	調整できる。
	コンピュータの思考を高速にするための唯一の簡単な方法は、マップのサイズ
	を小さくすることである。

Chuck Simmons
amdahl!chuck

Ed James
edjames@ic.berkeley.edu
ucbvax!edjames

	2002年のローエンドPCでさえ1987年のChuckのメインフレームよりも強力だ。
	効率化はかつてほど重要な問題ではない :-)

	私はterminfo colorに対応したマシンで色を使えるようにして、見た目の良さ
	と読みやすさを劇的に向上させた。
	カラーの対応は、もし存在すれば、コンパイル時に自動的に検出する。

	さらに、`save-interval'オプションの実装と、bugファイルへの不具合の記述
	を行った。

	また、GCCできれいにコンパイルできるようにソースコードを調整した -- そ
	れらは古いK&Rの記述を前方参照とみなして多くの警告を発生させていた。

	最後に、計算に必要な配列の参照を減らすことでexpand_perimeter関数を高速
	化した。
	これで内部ループの乗算を省くことができる。この手法はより広い範囲のコー
	ドに応用できる。
	効率が重要ならば、より外に出す必要があるかもしれない。

Eric S. Raymond
esr@thyrsus.com
(home page: http://www.catb.org/~esr/)
