本ページでは、シルチョフ兄弟社様による「日本製『先行者』開発プロジェクト」の先行者ゲームを、mozilla、Netscape6で動かす際に必要になった作業について紹介します。
なお、私はjavaをあまり触ったことがありませんので、間違ったことを知らず知らずのうちに書いてしまっているかもしれません、御注意下さい。
早いもので、ネタが無くなり、更新されなくなってから4か月が経とうとしています。
私自身、最近は先行者ゲームで遊ぶこともあまりなく、シルチョフ兄弟社様の掲示板をときどき覗きに行く程度になっています。
また、このページ用に利用させてもらっている、プロバイダのwebページ領域サービスも12月25日で終了することになりました。
ネタや気力があるならば、他のサービスに移行するとは思いますが、残念ながら今の私は両方とも持ち合わせていません。
そんなわけで、勝手ながら本ページを閉鎖することにしました。
12月25日、プロバイダのweb領域サービスの終了と共に本ページも閉鎖します。
今までどうもありがとうございました。
現在、以下の環境で動作することが報告されています。
新たな動作報告について、掲示板でお待ちしています。
まずは、javaコンソールを開いてエラーメッセージを確認しましょう。javaコンソールは、メニューを"タスク"→"ツール"→"javaコンソール"の順で辿っていくと表示されると思います。
この状態で先行者ゲームを読み込むと、javaコンソールに何かメッセージが表示されて、ブラウザのゲーム画面が表示される所には「ctrl+f5キーを押して再読み込みをして下さい」などと表示されると思います。
例えば、私の環境ではjavaコンソールにこんなメッセージが表示されました。
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.audio)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:272)
at java.security.AccessController.checkPermission(AccessController.java:399)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java:1501)
at sun.applet.AppletSecurity.checkPackageAccess(AppletSecurity.java:169)
at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:105)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
at Main.run(Main.java:124)
at java.lang.Thread.run(Thread.java:484)
ここでミソなのが最初の行のメッセージです。「access
denied」→「アクセスが拒否された」、つまり、デフォルトの設定ではjavaアプレットは「accessClassInPackage.sun.audio」(audioってことは音関係の機能ってことでしょうか…)に対する「java.lang.RuntimePermission」(アプレットを実行している時点での許可)を持っていないことを意味しています(たぶん…間違いでないことを祈ります…)。
つまり、「許可していない機能を使おうとしたからエラーになる」→「その機能の使用を許可しても安全だと思うなら許可してやれば動くようになる!」という事です(何をもって安全と判断すればいいのかは難しい問題ですが…)。
さて、許可の出し方ですが、以下の内容を持つテキストファイルを作成するだけです。
/* 先行者1ノーマルサイズ */
grant codeBase "http://www.hinden5.com/senkousha/robot/robo.jar" {
permission java.lang.RuntimePermission "accessClassInPackage.sun.audio";
};
/* 先行者1ビスタサイズ */
grant codeBase "http://www.hinden5.com/senkousha/robot/robowide.jar" {
permission java.lang.RuntimePermission "accessClassInPackage.sun.audio";
};
/* 先行者2ノーマルサイズ */
grant codeBase "http://www.hinden5.com/senkousha/robot2/online.jar" {
permission java.lang.RuntimePermission "accessClassInPackage.sun.audio";
};
/* 先行者2ビスタサイズ */
grant codeBase "http://www.hinden5.com/senkousha/robot2/onlinewide.jar" {
permission java.lang.RuntimePermission "accessClassInPackage.sun.audio";
};
これをUNIX(linux)では"~/.java.policy"というファイルに、Windows98では"c:\windows\.java.policy"、Windows2000では"c:\Documents
and
Settings\ユーザ名\.java.policy"というファイルに保存したあと、ブラウザを再起動すれば遊べるようになると思います。
もし動かない場合は、下記の「ツール」の章も御覧下さい。
なお、Windowsでこのファイルを作成しようとすると「ファイル名を入力してください。」などと怒られることもあるかと思います。その場合には、いったん別のファイル名で保存してから、dosプロンプト(Windows
NTではコマンドプロンプト)を使ってファイル名を変更する手があります。例えば、c:\windows\java.policyというファイルに保存した場合には、
ren c:\windows\java.policy .java.policy
とdosプロンプトに打ち込むことで、無事ファイルが作成できると思います。
CD版で遊ぶ時にも、オンライン版と同様の作業が必要になります。
ただし、オンライン版とは違い、ゲームの置き場所が人によって異なる可能性がありますので、ちょっと話がややこしくなります。
以下に、.java.policyファイルに記述する内容の例を示します。
/* CD版収録の先行者1ノーマルサイズ。
OSがWindows98で、CD-ROMドライブがDドライブになっていると仮定。
ビスタサイズはrobowide.jar */
grant codeBase "file:///d:/robot/robo.jar" {
permission java.lang.RuntimePermission "accessClassInPackage.sun.audio";
};
/* CD版の先行者2ノーマルサイズ
OSがWindows98で、CD-ROMドライブがDドライブになっていると仮定。
ビスタサイズはrobowide.jar */
grant codeBase "file:///d:/robot2/robo.jar" {
permission java.lang.RuntimePermission "accessClassInPackage.sun.audio";
};
カンの良い人はわかると思いますが、"grant
codeBase"の後に、許可を与えたいプログラムの置き場所を、URL形式で指定するようになっています。
Windowsを使われている方でURL形式が分らない人は、CD-ROMドライブ中の"robo.jar"や、"robowide.jar"を検索し、出てきたファイルをmozilla、Netscape6にドラッグ&ドロップすることで、ブラウザに表示されると思います。
私のWindows98では、以上の作業でCD版の先行者ゲームが1、2共に起動できました。
さて、UNIXライクなOSでは、CD版の先行者ゲームを遊ぼうとすると1、2共に起動途中でファイルが読み込めずに立往生してしまいます。
それらのファイルには、「ファイル名にアルファベットの大文字が含まれている」という共通点があります。
ところが、CD-ROMではファイル名のアルファベットが全て小文字になってしまっています。そのため、「ファイル名の大文字、小文字を区別する」UNIXの流儀によって、「ファイルが見つからない」→「立往生」となってしまうのです。
この状態を解決する方法は2通りありますが、共にファイルの書換えなどの作業を行ないますので、インストールは必須となります。
CD-ROMのマウントポイントを"/cdrom"とすると、書き換えが必要なファイルは以下のようになります。
| 元のファイル名 | 書き換え後のファイル名 |
|---|---|
| /cdrom/robot/t5_cannon2.gif | T5_cannon2.gif |
| /cdrom/robot/me2.au | ME2.au |
| /cdrom/robot/olb.au | OLB.au |
| /cdrom/robot/t5_core2.gif | T5_core2.gif |
| /cdrom/robot/me5_.au | ME5_.au |
| /cdrom/robot/me7_2.au | ME7_2.au |
| /cdrom/robot/g_bsh.au | G_BSH.au |
| /cdrom/robot/pressenter.gif | pressEnter.gif |
| /cdrom/robot/land_ok.au | LAND_OK.au |
| /cdrom/robot/t5_body2.gif | T5_body2.gif |
| /cdrom/robot/lostfocus.gif | lostFocus.gif |
| 元のファイル名 | 書き換え後のファイル名 |
|---|---|
| /cdrom/robot2/snd/g_bsh.au | G_BSH.au |
| /cdrom/robot2/snd/land_ok.au | LAND_OK.au |
| /cdrom/robot2/s1message.gif | S1message.gif |
| /cdrom/robot2/s2message.gif | S2message.gif |
| /cdrom/robot2/s3message.gif | S3message.gif |
| /cdrom/robot2/s4message.gif | S4message.gif |
| /cdrom/robot2/s5message.gif | S5message.gif |
| /cdrom/robot2/pressenter.gif | pressEnter.gif |
| /cdrom/robot2/s6message.gif | S6message.gif |
| /cdrom/robot2/lostfocus.gif | lostFocus.gif |
先行者2のバージョン108bからは、プログラムから呼び出すファイル名のアルファベットを全て小文字にすることで、この問題を解決してあります。
そのため、シルチョフ兄弟社様のページから最新の差分をダウンロードすることで、上記の作業は不要になります。
ただし、先行者1はすでにメンテナンスが行われていませんので、この方法を用いることができません。オンライン版で遊ぶか、CDに収録されているものを上記の方法を用いて、遊ぶことになります。
さて、「javaをあまり触ったことが無い」私が何故上記.java.policyファイルの内容を記述できたのかについてなのですが…簡単な話、ツールがあるんです。そのツールは「policytool」(Windowsではpolicytool.exe)という名前です。
このツール、上記の.java.policyファイルを起動時に読み込もうとします。もし失敗した場合には読み込もうとしたファイル名が表示されますので、.java.policyファイルを作成したのにゲームの読み込みに失敗する場合には、.java.policyファイルを表示されているファイル名にリネームしてみて下さい。
まぁ、ツールとは言っても、メッセージが全て英語だったりとあまり初心者向けではないかもしれませんがね…(苦笑)。
とりあえず、簡単な使い方を紹介しておきます。(以下やっぱり自信がないので口調が怪しくなります(汗;))



policytoolの使い方は以上です。
多くの方々による先行者フィーバーが無ければ私がこの文章を書くこともなかったでしょう。
先行者の存在を教えてくださった侍魂の健様、中華キャノン発射!のGIFアニメを作成された悠様、「日本製『先行者』開発プロジェクト」のシルチョフ兄弟社様、私を最初のT-5まで導いてくださった、攻略サイトの管理人の皆様(いまだT-5倒せません(泣))、果敢にチャレンジを続けている中華陸軍機甲部隊の皆様、そして、たくさんの先行者を愛する方々に感謝いたします。
以上、つたない文章でしたが最後までお付き合い頂きましてありがとうございました。
では…。
Last
modified: Mon Jul 30 11:33:44 JST 2001