TADS Author's Manual 2.0中にあるサンプルコードをコピー&ペーストを使ってソースファイルにすると、#include命令の前に空白が入ってしまうので、これを自分で除去する必要が出てくる。「#」は行の最初の文字でなければならない。
この注意はマニュアルのWeb公開バージョン(2001.1.10の時点で2.5.1)の次のページに書かれているが、このページは一括ダウンロードバージョンには含まれていなかった。
2001.12.23(土)の実験に使ったコードを、インクルードするファイル名を標準のものに戻してからtoru.tという名前で保存し、オーサーズキット2.5.7のワークベンチでコンパイル後、HTML TADSインタプリタ2.5.7で読みこんだ。すると起こるものと思っていた文字化けが見られなかった。ブラービがザラーコにならない。どうしてだろう。判明している原因から考えて文面や文章量を変えることにより文字化けが発生するようになるとは思えない。2.5.5→2.5.7の間にテキストの扱いが変わったのだろうか。とにかくこれなら「\-」プレフィクスを使用するまでもない。
ワークベンチのソース表示ウインドウ内で2バイト文字が化けるのは相変わらずだった。
パーサーの応答文の日本語化の話の続き。adv.t内のすべての関数について12.11に書いたような置き換えをやることは面倒なので、adescやthedescそのものの定義を書き変えてしまう方が効率が良い。
先日、TADSマニュアルの十章にようやく目を通した後、「ローマ字化した日本語コマンド」の定義及びその使用を実験してみた:
11月18日にTADS3になって初めて仮想マシンが導入されると書いたが、これは誤りだ。仮想マシンをすでに採用しているからこそ1ゲームソースがマルチプラットフォームに対応できているのだ。
2001.5.18-19の続き。ある物の表面に置かれている物の説明に冠詞「a」が付かないようにするための方法はやはりadv.tの中に見出せそうだ。コンテナの中にある物を列挙する概論的ルーチンはlistcontgenという関数であるが、showcontcont内に使われていたlistcontもまたこの一般的ルーチンを呼び出す形になっていた。今日、ようやくWindows用の製作者用キットをAptivaにインストールした後、adv.t内を視野を広げて眺めた結果わかった。
下のようにlistcontの中身はlistcontgenそのものであった。
listcont: function(obj)
{
/* use the general-purpose contents lister to show a "wide" listing */
listcontgen(obj, 0, 0);
}
それではlistcontgen内はどうなっているのかというと、リストの様々な状態を想定していくつかのサブルーチンを集合させている。
その中で今回の問題に関係するのが以下の部分である。オブジェクトが一つしかないときは現行オブジェクトの「adesc」を表示するようになっている。これを「sdesc」に変えれば「a 金色のどくろ」からaが取れるはずである。
{ /* there's only one object - show the singular description */
cur.adesc;
}
先ほど初めてWindowsでコンパイルした結果、上の推論が正しいことを確認した。(23:27)
それにしても、このコンパイラとインタプリタでは日本語の使用に若干の問題があるとは。インタプリタの方はフォント選択画面でフォント名が化けるだけだ。しかし、コンパイラ/デバッガの方はソースコードの表示に使うフォントの一覧に日本語フォントが初めから含まれていない。まあ、これもここでソースを修正するわけではないから目をつむるべきだが。
マイケル・ロバーツの公式サイトでTADS3の概要をざっと眺めた。ずいぶんたくさん改良点が並んでいたが、これはいいとすぐに思ったのが、
・パーサーの分離独立
・ユニコードの採用
だ。現在インタプリタに内蔵されているパーサーが単体で供給され、しかも全面的カスタマイズ機能を備えるらしい。この機能とユニコードへの移行により日本語導入の可能性がどれだけ出てくるのだろうか。それから、TADSの文法はJAVAやC++の利点を取り入れて拡張されるらしいが大部分はTADS2と「much in common」だというから一安心した。根本的な問題としては仮想マシンの導入が一番大きいだろう。これは、すでに完成しているらしいがライブラリはこれからだそうだ。。各プラットフォーム用のシステムが出そうろうのはまだまだ先らしい。
先月からADRIFTに手を出してしまっている。少しうしろめたい気持ちがあるが、ADRIFTゲーム「The Cell」を遊んでいるうちに「ブラビ伝説」の基本設定のアイデアがようやく浮かんできたから収穫はあった。これをもって単なる浮気ではないと言い切れる。
「ブラビ伝説」はADRIFTでさっさと形にしてしまって、後でWindows以外のプラットフォームのためにTADS化するという計画が有力ではないかという予感がある。
今まで当然のようにプレーヤーキャラクタ=豹悟郎氏と考えていたが、ブラビの正体を未だに知らないこともあり、謎解きの重心がブラビの方に寄ってしまうとプロット作りで苦労する、そのことを漠然と意識して今まで悶々としていた。ブラビの正体が作者もよく知らない曖昧模糊としたもののままでも製作進行可能な設定として、プレーヤー=任意のあなた、にすることにした、正確に言うと豹悟郎の従姉妹にする可能性もあるけれど(とにかく「架空の従姉妹」または「架空の着ぐるみクラブの女」は出す。『Windows』は検討中)、確実なのは第一作におけるプレーヤーの最大の目的はブラビの姑息な計略により誘拐された豹悟郎氏の救出だということだ(笑)。
先日、TADS author's manualが2.5.5になっているのを知った。内容の信頼性の検証が完全に終わっていないという断わり書きもなくなっていた。こうなると翻訳対象を切り替えざるを得ない。
個人的には第4章の翻訳を終えたことによって、後はソースコードが公開されているゲームの動作とコードそして言語レファレンスを相互参照しながら実際にプログラミングに挑戦して行ける段階に来た。つまり、マニュアルの翻訳はもうつまみ食いでよい。Sitting on the 台座[daiza] is a 金色のどくろ[dokuro].のように非常に不自然すぎるメッセージが出てきた。台座[daiza]、金色のどくろ[dokuro]はともに私が日本語化した部分である。[ ]内のローマ字化した日本語はプレーヤーに対し、それが操作対象となる物品であることとコマンドの一部として入力する際の綴りを示すために付けようと企画しているものである。
the 台座[daiza]の上にあるのはa 金色のどくろ[dokuro]だ。のようになった。しかしthe 台座というのもおかしいので、showcontcont関数中の
obj.thedesc;"の上にあるのは";listcont(obj); "だ。";の中にあるobj.thedescをobj.sdesc
台座[daiza]の上にあるのはa 金色のどくろ[dokuro]だ。になった。