目次に戻る  前の章「7.操作方法」に戻る  次の章「9.著作権、転載など」に進む

8.あとがき

 第0章で述べた通り、このゲームは91年に雑誌掲載されたPocketComputer用ゲームの移植版です。
 狭い白黒液晶、遅いCPU、乏しいメモリをやりくりするPocketComputerの世界では画面の美しさなど二の次。アイデア勝負の世界です。当時PocketComputer用に作ったゲームソフトは他にもありましたが、Windows移植処女作としてあえてこのゲームを選んだのは美麗グラフィック全盛の世界でアイデア勝負が通用するか興味があったためです。
 毀誉褒貶いずれでも結構ですので、感想などを送って頂けると助かります。宛先はこちらへ。

soukensi@dp.u-netsurf.ne.jp
 それと、移植に際してマルチエンディングに対応しました。PocketComputer版では画面とメモリの制約がきついため、「勝利と敗北のエンディング2種類・しかも全カタカナで40文字×4行×2画面」に収めなければなりませんでしたが、今回は思う存分書くことが出来ました。こちらの感想なども歓迎いたします。

移植に際しての苦労話

 ふえぇ〜。それにしても、JavaScriptがこんなにしんどいものだとは思いませんでした。いや、文法がどうのというのではなく、ブラウザ依存をなくすための苦労が。
 私がJavaScriptでプログラムを作るのはこれが初めてなのですが、文法的にはC言語とそっくりだし、ゲームの原案は元々7年前にBASICで自作したものなので、移植そのものは一日で済んだのです。そのときは古いJavaScript解説書を参考にしたので、当然対応ブラウザはNetscapeNavigator(以後NN)のver2.0以降でした(開発に使ったのはver4.05)。
 しかしせっかくJavaScriptを使ったからには、マルチプラットフォームを目指さなくては意味がありません。
 幸い(?)にも使った解説書が古かったために各機種用ブラウザの余計な拡張の悪影響を受けていなかったので、NNのWindows3.1版、Macintosh版、X-Window版についてはおそらく問題ないでしょう(確認してないけど)。
 問題はブラウザ市場を二分しているもう一方の雄、InternetExplorer(以後IE)の存在です。これで動かせなければ対象ユーザの半分を失うに等しいと言えます。ところがMicrosoftはJavaScriptに素直に準拠するのがよっぽど癪だったらしく、JavaScriptに勝手な拡張を施して「JScript」と改称したスクリプトをIEに内蔵させています。いや拡張ならば拡張部分を使わないように心がければ済むはずなのですが、基本部分で互換性の取れない個所があるのは困りものです。

 IE2.0xはJScriptにすら対応していないので、動作確認の対象となるのはIE3.0x以降です。その最終版であるIE3.02で本ゲームを実行する際には、以下の個所が問題になりました。

  1. switch(){case:〜} が使えない。
  2. do{〜}while() や repeat{〜}until() が使えない。
  3. onLoad,onClickイベントにonClick="JavaScript:function()"と書くとエラーになり、単にonClick="function()"と書かなければならない。
  4. 番号付きリスト<ol><li>を使うとき、<ol>のオプションに<ol type="A" start="A">と指定すると、A,B,C...ではなく0,A,B...のように見出しがずれてしまう。startオプションを外すと直る。
  5. Textareaフォームに対してdefaultValueプロパティが使えない。
  6. Textareaフォーム内で改行文字\nが使えない。
  7. 新規ウィンドウを開き、そこに既存文書を読み込まずにスクリプトから文字列を書き込むと、画面の文字コードが勝手にUnicodeになり何も表示されなくなることが頻繁に起こる。また無事に表示されても、スクリプトで書き込んだJavaScriptコードを実行することが出来ない。
  8. 文字列処理関数がUnicode対応なので、strings.lengthやstrings.charAt()の返り値がNNと異なる(NNでは全角1文字は半角2文字分の扱いだが、IEでは全角半角ともに1文字として扱われる)。
  9. escape(),unescape()で全角文字を扱うとUnicode変換される(NNでは、現在表示している文字コードに準拠する)。

 8と9は「仕様だ」と言い張ることも出来るでしょうが、1〜7は完全にバグですよね? 現にIEのver4.01では1〜6は修正されていましたから。

 そうは言っても、「対応IEはver4.0以上」と突き放すわけにはいきません。IE4.0はシステムを不安定にするいわくつきのソフトウェアで、私も痛い目に逢っているからです(Windows95のOSR2.1以降だと大丈夫らしいけれども)。現に私の周囲でも未だにIE3.0xを愛用している人は沢山います。
 そこで、上記の不具合を回避できるようにプログラムを修正する必要が生じました。上記の1〜9はその過程で発見したもので、現象から原因を特定するのにゲーム製作日数をはるかに超える時間がかかってしまいました。唯一吸収できなかったのは上記6番です。
 したがって、InternetExplorerVer3.02では「会談履歴」の文字が改行されず繋がったままで表示されるため読みづらくなるという不具合が発生します。ゲームがプレイできないわけではありませんので堪忍してください。

世の中に マイクロソフトが なかりせば 人の心は のどけからまし

 いつか耳にした川柳を真似てこう一句読みたい心境になりましたが、世の中の大半の方は逆の感想を持っているんだろうなぁ。


参考文献

JavaScriptハンドブック(Danny Goodman著、オーム社開発局)
JavaScriptに関するバイブル書。文章は冗長ですがわかりやすく書かれています。ただ元々英語版だったのを和訳したものなので、日本語フォントに関する処理がすっぽり抜けており、エンディングの暗号化でえらい苦労をしました。
正しいHTML4.0リファレンス&作法(ビレッジセンター出版局)
HTMLのバイブル書。せっかくJavaScriptで機種依存をなくしたのにWin95以外の機種で動作確認する術を持たない私にとって、これだけはっきりと「これは使っちゃだめ、これはもう短命」と言い切ってくれる本は貴重でした。また<!DOCTYPE>宣言の重要性や<LINK>の意味などもこの本が無ければ気づかなかったことでしょう。
WZver2.0マクロマニュアル(見米快行著、ビレッジセンター出版局)
ゲームをクリアする前にエンディングを読まれては興ざめなので、エンディングの文書は暗号化してあります。ただ暗号解読は当然JavaScriptでやるとしても、平文の暗号化をJavaScriptでやるのは面倒です(だってファイル書き出し能力がないんですから!)。そこで役に立ったのがWZエディタのマクロで、そのときの参考書がこれ。これなしでは一歩も進まなかったと言っても過言でないでしょう。
RPGキャンペーンガイド(山北篤と怪兵隊著、新紀元社)
「選帝候と言っても侯爵とは限らない?」という素朴な疑問に答えてくれる良書。世界観構築に役立てました。とは言ってもPocketComputer版作成時の話ですが。

目次に戻る  前の章「7.操作方法」に戻る  次の章「9.著作権、転載など」に進む