目次 | 前の話題 | 次の話題

パッチ作成への長い道(その2)

1997年11月12日

このところ妙に忙しいので、書いている暇がなかなかない。特に、最近わけあって AREAKILL 互換のプログラムも作っているので、余計に時間がなくなっている。書きたい内容はまだいっぱいあるんだけど、、、

12月は1週間海外出張があって、その報告やら何やらがあるので、余計に忙しくなる。もしかすると、12月は1回も書けずに終わってしまうかもしれない。


さて、今回はパッチ作成の話の2回目である。前に書いた内容をもう忘れてしまっていたので、今読み返したのだが、いまいちわかりにくい。図表がないのでピンとこないようだ。というわけで、前回の「根気のいる修正作業」のところで使った MapFan のスクリーンショットをお見せしよう。

これは名古屋港を構成する1つのセグメントである。このような形のポリゴンに海面のテクスチャを貼り付けてやることで、「海」を作り出すわけである。こんな感じのが他にも数10個あって、同じ様な作業を何回も行うのである。

名古屋周辺では、名古屋港近辺の海岸線、河川、名古屋城の移動を行った。 結構大変な作業だったのだが、何とかやりとげ、公開できる段階まで来た。


公開の方法

さて、公開の方法であるが、パッチを当てたシーナリをそのまま公開するわけにはいかない。著作権の問題があるからだ。JAPAN シーナリの BGL ファイルにパッチを当てただけのものをそのまま公開したら Microsoft から訴えられてしまう。Microsoft の弁護士は目茶苦茶優秀らしいから、そんなのを相手にするのはまっぴらごめんである。

そこで、オリジナルの BGL ファイルからの差分という形で公開することとした。これなら文句はいわれないだろう。それに差分にすれば配布するファイルのサイズが少なくて済む。差分作成は WSP という有名な差分作成プログラムで行った。そして、名古屋修正シーナリ Ver 1.0 として公開したのである。

公開時期はもう忘れてしまったのだが、確か '96 年の頭のほうだったと思う。(ドキュメントに公開日を書いていなかった。失敗。)なお、BGL ファイルの差分を公開するという試みはたぶん名古屋修正シーナリが最初だったはずである。


バグの修正

しかし、これで終わったわけではない。まだバグが残っていたのである。前回もちょっと書いたが、bgl2bgs と bglcomp にバグがあったので、そのとばっちりを受けていたのだ。そのため、DATABASE ERROR がたまに発生するという問題があった。

この問題については、NIFTY の FAEROP フォーラムで平木氏という方と情報交換をして原因を究明した記憶があるが、1年以上前のことなので、もう記憶が曖昧である。ログももう消してしまった。今はもう全部直っていると思うが、あまり自信はない。

(なお、平木氏は岐阜シーナリや機体制作もされていた方です。非常に残念なことに、今年の春に急逝されたそうです。ご冥福をお祈りします)

その後しばらくして、bgs ファイルを見るためのツール bgsview を作ったり、BGL の逆コンパイラ SCDIS を作った。このツールができてからはパッチ作成作業は非常に楽になった。こんなことならもっと早めにツールを作っておくのだったと後悔したくらいである。ちなみに SCDIS を最初に使ったのは名古屋修正シーナリ Ver1.3 の時からである。


パッチの管理の問題

この後、名古屋修正シーナリの影響、かどうかは知らないが、他にもパッチを制作する人が出てきた。一つは AREAKILL を使ったパッチである。これは不要なオブジェクトを BGLファイルから削除('爆破'ともいう)することができるユーティリティである。不要なオブジェクトを削除して、かわりに別のオブジェクトを置くのである。

もう一つは名古屋修正シーナリと同様、何等かの方法で BGL ファイルを直接書き換える方法で、MOJ 氏による滑走路 ID 2桁化や PAPI 導入、大阪周辺の改造などがある。(ちなみに MOJ 氏はバイナリエディタで BGL ファイルを直接書き換えているそうである (^^)。昔、マシン語のプログラムを16進数で直接書ける人がまわりにいたのだが、その人のことを思い出してしまった。)

このようにパッチがいくつも出てくること自体は良いことなのだが、一つ重大な問題がある。それは、同一の BGL ファイルに対して複数の人が複数のパッチを作った場合、それぞれを同時に使うことができないということである。そのため、誰かがパッチを集中管理する必要が出てきてしまった。

今のところ、この集中管理は MOJ 氏にお願いしている。名古屋修正シーナリも、今は MOJ 氏管理のパッチに含まれている。この方法でも使う側の立場では特に問題はないのだが、管理者の負担が大きいし、今後パッチを作りたい人が増えてくると近い将来破綻してしまう可能性もある。

これを解決するため、現在 Yuta 氏による Scenery Remarker というプログラムの開発が進行中である。このプログラムは複数のパッチを管理することができるツールで、特定のパッチを当てたり外したりすることができる。これならパッチを人手で集中管理する必要はないわけだ。(厳密にはそう簡単ではないのだけど、、、)

冒頭で AREAKILL 互換のプログラムを作成していると書いたが、実はこのプログラムは Scenery Remarker の AREAKILL 相当エンジンで使用するために作成しているものなのである。このプログラムは SCKILL といい、現在βテスト中である。そこそこ動作するようになってきたので、近日中に公開できると思う。

そうそう、AREAKILL はそのままでは PC-98 では動作しなかったのだが、SCKILL は Windows 汎用なので問題なく動作するようになっている。PC-98 というのは某N社の「キュウハチ」のことで、PC98 (キュウジュウハチ)ではないのでお間違えなきよう。紛らわしいなぁ。


その他のプロジェクト

私は名古屋修正シーナリ以外にももう一つ、東京湾改造プロジェクトという修正シーナリも作成している。これについては東京湾改造プロジェクトのページを見ていただきたいのだが、基本的には名古屋修正シーナリと同じような手法を使っている。ただ、東京近辺にはビルがやたらと多いので、それなりに苦労はしている。

今のところβ1版止まりになってしまっている。理由は忙しいから(^^;) 一応、千葉県の海岸線や、三浦半島近辺の修正までは終わっているのだが、まだ公開していない。

その前に、FS98 対応をたぶん先にしなければならないだろう。FS98 には JAPAN シーナリが含まれているのだが、若干修正がされたり、ファイル名が変わっていたりするので、パッチを作りなおさなければならないようだ。といっても、内容はほとんど変わっていないようなので、たぶんそんなに苦労せずに作れるだろう。

それより問題なのは、ASIA 区域のシーナリを CD-ROM に置いている場合、パッチを当てようがないということである。そのため、ASIA 区域をハードディスクにコピーしておかないといけない。そしてこれは FS98 のインストール時にしかできないようだ。もちろん、手動でもできるのだが、ちょっと面倒なので、普通のユーザに「やれ」というのはやや酷なような気がする。頭痛の種はつきない。


今回の内容についてアンケートにお答えください。
とても面白い まあまあ面白い 普通 あまり面白くない 全然駄目


目次 | 前の話題 | 次の話題